<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9634563</id><updated>2012-01-28T15:21:28.438+08:00</updated><category term='power management'/><category term='&quot;gpl violation&quot;'/><category term='linux ssd &quot;file system&quot; ext4 &quot;partition table&quot;'/><category term='pvz'/><category term='finance'/><category term='rsync'/><category term='ass'/><category term='tm_smapi'/><category term='fontconfig'/><category term='hfs'/><category term='service'/><category term='phone'/><category term='chrome'/><category term='openstreetmap'/><category term='data migration'/><category term='rhel'/><category term='firefox'/><category term='ati'/><category term='hostname'/><category term='utf8'/><category term='symbian'/><category term='grep'/><category term='busybox'/><category term='performance'/><category term='laptop'/><category term='vcd'/><category term='gantt'/><category term='&quot;gimp 2.6.5&quot;'/><category term='centos'/><category term='meego'/><category term='verification'/><category term='rip'/><category term='slow'/><category term='vmware'/><category term='osc'/><category term='security'/><category term='file name'/><category term='URL'/><category term='apt'/><category term='utf-8'/><category term='game'/><category term='sendmail'/><category term='obs'/><category term='compile'/><category term='pdf'/><category term='fedora core 6'/><category term='thinkpad'/><category term='intel'/><category term='meego xdg autostart'/><category term='mac'/><category term='mount option'/><category term='china'/><category term='ubuntu'/><category term='amarok'/><category term='nvidia'/><category term='pdftk'/><category term='svn'/><category term='subversion'/><category term='bugzilla'/><category term='google'/><category term='networkmanager'/><category term='apple'/><category term='file modification time'/><category term='red hat'/><category term='cdrdao'/><category term='fetchmail'/><category term='fedora'/><category term='meego ipv6 howto'/><category term='wine'/><category term='censorship'/><category term='mplayer'/><category term='gnu vcdimager'/><category term='sync'/><category term='rpm'/><category term='earthquake'/><category term='subpixel'/><category term='gnome'/><category term='3g'/><category term='gpl'/><category term='vsftpd'/><category term='bank'/><category term='fglrx'/><category term='nokia'/><category term='vcdxrip'/><category term='charity'/><category term='browser'/><category term='beijing'/><category term='debian'/><category term='domain'/><category term='gimp'/><category term='moin'/><category term='subtitle'/><category term='utf-16'/><category term='update'/><category term='antialias'/><category term='&quot;government website&quot;'/><category term='ubuntu linux'/><category term='driver'/><category term='linux'/><category term='crash'/><category term='bom'/><category term='plants vs zombies'/><category term='usb'/><category term='taskjuggler'/><category term='howto'/><category term='andrew morton'/><category term='donation'/><category term='font'/><category term='kde'/><category term='xorg'/><category term='wikipedia'/><category term='exim'/><category term='free software'/><category term='totem'/><category term='hard drive'/><category term='kernel'/><category term='chromium'/><category term='project management'/><category term='read-cd'/><category term='gmail'/><category term='ftp'/><title type='text'>Yan Li's Words</title><subtitle type='html'>My words on free/open source software and Mac</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>52</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9634563.post-4811118895749679573</id><published>2011-10-10T12:40:00.002+08:00</published><updated>2011-10-10T12:46:43.254+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='verification'/><category scheme='http://www.blogger.com/atom/ns#' term='utf8'/><category scheme='http://www.blogger.com/atom/ns#' term='utf-8'/><category scheme='http://www.blogger.com/atom/ns#' term='hfs'/><category scheme='http://www.blogger.com/atom/ns#' term='data migration'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='file modification time'/><category scheme='http://www.blogger.com/atom/ns#' term='rsync'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><category scheme='http://www.blogger.com/atom/ns#' term='file name'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>Using rsync to migrate data between Linux and Apple Mac OS X</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I got a new MacBook Air running Mac OS X (10.7.1) "Lion", and I managed to migrate my archive data (around 1.3TB) from an old Linux laptop running Debian Testing "Wheezy." The process was not smooth and I hit several blocks. Here I document several points that you need to pay attention to when migrating data across operating systems:&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Zeroth&lt;/h2&gt;Use the latest rsync (3.0.8 from MacPorts was used here). The old version of rsync is buggy on Mac. The version of rsync on Linux doesn't matter much because rsync on Linux has been quite stable since long ago.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;First&lt;/h2&gt;Disable "Ignore ownership on this volume" (you can use Finder or from command line). If not rsync won't be able to set file permission correctly. I think if you don't instruct rsync to preserve permission and mode then you might not need to do this but I'm not very sure.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Second&lt;/h2&gt;Disable antivirus software like McAfee because they &lt;a href="http://help.bombich.com/discussions/problems/651-subsequent-backups-both-full-and-incremental-slow"&gt;interfere with&lt;/a&gt; rsync's time preservation.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Third&lt;/h2&gt;Use rsync's "&lt;tt&gt;--iconv=UTF8-MAC,UTF-8&lt;/tt&gt;" option (only available after rsync 3.0), because Mac's HFS+ &lt;a href="http://rsync.samba.org/FAQ.html#2"&gt;decompose&lt;/a&gt; UTF-8 before storing it so the filename would be different from that of Linux if no conversion is done right.&lt;br /&gt;&lt;br /&gt;If you saw "&lt;tt&gt;iconv_open("UTF-8", "UTF8") failed&lt;/tt&gt;", try swapping the parameters of iconv.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Fourth&lt;/h2&gt;This is not directly related to rsync nor Mac, but a general rule for handling archive data: use another piece of software to do the verification. Your rsync might be buggy, the OS might be buggy, the disk or USB cable might be kaput, you might have used the wrong options or settings. Therefore you should always use another piece of software other than rsync to verify the data before and after the migration. I used AIDE to do file checksum and time verification.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-4811118895749679573?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/4811118895749679573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=4811118895749679573' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/4811118895749679573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/4811118895749679573'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2011/10/using-rsync-to-migrate-data-between.html' title='Using rsync to migrate data between Linux and Apple Mac OS X'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-3851319623708248719</id><published>2011-02-17T10:34:00.004+08:00</published><updated>2011-02-17T21:53:39.558+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='meego'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='osc'/><category scheme='http://www.blogger.com/atom/ns#' term='obs'/><title type='text'>openSUSE Build Service (OBS): Break the Link Between a Branched Package and Its Source</title><content type='html'>We are using openSUSE Build Service (OBS) for the development of MeeGo. I have an old package, which was branched from a Trunk package long ago. But every time the source pakcage in Trunk is updated my package would be broken because the changes between them are so large that it's become meaningless to keep the link between them any more. So I think I should just remove the link between them.&lt;br /&gt;&lt;br /&gt;The simplest way may be just removing my package and start a new package from scratch, however, this action not only removes the package history but will also reset the cumulative release version number, which is unacceptable since that would make it impossible for client machines to follow updates to this package.&lt;br /&gt;&lt;br /&gt;I have carried out a long search but failed to find a hint to this issue, and after some trail-and-error I think I have found a way:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Check out the project's unexpanded files by using "&lt;tt&gt;osc co -u PRJ/PKG&lt;/tt&gt;"&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Remove the "&lt;tt&gt;_link&lt;/tt&gt;" file by running "&lt;tt&gt;osc rm _link&lt;/tt&gt;"&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Copy in the latest package files since the link is now broken&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Check-in the changes&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;I've done a test and the steps above worked.  &lt;b&gt;However&lt;/b&gt;, it seems that by those steps the release version number will also be reset.&lt;br /&gt;&lt;br /&gt;Update: darix from freenode/#opensuse-buildservice said 'osc in git has "osc detachbranch" exactly for that.'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-3851319623708248719?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/3851319623708248719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=3851319623708248719' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/3851319623708248719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/3851319623708248719'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2011/02/opensuse-build-service-obs-break-link.html' title='openSUSE Build Service (OBS): Break the Link Between a Branched Package and Its Source'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-6591715226418907248</id><published>2010-12-26T08:47:00.008+08:00</published><updated>2011-01-09T18:39:50.776+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux ssd &quot;file system&quot; ext4 &quot;partition table&quot;'/><title type='text'>Easy way to align Linux partitions for SSD and myths debunked</title><content type='html'>Recently I got a laptop from my employer with an Intel X25-M SSD drive in it. I have spent some time trying to figure out the best and easiest way to install Linux onto it while retaining the Windows 7 (so I have to use MBR instead of GPT). There are numerous discussions you can find on the net, some of them are quite complex and some are simply misleading (if not wrong). In fact this task is quite easy with modern Linux and here's a documentation of what I've done. This blog is not meant to be a full discussion on this topic, but only intended as a cheat sheet for those experienced Linux users (if you want a more detailed and correct discussion on this topic, I recommend Ted Ts'o's blog: &lt;a href="http://thunk.org/tytso/blog/2009/02/20/aligning-filesystems-to-an-ssds-erase-block-size/"&gt;Aligning filesystems to an SSD’s erase block size&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;For those impatient readers, here's an overview: the disk geometry (or C-H-S value) you see from partition programs as well as the warning about partitions are not aligned to cylinder boundary don't matter at all so there's no point to spend time on tuning loose knobs. New &lt;a href="http://gparted.sourceforge.net/"&gt;GParted&lt;/a&gt; (I used 0.7.1 from &lt;a href="http://www.sysresccd.org/"&gt;SysRescueCD&lt;/a&gt;, not to be confused with "GNU parted") is a very easy to use tool and it now defaults to create partitions aligned on 1 MiB (I heard that Ubuntu 10.10 and later can do partition alignment automatically too but I haven't tried that).&lt;br /&gt;&lt;br /&gt;Here's the detail:&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The myth: Does the C-H-S value still matter?&lt;/h3&gt;&lt;br /&gt;&lt;a href="http://forum.corsair.com/v2/showthread.php?t=83608"&gt;A&lt;/a&gt; &lt;a href="https://wiki.archlinux.org/index.php/SSD#Using_MBT_-_DEPRECIATED_METHOD_-_Using_GPT_is_Recommended"&gt;lot&lt;/a&gt; of discussions were about checking the disk geometry after partitioning. However, in fact no modern operating system pays attention to those values any more (see the &lt;a href="http://thunk.org/tytso/blog/2009/02/20/aligning-filesystems-to-an-ssds-erase-block-size/#comment-1781"&gt;comment&lt;/a&gt; by Ted Ts'o). And those "&lt;code&gt;-H xx -S xx&lt;/code&gt;" options passed to fdisk are only meant to make that fdisk program happy so it can create partitions aligned with cylinder boundaries. Although the C-H-S values are stored in MBR, they are not used by the Linux kernel who runs the whole system. Instead of paying attention to choosing or checking those C-H-S values, you should only need to make sure that the start and end sectors of partitions are multiples of the size of your erase block. Of course you can use any good partition programs to do this.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;So you don't have to use that fdisk program&lt;/h3&gt;&lt;br /&gt;and you can simply chose any program that you are familiar with. For me I'm comfortable with sfdisk and GParted. This time I tried latest GParted and was very happy to see it had supported partition alignment on 1 MiB boundary. So my work is done in one minute without using a calculator. After that I also carefully checked the partition table with "&lt;code&gt;sfdisk -uM&lt;/code&gt;" and was sure that those partitions were aligned on MiB boundaries. The extended partition was not aligned but I thought that didn't matter as long as all logical partitions in it were aligned correctly.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;A few more tips:&lt;/h3&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;If you want  to have TRIM/DISCARD support you can use a 2.6.33+ kernel with Ext4 file-system, mounted with &lt;code&gt;-o discard&lt;/code&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;When making the Ext4 file-system, make sure you use the &lt;code&gt;stripe-width&lt;/code&gt; option and let it align with erase block boundary too (see Ted's post above).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Don't use LVM or dm-crypt since they don't support TRIM/DISCARD command yet.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;compilebench test result:&lt;/h3&gt;&lt;br /&gt;Intel's X25-M is very smart that even if you don't align the access correctly the drive will do magic under the hood so the initial benchmark data doesn't differ too much, however, the performance will degrade much more quickly as the internal mapping tables getting more and more complex due to unaligned writes. Here I post the file-system benchmark result when it's still new. I'll try to do benchmark again after several months to see if there's any performance degrade (although my usage is not heavy).&lt;br /&gt;&lt;br /&gt;I used &lt;a href="http://oss.oracle.com/~mason/compilebench/"&gt;compilebench&lt;/a&gt; v0.6 because I think it mimics daily desktop usage very well.&lt;br /&gt;&lt;br /&gt;Machine spec:&lt;br /&gt;System: Debian Squeeze (testing)&lt;br /&gt;Kernel: 2.6.37-rc5-amd64 from Debian experimental repo&lt;br /&gt;Test command: &lt;code&gt;sudo ./compilebench -D t -i 10 --makej&lt;/code&gt; (the same option used by Phoronix Test Suite)&lt;br /&gt;File system: Ext4, mount option: &lt;code&gt;rw,noatime,discard&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;compilebench Initial Create test result: 105.24 MB/s (on 2010-12-27).&lt;br /&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-6591715226418907248?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/6591715226418907248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=6591715226418907248' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/6591715226418907248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/6591715226418907248'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2010/12/easy-way-to-align-linux-partitions-for.html' title='Easy way to align Linux partitions for SSD and myths debunked'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-3057628403113390756</id><published>2010-12-21T10:47:00.003+08:00</published><updated>2010-12-21T11:13:10.061+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='meego xdg autostart'/><title type='text'>MeeGo: Auto-Start an Application on Session Start</title><content type='html'>For modern Linux desktop, it's a common way to auto-start an application in a user-session by placing a ".desktop" file into &lt;code&gt;/etc/xdg/autostart&lt;/code&gt;. But if you are writing or porting an application to MeeGo and found that the application is not auto-started after you put in a seemingly correct .desktop, please check this:&lt;br /&gt;&lt;br /&gt;If there's an "&lt;code&gt;OnlyShowIn=&lt;/code&gt;" item, it must contain the string &lt;code&gt;X-MOBLIN-NB&lt;/code&gt;. For example:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;OnlyShowIn=GNOME;X-MEEGO-NB&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Another caveat is that MeeGo's uxlaunch doesn't honor &lt;code&gt;AutostartCondition&lt;/code&gt; key yet, for the sake of simplicity and fast-boot.&lt;br /&gt;&lt;br /&gt;For code under the hood, check &lt;a href="http://meego.gitorious.org/meego-os-base/uxlaunch/blobs/master/desktop.c"&gt;MeeGo's uxlaunch/desktop.c&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-3057628403113390756?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/3057628403113390756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=3057628403113390756' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/3057628403113390756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/3057628403113390756'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2010/12/meego-auto-start-application-on-session.html' title='MeeGo: Auto-Start an Application on Session Start'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-3933476133068181004</id><published>2010-12-18T20:20:00.003+08:00</published><updated>2010-12-18T20:31:02.004+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu linux'/><title type='text'>Very hard to make bootable USB drive from Ubuntu 10.10's CD Image</title><content type='html'>I was spoiled by MeeGo's super convenient USB live image so I was very surprised when I found that it was very hard to make a bootable USB drive from Ubuntu 10.10's CD-ROM image for my wife.&lt;br /&gt;&lt;br /&gt;On Linux, Ubuntu only officially supports making bootable USB drive from its CD-ROM image by using "ubuntu-usb-creator", which is not available in any Linux installations I'm using now (MeeGo, Debian, CentOS). Ubuntu's official help document &lt;a href="https://help.ubuntu.com/10.10/installation-guide/i386/boot-usb-files.html"&gt;mentions&lt;/a&gt; one alternative way -- to download a small image and combine it with the iso file -- doesn't work, and community posts pointed out that that methods only worked with "alternative iso" (not desktop iso).&lt;br /&gt;&lt;br /&gt;Finally I found a way (and the only way) to make a usable USB drive for installation is from &lt;a href="https://wiki.ubuntu.com/LiveUsbPendrivePersistent#Method 3: Copying the ISO CD image to the USB drive"&gt;this post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So what? I think Canonical really should release official USB images since most netbooks shipped today have no CD-ROM drive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-3933476133068181004?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/3933476133068181004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=3933476133068181004' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/3933476133068181004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/3933476133068181004'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2010/12/very-hard-to-make-bootable-usb-drive.html' title='Very hard to make bootable USB drive from Ubuntu 10.10&apos;s CD Image'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-2940264319513903986</id><published>2010-07-15T10:30:00.003+08:00</published><updated>2010-07-15T10:33:01.385+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='service'/><category scheme='http://www.blogger.com/atom/ns#' term='domain'/><category scheme='http://www.blogger.com/atom/ns#' term='sync'/><category scheme='http://www.blogger.com/atom/ns#' term='hostname'/><category scheme='http://www.blogger.com/atom/ns#' term='chromium'/><category scheme='http://www.blogger.com/atom/ns#' term='chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='URL'/><title type='text'>Google Chrome (Chromium) Sync Server Address</title><content type='html'>If you want to know the host name and address of the sync server Google Chrome (or Chromium) uses, see here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://src.chromium.org/svn/trunk/src/chrome/browser/sync/profile_sync_service.cc"&gt;http://src.chromium.org/svn/trunk/src/chrome/browser/sync/profile_sync_service.cc&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For now, the sync service's URL is&lt;br /&gt;&lt;br /&gt;https://clients4.google.com/chrome-sync&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-2940264319513903986?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/2940264319513903986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=2940264319513903986' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/2940264319513903986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/2940264319513903986'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2010/07/google-chrome-chromium-sync-server.html' title='Google Chrome (Chromium) Sync Server Address'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-6523890855083283539</id><published>2010-06-27T15:33:00.004+08:00</published><updated>2010-06-27T19:21:34.533+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='plants vs zombies'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='wine'/><category scheme='http://www.blogger.com/atom/ns#' term='pvz'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>HOWTO: Run Plants vs Zombies™ in Linux under Wine (includes how to Register!)</title><content type='html'>I have to admit that I found PopCap's &lt;a href="http://www.popcap.com/games/pvz"&gt;Plants vs Zombies™&lt;/a&gt; (referred to as PvZ below) interesting. It runs on Windows, Mac and iPhone but not on any Linux yet.&lt;br /&gt;&lt;br /&gt;You can download the trial version from the official site above, and it runs amazingly well on a recent &lt;a href="http://www.winehq.org/"&gt;Wine&lt;/a&gt;, without any special configuration. Well done, Winehq!&lt;br /&gt;&lt;br /&gt;Now comes the problem, if you decide to buy it after 60 minutes play, the registration process is a bit hard with Wine. The reason is that PvZ requires an Internet Explorer or Firefox to finish the registration process. Obviously it has to gather some local hardware/system information and upload it to their activation server so that they can know how many machines you are running PvZ on, therefore you won't to able to give away free copies of the game to all your friends. I think this whole thing is OK, though instead of writing codes in PvZ to let it communicate with their server, instead, sadly, they choose to use ActiveX running in IE for this.&lt;br /&gt;&lt;br /&gt;Some early posts reported that the registration process can be finished if you install an IE into the same Wine directory. Running IE on Wine is not impossible but hard, especially when IE4Linux project is no longer maintained.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;The HOWTO&lt;/h2&gt;&lt;br /&gt;Now I have found that you can also finished the registration process using not IE but Firefox instead. Thanks for their being in the same free software camp, Firefox runs very well on Wine. Just &lt;a href="http://getfirefox.com/"&gt;grab&lt;/a&gt; a Windows copy and install it into the same Wine directory.&lt;br /&gt;&lt;br /&gt;Then run Firefox in your Wine, go to &lt;a href="http://store.popcap.com/license.php"&gt;PopCap's Registration Page&lt;/a&gt;, follow the instruction there to download and install the Firefox plugin. After that, close your Firefox (for some unknown reasons, the Firefox Wine process may still linger in the background after its window is closed, run "&lt;code&gt;ps -ef | grep -i firefox&lt;/code&gt;" and kills the linger process if need).&lt;br /&gt;&lt;br /&gt;Now starts PvZ by running its &lt;b&gt;in your winefile&lt;/b&gt;. Because the PvZ and Firefox need to be started in a same Wine instance so they collect the identical hardware/system information. Register it following the normal process. It may fail at the first attempt to start a web browser, keep clicking the "Retry" button until it shows it's waiting for the registration process to finish (it's waiting for web browser plugin to return registration key). Start a Firefox instance &lt;b&gt;from that same winefile program&lt;/b&gt;. Go to &lt;a href="http://store.popcap.com/license.php"&gt;PopCap's Registration Page&lt;/a&gt;, now if your plugin is installed successfully, it should show a web page asking for your POP Order Number, give it and the registration process should finish successfully and the PvZ program should proceed to the game.&lt;br /&gt;&lt;br /&gt;It's not rocket science, just nuisance.&lt;br /&gt;&lt;br /&gt;PvZ runs very well in Wine during my 2 days play. I can say it's perfectly running on Linux for now.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Known Problems&lt;/h2&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Sound effects may not work on some machines with some old Wine versions (try upgrade to latest Wine.)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The full-screen mode will be always "full-screen," which means that if you have a non-4:3 screen, it will be slightly torted.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The between-battle preview screen may be a bit slow sometimes, but as soon as the battle begins the speed returns to normal (not sure if it shows similar issue when running on a real Windows.)&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-6523890855083283539?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/6523890855083283539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=6523890855083283539' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/6523890855083283539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/6523890855083283539'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2010/06/howto-run-plants-vs-zombies-in-linux.html' title='HOWTO: Run Plants vs Zombies™ in Linux under Wine (includes how to Register!)'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-608049871889161744</id><published>2010-06-27T13:28:00.003+08:00</published><updated>2010-06-27T19:21:15.342+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='meego'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='wine'/><title type='text'>Running Wine on MeeGo</title><content type='html'>One of the good thing of MeeGo is that it contains a standard X server along with full 2D/3D acceleration. Having a full X stack running on your netbook enables the possibility to use a good variety of exist fun Linux programs. Such as &lt;a href="http://www.winehq.org/"&gt;Wine&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In order to play &lt;a href="http://www.popcap.com/games/pvz"&gt;Plants vs Zombies™&lt;/a&gt; and &lt;a href="http://www.popcap.com/games/free/zuma"&gt;Zuma™&lt;/a&gt;, I have installed Wine on MeeGo. Wine is not in MeeGo's official repo (yet), so I just downloaded all &lt;tt&gt;wine-*.rpm&lt;/tt&gt; from Fedora's rawhide repo and the installation was a breeze. I hope MeeGo will have it's own Wine package soon, it should be quite easy to repackage with minor tweaks from Fedora's packaged Wine. Thanks Fedora project! Anyone in the community want to volunteer?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-608049871889161744?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/608049871889161744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=608049871889161744' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/608049871889161744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/608049871889161744'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2010/06/running-wine-on-meego.html' title='Running Wine on MeeGo'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-7018985007651399599</id><published>2010-05-03T10:47:00.003+08:00</published><updated>2010-06-10T14:08:10.490+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='meego ipv6 howto'/><title type='text'>HOWTO: Disable IPv6 in MeeGo</title><content type='html'>With traditional desktop Linux distros, the IPv6 can be disabled by removing the ipv6-related modules, but not with &lt;a href="http://meego.com"&gt;MeeGo&lt;/a&gt; since it's ipv6 module is compiled in kernel (for fastboot). The following instructions apply to similar situations where you can't remove the ipv6 module (like you have no control over the kernel, or using a Xen VM, etc.)&lt;br /&gt;&lt;br /&gt;The ipv6 module will always assign an address to all NIC during startup, there's no way to disable it, we have to disable ipv6 autoconf, and remove all assigned IPv6 addresses:&lt;br /&gt;&lt;br /&gt;Create a file &lt;code&gt;/etc/sysctl.d/disable_ipv6&lt;/code&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# disable autoconf&lt;br /&gt;net.ipv6.conf.default.autoconf=0&lt;br /&gt;net.ipv6.conf.all.autoconf=0&lt;br /&gt;net.ipv6.conf.eth0.autoconf=0&lt;br /&gt;&lt;br /&gt;# block all received Router-Advertisement (RA) packets&lt;br /&gt;net.ipv6.conf.default.accept_ra = 0&lt;br /&gt;net.ipv6.conf.all.accept_ra = 0&lt;br /&gt;net.ipv6.conf.eth0.accept_ra = 0&lt;br /&gt;&lt;br /&gt;# NOTE: the *.all* above applies to newly created NICs only, &lt;br /&gt;# not to existing NICs. So you have to list all NIC's explicitly&lt;br /&gt;# here. For example, if you have a wireless card wlan0, add the &lt;br /&gt;# following lines:&lt;br /&gt;#net.ipv6.conf.wlan0.autoconf=0&lt;br /&gt;#net.ipv6.conf.wlan0.accept_ra = 0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then delete all pre-allocated ipv6 address by adding the following lines in &lt;code&gt;/etc/rc.local&lt;/code&gt;:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ifconfig lo inet6 del ::1/128&lt;br /&gt;IPV6ADD=`ifconfig eth0 | grep inet6 | awk '{print $3}'`&lt;br /&gt;ifconfig eth0 inet6 del "$IPV6ADD"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Don't forget to:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;chmod +x /etc/rc.local&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt;&lt;br /&gt;I've discovered that sshd running on MeeGo can't accept X11 forwarding requests after made above changes. You can find the following error message in /var/log/secure:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;sshd[]: error: Failed to allocate internet-domain X11 display socket.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The reason is that sshd is still trying to bind to an IPv6 address but there's no IPv6 address available. To solve this issue, we need to start sshd with "&lt;tt&gt;-4&lt;/tt&gt;" option.&lt;br /&gt;&lt;br /&gt;Create a new file For MeeGo at &lt;tt&gt;/etc/sysconfig/sshd&lt;/tt&gt;:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;OPTIONS="-4"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And restart sshd:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;service sshd restart&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="https://help.ubuntu.com/community/WebBrowsingSlowIPv6IPv4"&gt;https://help.ubuntu.com/community/WebBrowsingSlowIPv6IPv4&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://beranger.org/index.php?article=1127&amp;page=3k"&gt;http://beranger.org/index.php?article=1127&amp;page=3k&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-7018985007651399599?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/7018985007651399599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=7018985007651399599' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/7018985007651399599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/7018985007651399599'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2010/05/howto-disable-ipv6-in-meego.html' title='HOWTO: Disable IPv6 in MeeGo'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-2561591807661038842</id><published>2010-03-28T19:11:00.005+08:00</published><updated>2010-03-28T20:44:36.521+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='intel'/><category scheme='http://www.blogger.com/atom/ns#' term='meego'/><category scheme='http://www.blogger.com/atom/ns#' term='nokia'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>MeeGo is in Google Summer of Code 2010</title><content type='html'>&lt;a href="http://meego.com"&gt;MeeGo&lt;/a&gt; has joined &lt;a href="http://socghop.appspot.com/"&gt;Google Summer of Code 2010&lt;/a&gt;. If you are a student, have some free time this summer and have interests in developing operating system or applications for new small form factor devices, please consider &lt;a href="http://socghop.appspot.com/document/show/gsoc_program/google/gsoc2010/faqs"&gt;join&lt;/a&gt; us!&lt;br /&gt;&lt;br /&gt;MeeGo is the &lt;a href="http://en.wikipedia.org/wiki/MeeGo"&gt;combined Moblin and Maemo&lt;/a&gt; and is sponsored by &lt;a href="http://en.wikipedia.org/wiki/Linux_Foundation"&gt;Linux Foundation&lt;/a&gt;, Nokia and Intel. To make it simple, MeeGo is the new operating system, inspired by the rising interests and challenge in smart phone and mobile internet devices, for future Intel and Nokia ARM platforms (or more if other handset makers join).&lt;br /&gt;&lt;br /&gt;To distinguish it from other smart phone platforms such as iPhone and Android, MeeGo is proudly bearing the badge "open." It is not controlled by a single authority, but under the non-profit consortium &lt;a href="http://en.wikipedia.org/wiki/Linux_Foundation"&gt;Linux Foundation&lt;/a&gt; and welcome all parties and individuals who interests in making the best mobile platform in the world.&lt;br /&gt;&lt;br /&gt;Another thing that distinguishes MeeGo from other mobile platforms is that MeeGo runs full Linux desktop stack. It is running unmodified Linux kernel, X server, compiled by unmodified GCC, includes full GTK / GNOME and Qt libraries. So all your expertise on desktop Linux continues to thrive here.&lt;br /&gt;&lt;br /&gt;But MeeGo is not yet-another-Linux-distro. Smart minds may already spot the great challenge here. How could we build a competing platform by using just commodity GNU/Linux OS codes? The answer from us is that we are focusing on usability plus aggressive optimization. We believe the codes from those great upstream free software community is the best in the world and we can build the solid state-of-art platform based on them. What we have to do is try our best to integrate them together and focus on design a great user experience.&lt;br /&gt;&lt;br /&gt;So if you are interested, please take a look at the &lt;a href="http://wiki.maemo.org/GSoC_2010/Project_ideas"&gt;MeeGo project ideas&lt;/a&gt;. Of course we are more than happy if you can come up with you own great ideas. And try to get yourself a &lt;a href="http://socghop.appspot.com/document/show/gsoc_program/google/gsoc2010/faqs#administrivia"&gt;$5,000 stipend&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;small&gt;(all words above are my personal opinion and reflect no idea from MeeGo committee, Linux Foundation, Nokia or Intel)&lt;/small&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-2561591807661038842?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/2561591807661038842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=2561591807661038842' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/2561591807661038842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/2561591807661038842'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2010/03/meego-is-in-google-summer-of-code-2010.html' title='MeeGo is in Google Summer of Code 2010'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-2996336758559567371</id><published>2009-10-20T18:26:00.003+08:00</published><updated>2009-10-20T18:39:34.275+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fontconfig'/><title type='text'>Understanding how fontconfig scan conf files</title><content type='html'>I've been fixing fonts issues in &lt;a href="http://moblin.org"&gt;Moblin&lt;/a&gt; for some time, and I've to admit that GNOME &lt;a href="http://fontconfig.org"&gt;fontconfig&lt;/a&gt; is really hard to understand.&lt;br /&gt;&lt;br /&gt;The rules in /etc/fonts/conf.d/ are scanned in alphanumeric order. After carefully read the &lt;a href="http://fontconfig.org/fontconfig-user.html"&gt;fontconfig user's manual&lt;/a&gt;, I thought that if they were processed in alphanumeric order, the later conf should overwrite the earlier conf. WRONG! But rules scanned first take precedence over rules later. Let's see how they are applied to the Pattern.&lt;br /&gt;&lt;br /&gt;For example: if you run `&lt;tt&gt;fc-match sans&lt;/tt&gt;`, the Pattern here is &lt;tt&gt;family="sans"&lt;/tt&gt;.&lt;br /&gt;&lt;br /&gt;Let's say we've a 01-rulefile:&lt;br /&gt;&lt;pre style="color:#000000; background-color:#ffffff; font-size:10pt; font-family:'Courier New';"&gt;&lt;span style="color:#000000; font-weight:bold"&gt;&amp;lt;alias&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#000000; font-weight:bold"&gt;&amp;lt;family&amp;gt;&lt;/span&gt;sans&lt;span style="color:#000000; font-weight:bold"&gt;&amp;lt;/family&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#000000; font-weight:bold"&gt;&amp;lt;prefer&amp;gt;&amp;lt;family&amp;gt;&lt;/span&gt;DejaVu&lt;span style="color:#000000; font-weight:bold"&gt;&amp;lt;family&amp;gt;&amp;lt;/prefer&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000; font-weight:bold"&gt;&amp;lt;/alias&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;!--HTML generated by highlight 2.12, http://www.andre-simon.de/--&gt;&lt;br /&gt;&lt;br /&gt;After processing it the Pattern becomes:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;family="DejaVu", "sans"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then a 02-rulefile:&lt;br /&gt;&lt;pre style="color:#000000; background-color:#ffffff; font-size:10pt; font-family:'Courier New';"&gt;&lt;span style="color:#000000; font-weight:bold"&gt;&amp;lt;alias&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#000000; font-weight:bold"&gt;&amp;lt;family&amp;gt;&lt;/span&gt;sans&lt;span style="color:#000000; font-weight:bold"&gt;&amp;lt;/family&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#000000; font-weight:bold"&gt;&amp;lt;prefer&amp;gt;&amp;lt;family&amp;gt;&lt;/span&gt;Droid&lt;span style="color:#000000; font-weight:bold"&gt;&amp;lt;family&amp;gt;&amp;lt;/prefer&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000; font-weight:bold"&gt;&amp;lt;/alias&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;!--HTML generated by highlight 2.12, http://www.andre-simon.de/--&gt;&lt;br /&gt;&lt;br /&gt;After it the Pattern becomes:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;family="DejaVu", "Droid", "sans"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Noted that the &lt;tt&gt;"Droid"&lt;/tt&gt; from 02-rulefile is prepended to &lt;tt&gt;"sans"&lt;/tt&gt;, not&lt;br /&gt;the whole Pattern. So 01-rulefile takes precedence over 02-rulefile.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-2996336758559567371?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/2996336758559567371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=2996336758559567371' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/2996336758559567371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/2996336758559567371'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2009/10/understanding-how-fontconfig-scan-conf.html' title='Understanding how fontconfig scan conf files'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-2926054184069065768</id><published>2009-10-14T11:14:00.003+08:00</published><updated>2009-10-14T11:18:12.177+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='3g'/><category scheme='http://www.blogger.com/atom/ns#' term='networkmanager'/><title type='text'>Zero Config! Huawei EC1260 / China Telecom CDMA2000 EVDO 3G USB Dongle on Debian Sid</title><content type='html'>I bought a Huawei EC1260 USB modem to access the CDMA2000 EVDO mobile broadband provided by China Telecom. To my big surprise, the USB modem works out-of-box on my Debian Sid. Plug the USB modem and click the CDMA item in my NetworkManager and Bingo! I'm online! This is really zero config!&lt;br /&gt;&lt;br /&gt;Thank you, great developers of NetworkManager and Debian for making this great progress.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-2926054184069065768?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/2926054184069065768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=2926054184069065768' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/2926054184069065768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/2926054184069065768'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2009/10/zero-config-huawei-ec1260-china-telecom.html' title='Zero Config! Huawei EC1260 / China Telecom CDMA2000 EVDO 3G USB Dongle on Debian Sid'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-8972299046766153415</id><published>2009-03-16T11:06:00.005+08:00</published><updated>2009-03-16T11:10:56.678+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='beijing'/><category scheme='http://www.blogger.com/atom/ns#' term='&quot;government website&quot;'/><category scheme='http://www.blogger.com/atom/ns#' term='china'/><title type='text'>Beijing Tax Declaration Website Supports Firefox, Great!</title><content type='html'>I'm glad to finish my tax declaration online by using Firefox running on Linux. Every function of &lt;a href="http://gszxsb.tax861.gov.cn"&gt;Beijing Taxation Bureau's website&lt;/a&gt; works well with Firefox.&lt;br /&gt;&lt;br /&gt;Though there are spaces for them to improve, such as adding HTTPS support.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-8972299046766153415?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/8972299046766153415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=8972299046766153415' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/8972299046766153415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/8972299046766153415'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2009/03/beijing-tax-declaration-website.html' title='Beijing Tax Declaration Website Supports Firefox, Great!'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-5916753283317343883</id><published>2009-03-15T15:03:00.004+08:00</published><updated>2009-03-15T15:21:01.157+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gimp'/><category scheme='http://www.blogger.com/atom/ns#' term='centos'/><category scheme='http://www.blogger.com/atom/ns#' term='rhel'/><category scheme='http://www.blogger.com/atom/ns#' term='&quot;gimp 2.6.5&quot;'/><category scheme='http://www.blogger.com/atom/ns#' term='compile'/><title type='text'>Compiling GIMP 2.6.5 on CentOS 5</title><content type='html'>&lt;a href="http://gimp.org/release-notes/gimp-2.6.html"&gt;GIMP 2.6.5&lt;/a&gt; is the fantastic tool for photographers that live in the &lt;a href="http://en.wikipedia.org/wiki/Free_software"&gt;free world&lt;/a&gt;. But sadly it has no official RPM built for CentOS/RHEL users. I have spent 4 hours and compiled GIMP 2.6.5 on &lt;a href="http://www.centos.org/"&gt;CentOS 5&lt;/a&gt; for Tina by using the official tarball.&lt;br /&gt;&lt;br /&gt;I planned to use the GIMP SRPM from Fedora Rawhide (which was 2.6.5) but after Fedora 10 the Rawhide had moved to a new format of RPM and I have no way to install nor unpack those new SRPMs to get the code (neither on CentOS 5 or Debian Unstable). Therefore I had to fall back to use official tarball and install it to /opt. By this I lost the benefit of package management. So I have no RPM here to share with you but only a rough record of the steps:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;download, build and install babl 0.0.22&lt;/li&gt;&lt;br /&gt;&lt;li&gt;download, build and install gegl 0.0.22&lt;/li&gt;&lt;br /&gt;&lt;li&gt;install intltool RPM from Fedora 10&lt;/li&gt;&lt;br /&gt;&lt;li&gt;download gettext SRPM (gettext-0.17-8.fc10.src.rpm) from Fedora 10 and rpmbuild it (with Java disabled). the GCJ shipped with CentOS 5 couldn't compile the Java code within gettext so they had to be disabled by the patch following.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;build GIMP 2.6.5&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;The patch to disable Java of gettext:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;--- /usr/src/redhat/SPECS/gettext.spec  2008-08-29 09:07:58.000000000 +0800&lt;br /&gt;+++ gettext-for-el5.spec        2009-03-15 11:06:11.000000000 +0800&lt;br /&gt;@@ -1,5 +1,5 @@&lt;br /&gt; # libintl.jar requires gcj &gt;= 4.3 to build&lt;br /&gt;-%define buildjar 1&lt;br /&gt;+%define buildjar 0&lt;br /&gt;&lt;br /&gt; Summary: GNU libraries and utilities for producing multi-lingual messages&lt;br /&gt; Name: gettext&lt;br /&gt;@@ -86,12 +86,12 @@&lt;br /&gt; export JAR=fastjar&lt;br /&gt; %endif&lt;br /&gt; %configure --without-included-gettext --enable-nls --disable-static \&lt;br /&gt;-    --enable-shared --with-pic-=yes --disable-csharp --enable-java \&lt;br /&gt;+    --enable-shared --with-pic-=yes --disable-csharp --disable-java \&lt;br /&gt;     --disable-rpatha&lt;br /&gt; make %{?_smp_mflags} GCJFLAGS="-findirect-dispatch"&lt;br /&gt;&lt;br /&gt; # For generating gettext-tools/src/gnu.gettext.*&lt;br /&gt;-make -C gettext-tools/src gnu.gettext.DumpResource&lt;br /&gt;+#make -C gettext-tools/src gnu.gettext.DumpResource&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; %install&lt;br /&gt;@@ -215,7 +215,7 @@&lt;br /&gt; %{_infodir}/gettext*&lt;br /&gt; %{_mandir}/man1/*&lt;br /&gt; %{_libdir}/%{name}&lt;br /&gt;-%exclude %{_libdir}/%{name}/gnu.gettext.*&lt;br /&gt;+#%exclude %{_libdir}/%{name}/gnu.gettext.*&lt;br /&gt; %dir %{_datadir}/%{name}&lt;br /&gt; %{_datadir}/%{name}/archive.tar.gz&lt;br /&gt; %{_datadir}/%{name}/styles&lt;br /&gt;@@ -244,8 +244,8 @@&lt;br /&gt; %{_libdir}/preloadable_libintl.so&lt;br /&gt; %{_mandir}/man3/*&lt;br /&gt; %{_datadir}/%{name}/javaversion.class&lt;br /&gt;-%doc gettext-runtime/intl-java/javadoc*&lt;br /&gt;-%{_libdir}/%{name}/gnu.gettext.*&lt;br /&gt;+#%doc gettext-runtime/intl-java/javadoc*&lt;br /&gt;+#%{_libdir}/%{name}/gnu.gettext.*&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; %files libs&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-5916753283317343883?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/5916753283317343883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=5916753283317343883' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/5916753283317343883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/5916753283317343883'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2009/03/compiling-gimp-265-on-centos-5.html' title='Compiling GIMP 2.6.5 on CentOS 5'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-8202603142448025833</id><published>2009-02-05T13:54:00.003+08:00</published><updated>2009-02-05T14:01:47.704+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='busybox'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='gpl'/><category scheme='http://www.blogger.com/atom/ns#' term='&quot;gpl violation&quot;'/><title type='text'>Another GPL violation case from top China IT firm? Hanwang this time.</title><content type='html'>Hanwang's eBook Reader products (汉王电纸书产品系列, &lt;a href="http://www.hw99.com/product/productkind-13.htm"&gt;http://www.hw99.com/product/productkind-13.htm&lt;/a&gt;) are very popular in China market. They features an ARM processor and are running Linux with cramfs, which can be easily discovered from the update firmware the company has released. Also they are shipping BusyBox within them.&lt;br /&gt;&lt;br /&gt;By no means I can find the source code to their Linux kernel / BusyBox. So perhaps this is yet another GPL violation case from top China IT firm. Anyone bother a law suit?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-8202603142448025833?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/8202603142448025833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=8202603142448025833' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/8202603142448025833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/8202603142448025833'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2009/02/another-gpl-violation-case-from-top.html' title='Another GPL violation case from top China IT firm? Hanwang this time.'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-7102966818533922815</id><published>2009-01-03T16:40:00.007+08:00</published><updated>2009-01-05T21:55:25.749+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='usb'/><title type='text'>Safely remove an USB hard drive in Linux</title><content type='html'>I bought a new USB hard drive, Western Digital &lt;a href="http://www.wdc.com/en/products/Products.asp?DriveID=353"&gt;My Book® Essential Edition™ 1TB&lt;/a&gt;, and use it with Linux. Here I'm discussing about how to safely remove (then disconnect) it from a Linux system. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;The problem:&lt;/b&gt; according to its user manual, you should disconnect the drive safely when it is not active, but in a Linux system how to do this is not very straightforward. You may notice that after you unmount it (whether through command-line or a desktop environment), the drive is still spinning and it's LED on. If you read it's user manual carefully you'll find that the manufacturer never said it's safe to disconnect it from your system in such condition.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The quick solution to this problem:&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;  &lt;li&gt;send SYNC, then STOP command to the device, this can be done easily in Linux by &lt;a href="http://lwn.net/Articles/143397/"&gt;unbinding&lt;/a&gt; the device&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;suspend the USB port by echoing a "suspend" to the "/sys/bus/usb/devices/$DEVICE/power/level", where $DEVICE corresponding to the device of your USB device.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;To put it simple, I wrote a script to do this for you. &lt;a href="http://github.com/liyan/suspend-usb-device/raw/master/suspend-usb-device"&gt;Download&lt;/a&gt; and try it. For developers, you can get it from the &lt;a href="http://github.com/liyan/suspend-usb-device/tree"&gt;github repo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you saw an error message like this when running it:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;bash: /sys/bus/usb/devices/5-8/power/level: No such file or directory&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;that means your kernel doesn't support USB suspend. You can just disconnect your device now, it's already safer enough to unplug it.&lt;br /&gt;&lt;br /&gt;To those who is interested, discussion of technical detail following.&lt;br /&gt;&lt;br /&gt;From the hardware aspect, the drive should only be removed when the following requirements are met:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;there's no pending I/O request and software cache flushed&lt;/li&gt;&lt;br /&gt;&lt;li&gt;it's hardware cache flushed&lt;/li&gt;&lt;br /&gt;&lt;li&gt;it's driver spins down (means "not spinning")&lt;/li&gt;&lt;br /&gt;&lt;li&gt;(optional) the USB port is put into "suspend" mode&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;The user's manual read (page 6, section "Turning Off/Disconnecting the Device"): &lt;i&gt;"(for Windows systems): Right-click the Safely Remove Hardware icon in your system tray and select &lt;b&gt;Safely Remove Hardware&lt;/b&gt;. You may hear the drive power down before the Power LED &lt;b&gt;turns off&lt;/b&gt;. The drive is now shut down properly, and you may disconnect the drive safely. (for Macintosh systems) Drag the My Book icon to the Trash icon for proper dismount. You may &lt;b&gt;hear&lt;/b&gt; the drive &lt;b&gt;power down&lt;/b&gt; as the Power LED flashes. When the Power LED is &lt;b&gt;steady&lt;/b&gt;, you may press the Power button once or disconnect the drive’s power cord to turn off the drive safely."&lt;/i&gt; (there's a mistake, this device doesn't have a Power button) If you read carefully you can tell that Windows and Macintosh don't do the same things when told to remove an USB device. As the bold text as shown, in a Windows system it will be &lt;b&gt;turned off&lt;/b&gt; while in a Macintosh system you &lt;b&gt;hear&lt;/b&gt; the drive &lt;b&gt;power down&lt;/b&gt; but the Power LED would finally become &lt;b&gt;steady&lt;/b&gt; rather than off. Therefore we know that Windows does all 4 steps and Macintosh do the first 3 steps only when told to remove a USB device. (BTW, it's funny that you have to use your ear before disconnecting a device.)&lt;br /&gt;&lt;br /&gt;(This is only the case for Windows XP. For Windows Vista seems only the first 3 steps are done thus the drive remained active after you removing it from the system.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Some may argue that they always disconnect their drives directly after unmounting (step 1 only) and never experience any damage, but as an operating system developer and a serious user, I always follow the manufacturer's manual or specification whenever it make sense and possible because I know electronic devices are &lt;b&gt;fragile&lt;/b&gt;, &lt;b&gt;rigid&lt;/b&gt; and &lt;b&gt;obtuse&lt;/b&gt; if you don't use them as the way they are designed. For a well-designed and robust piece of hardware, theoretically you can disconnect the device safely when the first two steps are done. The firmware on the device would notice the USB cable was unplugged and shut down the disk drive properly. If not, the drive would be stopped sharply as if you pulled it's power when it's running and this damages the hardware gradually. As an outsider of the manufacturer, we hardly know whether it's well-designed or not so the only safe principle is to follow it's manual, means we should not disconnect the device until at least all three steps are done.&lt;br /&gt;&lt;br /&gt;At the Linux kernel part. To finish all the 4 steps, you have to unmount the device, unbind the device from the driver, then tell the USB core driver to put that device into suspend mode, as shown in the solution above. And you have to be running a kernel with CONFIG_USB_SUSPEND enabled.&lt;br /&gt;&lt;br /&gt;CONFIG_USB_SUSPEND is not enabled by default in a vanilla kernel. I'm pushing it in &lt;a href="http://lkml.org/lkml/2009/1/1/48"&gt;this discussion&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Properly removing a device from a running Linux should be done by either the HAL or desktop manager. If you can, please push the developers you know working on any DM that missing this feature to implement this function properly.&lt;br /&gt;&lt;br /&gt;Try my script, and write me if you found a problem. Welcome patches.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-7102966818533922815?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/7102966818533922815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=7102966818533922815' title='85 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/7102966818533922815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/7102966818533922815'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2009/01/safely-remove-usb-hard-drive-in-linux.html' title='Safely remove an USB hard drive in Linux'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>85</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-4943599833253601054</id><published>2009-01-01T23:46:00.001+08:00</published><updated>2009-01-01T23:47:51.143+08:00</updated><title type='text'>Google Picasa Web Album's Horrible Automatic Translations</title><content type='html'>See the comments at &lt;a href="http://picasaweb.google.com/rjmaomao/XUwsFC#5214582494506069602"&gt;http://picasaweb.google.com/rjmaomao/XUwsFC#5214582494506069602&lt;/a&gt; you'll know the latest trick from Google about web comments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-4943599833253601054?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/4943599833253601054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=4943599833253601054' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/4943599833253601054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/4943599833253601054'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2009/01/google-picasa-web-albums-horrible.html' title='Google Picasa Web Album&apos;s Horrible Automatic Translations'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-6202508469351934483</id><published>2008-12-28T13:22:00.002+08:00</published><updated>2008-12-28T13:26:07.545+08:00</updated><title type='text'>Using ext4 and 2.6.28 kernel on my new laptop</title><content type='html'>Hoolia! Now on my new laptop (Lenovo ThinkPad T61). I'm using Debian 5.0 (Lenny) with self-built shinning new 2.6.28 kernel and &lt;a href="http://kernelnewbies.org/Ext4"&gt;ext4&lt;/a&gt;. So far so good.&lt;br /&gt;&lt;br /&gt;Next step is to install the latest Intel Graphics drive to benefit from &lt;a href="http://lwn.net/Articles/283793/"&gt;GEM&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-6202508469351934483?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/6202508469351934483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=6202508469351934483' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/6202508469351934483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/6202508469351934483'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2008/12/using-ext4-and-2628-kernel-on-my-new.html' title='Using ext4 and 2.6.28 kernel on my new laptop'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-5902746292747040604</id><published>2008-11-08T15:37:00.002+08:00</published><updated>2008-11-08T15:41:59.999+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='apt'/><category scheme='http://www.blogger.com/atom/ns#' term='update'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Don't use APT::Default-Release in Ubuntu unless you know what you are doing</title><content type='html'>Setting APT::Default-Release in Ubuntu blocks all future security fixes and updates.&lt;br /&gt;&lt;br /&gt;This is related to all versions before Hardy (include). I haven't tested this on Intrepid so I'm not sure about those versions after Hardy.&lt;br /&gt;&lt;br /&gt;According to apt_preferences manpage, the target release can be set on the apt-get command line or in the APT configuration file /etc/apt/apt.conf, and "APT::Default-Release "stable";" is given out as an example. This is a very common and popular practice used in Debian community to set the default release and using apt-pin, but doing this in Ubuntu leads to serious security impact with no obvious warning.&lt;br /&gt;&lt;br /&gt;After setting APT::Default-Release to "hardy", which is the "Suite" name for main hardy source, no security fixes nor updates would be installed unless their priorities are also set explicitly in apt_preferences. This is because that in Ubuntu's world, security fixes are from "hardy-security" source and other updates are from "hardy-updates" source, which bear different "Suite" from the main source. Setting APT::Default-Release rises the priority of packages from main source to 990, but doesn't cover packages from hardy-security and hardy-updates, so the latter are ignored since their packages now has lower priority (priority 500 only) than those old ones in main source (990).&lt;br /&gt;&lt;br /&gt;I set APT::Default-Release to "hardy" on Sep this year until I found this problem today. Removed that setting and I'm surprised to found that I can install 46 security fixes and updates accumulated. Which is pretty sad to me that got known I haven't got security fixes for more than 2 months.&lt;br /&gt;&lt;br /&gt;This is a radical deviation from the Debian practice. In Debian all security fixes and updates bear the same "Suite" (etch or lenny) so setting APT::Default-Release to "etch" covers all security fixes and updates.&lt;br /&gt;&lt;br /&gt;I think it's unlikely that Ubuntu changes the organization of it's source, so at least a fix to this problem is patching the apt_preferences manpage, alerting people not to use APT::Default-Release like they have used this in Debian and the reason and the following impacts.&lt;br /&gt;&lt;br /&gt;I've opened a bug about this: &lt;a href="https://bugs.launchpad.net/ubuntu/+source/apt/+bug/295448"&gt;https://bugs.launchpad.net/ubuntu/+source/apt/+bug/295448&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-5902746292747040604?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/5902746292747040604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=5902746292747040604' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/5902746292747040604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/5902746292747040604'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2008/11/dont-use-aptdefault-release-in-ubuntu.html' title='Don&apos;t use APT::Default-Release in Ubuntu unless you know what you are doing'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-842441652069310028</id><published>2008-10-31T21:11:00.005+08:00</published><updated>2009-01-22T20:28:37.453+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cdrdao'/><category scheme='http://www.blogger.com/atom/ns#' term='vcd'/><category scheme='http://www.blogger.com/atom/ns#' term='totem'/><category scheme='http://www.blogger.com/atom/ns#' term='read-cd'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='gnu vcdimager'/><category scheme='http://www.blogger.com/atom/ns#' term='vcdxrip'/><category scheme='http://www.blogger.com/atom/ns#' term='rip'/><category scheme='http://www.blogger.com/atom/ns#' term='mplayer'/><title type='text'>Ripping VCD in Linux</title><content type='html'>I've got some old VCD discs so I've spent some time on studying how to rip them for backing up.&lt;br /&gt;&lt;br /&gt;There are two methods available:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;To make a perfect ripping, use &lt;code&gt;cdrdao read-cd&lt;/code&gt;:&lt;br/&gt;&lt;br /&gt;&lt;code&gt;cdrdao read-cd --device ATA:1,1,0 --driver generic-mmc-raw --read-raw image.toc&lt;/code&gt;&lt;br/&gt;&lt;br /&gt;the &lt;code&gt;--device&lt;/code&gt; is optional. By using this you got a TOC/BIN file pair that contains all the tracks from VCD which can be used to produce exact 1:1 copies. You can also generate a CUE/BIN pair by passing a filename with &lt;tt&gt;.cue&lt;/tt&gt; extension. Although it is said that mplayer and totem can play the BIN file if proper decoding plugins are installed, I have never been able to do that, which is a big problem for me.&lt;br/&gt;&lt;br /&gt;Credit goes to manmath: &lt;a href="http://ubuntuforums.org/archive/index.php/t-217997.html"&gt;http://ubuntuforums.org/archive/index.php/t-217997.html&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;For easy playing back, you can extract MPG files by using GNU &lt;a href="http://www.gnu.org/software/vcdimager/"&gt;VCDImager&lt;/a&gt;, which is included in many popular distros. Using the vcdxrip program:&lt;br/&gt;&lt;br /&gt;&lt;code&gt;vcdxrip -C=/dev/cdrom&lt;/code&gt;&lt;br/&gt;&lt;br /&gt;By this you got all videos in usable MPG files.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Though you may be able to copy DAT files from VCD to your hard drive directly in Windows, this is not the case in Linux systems, you'll get I/O errors. The reason is that the file system of VCD disc is not valid ISO-9660 and never meant to support direct copying video data as plain files. Windows must be doing some conversion behind the hood.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-842441652069310028?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/842441652069310028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=842441652069310028' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/842441652069310028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/842441652069310028'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2008/10/ripping-vcd-in-linux.html' title='Ripping VCD in Linux'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-5990340423978530836</id><published>2008-10-31T20:34:00.002+08:00</published><updated>2008-10-31T20:50:49.985+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='utf-16'/><category scheme='http://www.blogger.com/atom/ns#' term='ass'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='bom'/><category scheme='http://www.blogger.com/atom/ns#' term='subtitle'/><category scheme='http://www.blogger.com/atom/ns#' term='mplayer'/><title type='text'>mplayer and ASS subtitles in UTF-16 with BOM</title><content type='html'>Tina got a piece of .mkv video with ASS subtitles, which was in UTF-16 and began with BOM (&lt;tt&gt;0xFF 0xFE&lt;/tt&gt;), perhaps generated by using some programs from Windows kingdom. mplayer can't load ASS that begins with BOM and produces the following error message:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Matroska file format detected.&lt;br /&gt;VIDEO:  [avc1]  864x480  24bpp  23.976 fps    0.0 kbps ( 0.0 kbyte/s)&lt;br /&gt;SUB: Could not determine file format&lt;br /&gt;Cannot load subtitles: file.ass&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The remedy:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Convert the ASS file to UTF-8 (or whatever encoding you are comfortable with). I used iconv: &lt;code&gt;iconv -f utf16 -t utf8 &lt; file.ass &gt; result.ass&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Play it by using the "&lt;code&gt;-utf8&lt;/code&gt;" switch of mplayer: &lt;code&gt;mplayer -ass -utf8 file.mkv&lt;/code&gt;. If the ASS contains special characters (such as CJK chars), use a good font by "&lt;code&gt;-font /usr/share/font/cjk.ttf&lt;/code&gt;"&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-5990340423978530836?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/5990340423978530836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=5990340423978530836' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/5990340423978530836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/5990340423978530836'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2008/10/mplayer-and-ass-subtitles-in-utf-16.html' title='mplayer and ASS subtitles in UTF-16 with BOM'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-8649043078096066913</id><published>2008-09-20T22:10:00.004+08:00</published><updated>2008-09-20T22:32:56.917+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='slow'/><category scheme='http://www.blogger.com/atom/ns#' term='xorg'/><category scheme='http://www.blogger.com/atom/ns#' term='nvidia'/><category scheme='http://www.blogger.com/atom/ns#' term='driver'/><title type='text'>Fix nVidia's Proprietary Driver's Poor 2D Performance on Linux</title><content type='html'>Call me a fool. I bought an XFX GeForce FX 5200 PCI for my workstation (which is actually a Dell SC440 tower server who has no AGP slot). And nVidia's poor proprietary driver is &lt;a href="http://www.heise-online.co.uk/open/Kernel-Log-New-Nvidia-drivers-are-still-slow-Linux-2-6-26-1-soon--/news/111232"&gt;notorious slow&lt;/a&gt; of 2D on Linux. The CPU usage of the &lt;tt&gt;Xorg&lt;/tt&gt; process easily goes up to around 70% on my Xeon Core 2 @ 1.86GHz even when scrolling the text in &lt;tt&gt;gnome-terminal&lt;/tt&gt;, not to say reading web pages in Firefox, which slows down everything else. And I've been sticking to a years old pristine GNOME (2.14 shipped with Debian 4.0 Etch) with nothing eye-candy here.&lt;br /&gt;&lt;br /&gt;Finally I've found a workaround: &lt;a href="http://www.nvnews.net/vbulletin/showpost.php?p=1704073&amp;postcount=1"&gt;http://www.nvnews.net/vbulletin/showpost.php?p=1704073&amp;postcount=1&lt;/a&gt;: &lt;b&gt;Update (2008-07-18)&lt;/b&gt; worked for me. In courtesy of &lt;a href="http://www.nvnews.net/vbulletin/member.php?u=102359"&gt;xsolarwindx&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The improvement: now with this little fix the time used to build an Linux kernel on my workstation is only &lt;b&gt;half&lt;/b&gt; as before just because the little baby likes writing its progress onto the terminal and old nVidia hates this so it made the displaying of text even more time-consuming than compiling the multi-million-line kernel itself!&lt;br /&gt;&lt;br /&gt;I've been running nVidia's driver 173.14.12 x86_64 on a stock Debian 4.0 Etchnhalf kernel (2.6.24-etchnhalf.1-amd64).&lt;br /&gt;&lt;br /&gt;I'll never buy an nVidia unless they released full GPL drivers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-8649043078096066913?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/8649043078096066913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=8649043078096066913' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/8649043078096066913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/8649043078096066913'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2008/09/fix-nvidias-proprietary-drivers-poor-2d.html' title='Fix nVidia&apos;s Proprietary Driver&apos;s Poor 2D Performance on Linux'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-3334893937229943441</id><published>2008-09-14T18:14:00.004+08:00</published><updated>2008-09-14T22:18:19.817+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ati'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='fglrx'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Install ATI's fglrx Catalyst 8.8 Driver (v 8.522) on Linux 2.6.27</title><content type='html'>The Linux kernel 2.6.27 has changed an API (&lt;code&gt;smp_call_function()&lt;/code&gt;) that breaks compilation of ATI's Catalyst 8.8 fglrx driver. You get error like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/usr/src/fglrx-8.522/firegl_public.c:3080:50: error: macro "smp_call_function" passed 4 arguments, but takes just 3&lt;br /&gt;/usr/src/fglrx-8.522/firegl_public.c: In function ‘__ke_flush_cache’:&lt;br /&gt;/usr/src/fglrx-8.522/firegl_public.c:3080: error: ‘smp_call_function’ undeclared (first use in this function)&lt;br /&gt;/usr/src/fglrx-8.522/firegl_public.c:3080: error: (Each undeclared identifier is reported only once&lt;br /&gt;/usr/src/fglrx-8.522/firegl_public.c:3080: error: for each function it appears in.)&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Loïc Minier has made a &lt;a href="http://groups.google.com/group/linux.debian.bugs.dist/browse_thread/thread/6086b1cb7674fc43"&gt;patch&lt;/a&gt; for Catalyst 8.7, and I've adapted it to Catalyst 8.8:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;From 42a6390f599294c60a4960b0a6cd4e399b1a81ee Mon Sep 17 00:00:00 2001&lt;br /&gt;From: Yan Li &lt;elliot.li.tech@gmail.com&gt;&lt;br /&gt;Date: Sun, 14 Sep 2008 17:45:48 +0800&lt;br /&gt;Subject: [PATCH] patch for building on 2.6.27&lt;br /&gt;&lt;br /&gt;ref: http://groups.google.com/group/linux.debian.bugs.dist/browse_thread/thread/6086b1cb7674fc43&lt;br /&gt;---&lt;br /&gt; firegl_public.c |   15 +++++++++++----&lt;br /&gt; 1 files changed, 11 insertions(+), 4 deletions(-)&lt;br /&gt;&lt;br /&gt;diff --git a/firegl_public.c b/firegl_public.c&lt;br /&gt;index bdc94b2..d85a567 100644&lt;br /&gt;--- a/firegl_public.c&lt;br /&gt;+++ b/firegl_public.c&lt;br /&gt;@@ -202,6 +202,13 @@&lt;br /&gt; #define preempt_enable()&lt;br /&gt; #endif&lt;br /&gt; &lt;br /&gt;+/* Since 2.6.27 smp_call_function doesn't have a nonatomic/retry argument */&lt;br /&gt;+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,27)&lt;br /&gt;+#define SMP_CALL_FUNCTION(func, info, retry, wait) smp_call_function(func, info, wait)&lt;br /&gt;+#else&lt;br /&gt;+#define SMP_CALL_FUNCTION(func, info, retry, wait) smp_call_function(func, info, retry, wait)&lt;br /&gt;+#endif&lt;br /&gt;+&lt;br /&gt; // ============================================================&lt;br /&gt; /* globals */&lt;br /&gt; &lt;br /&gt;@@ -3077,7 +3084,7 @@ int ATI_API_CALL __ke_flush_cache(void)&lt;br /&gt; {&lt;br /&gt; #ifdef __SMP__&lt;br /&gt;     /* write back invalidate all other CPUs (exported by kernel) */&lt;br /&gt;- if (smp_call_function(deferred_flush, NULL, 1, 0) != 0)&lt;br /&gt;+ if (SMP_CALL_FUNCTION(deferred_flush, NULL, 1, 0) != 0)&lt;br /&gt;   panic("timed out waiting for the other CPUs!\n");&lt;br /&gt; &lt;br /&gt;     /* invalidate this CPU */&lt;br /&gt;@@ -4796,7 +4803,7 @@ struct _agp_memory* ATI_API_CALL __ke_agp_allocate_memory_phys_list(&lt;br /&gt; void ATI_API_CALL KCL_CallFuncOnOtherCpus(firegl_void_routine_t func_to_call) &lt;br /&gt; {&lt;br /&gt; #ifdef CONFIG_SMP&lt;br /&gt;- smp_call_function( firegl_smp_func_parameter_wrap, (void*)func_to_call, 0, 1 );&lt;br /&gt;+ SMP_CALL_FUNCTION( firegl_smp_func_parameter_wrap, (void*)func_to_call, 0, 1 );&lt;br /&gt; #endif&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt;@@ -4910,7 +4917,7 @@ static int ATI_API_CALL KCL_enable_pat(unsigned int save_orig_pat)&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt; #ifdef CONFIG_SMP&lt;br /&gt;-   if (smp_call_function(KCL_setup_pat, NULL, 0, 1) != 0)&lt;br /&gt;+   if (SMP_CALL_FUNCTION(KCL_setup_pat, NULL, 0, 1) != 0)&lt;br /&gt;        return 0;&lt;br /&gt; #endif&lt;br /&gt;    KCL_setup_pat(NULL);&lt;br /&gt;@@ -4929,7 +4936,7 @@ static void ATI_API_CALL KCL_disable_pat(void)&lt;br /&gt;     }&lt;br /&gt; &lt;br /&gt; #ifdef CONFIG_SMP&lt;br /&gt;-    if (smp_call_function(KCL_restore_pat, NULL, 0, 1) != 0)&lt;br /&gt;+    if (SMP_CALL_FUNCTION(KCL_restore_pat, NULL, 0, 1) != 0)&lt;br /&gt;        return;&lt;br /&gt; #endif&lt;br /&gt;     KCL_restore_pat(NULL);&lt;br /&gt;-- &lt;br /&gt;1.5.4.3&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I suggest use the &lt;code&gt;--buildpkg&lt;/code&gt; function of the ATI driver to build packages for your system. Those packages use dkms to build the kernel module needed. (For Debian/Ubuntu flavor Linux, I suggest use the way as described in &lt;a href="https://help.ubuntu.com/community/BinaryDriverHowto/ATI"&gt;https://help.ubuntu.com/community/BinaryDriverHowto/ATI&lt;/a&gt;.) Apply the above patch after installed the &lt;tt&gt;fglrx-kernel-source.*.deb&lt;/tt&gt; to &lt;tt&gt;/var/lib/dkms/fglrx/8.522/source&lt;/tt&gt;, then run "&lt;code&gt;sudo dkms build -m fglrx -v 8.522&lt;/code&gt;" to build the kernel module.&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;&lt;a href="http://groups.google.com/group/linux.debian.bugs.dist/browse_thread/thread/6086b1cb7674fc43"&gt;http://groups.google.com/group/linux.debian.bugs.dist/browse_thread/thread/6086b1cb7674fc43&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-3334893937229943441?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/3334893937229943441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=3334893937229943441' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/3334893937229943441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/3334893937229943441'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2008/09/install-atis-fglrx-catalyst-88-driver-v.html' title='Install ATI&apos;s fglrx Catalyst 8.8 Driver (v 8.522) on Linux 2.6.27'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-5662406029514755547</id><published>2008-08-07T17:52:00.003+08:00</published><updated>2008-08-07T18:05:45.358+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugzilla'/><category scheme='http://www.blogger.com/atom/ns#' term='taskjuggler'/><category scheme='http://www.blogger.com/atom/ns#' term='gantt'/><category scheme='http://www.blogger.com/atom/ns#' term='project management'/><title type='text'>Generating Gantt from Bugzilla Tasks by Using TaskJuggler</title><content type='html'>We've been using &lt;a href="http://www.bugzilla.org/"&gt;Bugzilla&lt;/a&gt; in various projects to track tasks' status and it turned out to be an excellent tool for collaboration and project management. Gantt is useful in various ways for project status checking and planning. Today I've spent some time to set up automatically generation of Gantt from Bugzilla tasks by using a combination of various tools.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.taskjuggler.org/"&gt;TaskJuggler&lt;/a&gt;: excellent free software on task scheduling and report generation, with beautiful GUI and powerful command-line interface.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://wiki.mozilla.org/TaskJugglerIntegration"&gt;Bugzilla:TaskJugglerIntegration&lt;/a&gt;: export Bugzilla tasks to TaskJuggler project file.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;The script bztotj.py from Bugzilla:TaskJugglerIntegration is easy to understand, and by changing the SQL in it you can export tasks from Bugzilla by arbitrary filters.&lt;br /&gt;&lt;br /&gt;TaskJuggler's task is written in plain text so it's good for change management. It also features a nice GUI editor. You may need some time to learn to write project files but once you get it you can write versatile project files and, by writing scripts to manipulate them, implement complex project scheduling schema.&lt;br /&gt;&lt;br /&gt;If you want to generate Gantt from TaskJuggler tasks without human interference, you can use this tool: &lt;a href="http://blog.gustavobarbieri.com.br/2007/04/19/generating-gantt-graphs-from-taskjuggler-projects-without-using-its-ui/"&gt;http://blog.gustavobarbieri.com.br/2007/04/19/generating-gantt-graphs-from-taskjuggler-projects-without-using-its-ui/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-5662406029514755547?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/5662406029514755547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=5662406029514755547' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/5662406029514755547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/5662406029514755547'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2008/08/generating-gantt-from-bugzilla-tasks-by.html' title='Generating Gantt from Bugzilla Tasks by Using TaskJuggler'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-2814966973248156396</id><published>2008-07-22T21:26:00.002+08:00</published><updated>2008-07-22T21:31:01.187+08:00</updated><title type='text'>My Home Storage Reached 2 TB</title><content type='html'>Today I bought and installed a 750GB hard drive to my backup server. This made my total storage at home reached 2.11 TB. The usable storage is more than 500 GB (others are used for backup).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-2814966973248156396?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/2814966973248156396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=2814966973248156396' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/2814966973248156396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/2814966973248156396'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2008/07/my-home-storage-reached-2-tb.html' title='My Home Storage Reached 2 TB'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-5001914594634863565</id><published>2008-07-03T22:01:00.005+08:00</published><updated>2008-07-04T22:57:38.130+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openstreetmap'/><title type='text'>OpenStreetMap is an Interesting Project</title><content type='html'>&lt;a href="http://www.openstreetmap.org"&gt;www.openstreetmap.org&lt;/a&gt; is an really interesting project, I've been contributing to it for some time, mainly covers Beijing urban and rural area.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-5001914594634863565?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/5001914594634863565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=5001914594634863565' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/5001914594634863565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/5001914594634863565'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2008/07/openstreetmap-is-interesting-proejct.html' title='OpenStreetMap is an Interesting Project'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-5942556937540166000</id><published>2008-06-29T18:09:00.003+08:00</published><updated>2008-06-29T18:17:11.050+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='laptop'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='power management'/><category scheme='http://www.blogger.com/atom/ns#' term='hard drive'/><title type='text'>My HD High Load/unload Cycle Problem Fix</title><content type='html'>I've just applied &lt;a href="http://en.opensuse.org/Disk_Power_Management"&gt;http://en.opensuse.org/Disk_Power_Management&lt;/a&gt; to fix the high load/unload cycle problem of my IBM ThinkPad T43p laptop. My Load_Cycle_Count grows at around 30 per hour, which is not very high, but theoratically limit my HD's life to around 4 years.&lt;br /&gt;&lt;br /&gt;PS. though I dislike SuSE due to their pact with Microsoft, they are doing really well in some fields. The article mentioned above is well written, neat and clean, and the script is in good quality. I was told that openSUSE has already included patches to fix this problem, while Ubuntu's users are still struggling to either fix it by themselves or talking in the forums, trying to understand what to do.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-5942556937540166000?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/5942556937540166000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=5942556937540166000' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/5942556937540166000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/5942556937540166000'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2008/06/my-hd-high-loadunload-cycle-problem-fix.html' title='My HD High Load/unload Cycle Problem Fix'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-6103797533558096925</id><published>2008-05-26T19:52:00.003+08:00</published><updated>2008-05-26T19:55:57.765+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tm_smapi'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='thinkpad'/><title type='text'>IBM/Lenove ThinkPad Battery Maintenance in Linux</title><content type='html'>I felt the deteriorate of the lifetime of the battery on my IBM ThinkPad T43p. &lt;a href="http://www.thinkwiki.org/wiki/Maintenance#Battery_treatment"&gt;This&lt;/a&gt; article has a good discussion on best practices. I also installed the &lt;a href="http://www.thinkwiki.org/wiki/Tp_smapi"&gt;tm_smapi&lt;/a&gt; driver and set charge threshold for my laptop.&lt;br /&gt;&lt;br /&gt;Save battery, no waste.  :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-6103797533558096925?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/6103797533558096925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=6103797533558096925' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/6103797533558096925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/6103797533558096925'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2008/05/ibmlenove-thinkpad-battery-maintenance.html' title='IBM/Lenove ThinkPad Battery Maintenance in Linux'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-8283057252852848320</id><published>2008-05-13T22:28:00.005+08:00</published><updated>2008-05-26T19:51:54.949+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='donation'/><category scheme='http://www.blogger.com/atom/ns#' term='charity'/><category scheme='http://www.blogger.com/atom/ns#' term='china'/><category scheme='http://www.blogger.com/atom/ns#' term='earthquake'/><title type='text'>China Earthquake Relief, Sichuan, 2008</title><content type='html'>The &lt;a href="http://en.wikipedia.org/wiki/2008_Sichuan_earthquake"&gt;2008 Sichuan earthquake&lt;/a&gt; occurred at 14:28:04.1 CST (06:28:04.1 UTC) on 12 May 2008, with its epicenter in Wenchuan County, Sichuan province of the People's Republic of China. It had a magnitude of 7.8 Ms according to the State Seismological Bureau of China and 7.9 Mw according to the United States Geological Survey. &lt;br /&gt;&lt;br /&gt;With more than 60,000 recently confirmed dead so far, it was the deadliest and strongest earthquake to hit China since the 1976 Tangshan earthquake, which killed approximately 250,000 people.&lt;br /&gt;&lt;br /&gt;Please consider &lt;a href="http://www.chinacsr.com/2008/05/13/2339-china-red-cross-calling-for-donations-for-sichuan-earthquake-with-sinacom/"&gt;donation&lt;/a&gt; to &lt;a href="http://en.wikipedia.org/wiki/Red_Cross_Society_of_China"&gt;China Red Cross&lt;/a&gt;! Thank you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-8283057252852848320?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/8283057252852848320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=8283057252852848320' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/8283057252852848320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/8283057252852848320'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2008/05/call-for-donation-2008-sichuan-china.html' title='China Earthquake Relief, Sichuan, 2008'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-995375241746008678</id><published>2008-05-04T19:09:00.002+08:00</published><updated>2008-05-04T19:11:42.916+08:00</updated><title type='text'>Qt Problem of Google Earth 4.3 Beta for Linux</title><content type='html'>On some systems (as Ubuntu Hardy 8.04) the Google Earth 4.3 Beta doesn't work very well, the fonts are ugly and tiny. You may try this workaround:&lt;br /&gt;&lt;a href="http://groups.google.fr/group/earth-linux/browse_thread/thread/e10a5337b0b47ba1#"&gt;http://groups.google.fr/group/earth-linux/browse_thread/thread/e10a5337b0b47ba1#&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On other systems (as CentOS 5.1) it may work very well out-of-box.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-995375241746008678?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/995375241746008678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=995375241746008678' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/995375241746008678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/995375241746008678'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2008/05/qt-problem-of-google-earth-43-beta-for.html' title='Qt Problem of Google Earth 4.3 Beta for Linux'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-4048941657945237598</id><published>2008-04-22T10:51:00.003+08:00</published><updated>2008-04-22T10:57:17.238+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vsftpd'/><category scheme='http://www.blogger.com/atom/ns#' term='free software'/><title type='text'>HOWTO: vsftpd's Virtual User Use Local Privileges</title><content type='html'>If you are using vsftpd with virtual users, as described in &lt;a href="ftp://vsftpd.beasts.org/users/cevans/untar/vsftpd-2.0.6/EXAMPLE/VIRTUAL_USERS"&gt;official example&lt;/a&gt;, and are suffering problems like this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;226 Transfer done (but failed to open directory).&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;(you may see above text in client or server log), you may consider using "virtual_use_local_privs".&lt;br /&gt;&lt;br /&gt;Per &lt;a href="http://www.trustix.org/forum/showthread.php?t=795"&gt;study of cpdohert&lt;/a&gt;, if you want vsftpd's virtual user follow local privileges, you have to use:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;virtual_use_local_privs=YES&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-4048941657945237598?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/4048941657945237598/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=4048941657945237598' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/4048941657945237598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/4048941657945237598'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2008/04/howto-vsftpds-virtual-user-use-local.html' title='HOWTO: vsftpd&apos;s Virtual User Use Local Privileges'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-3307292571298245724</id><published>2008-04-21T14:45:00.001+08:00</published><updated>2008-04-21T14:47:34.435+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ftp'/><category scheme='http://www.blogger.com/atom/ns#' term='kde'/><category scheme='http://www.blogger.com/atom/ns#' term='free software'/><title type='text'>FTP Ascii Mode in KDE (kioslave)</title><content type='html'>Write a ~/.kde/share/config/kio_ftprc, with&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[hostname]&lt;br /&gt;textmode=true&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Or use [] instead of [hostname] to make it used everywhere.&lt;br /&gt;&lt;br /&gt;Warning: this will likely mess up any transfers of binary files.&lt;br /&gt;&lt;br /&gt;In courtesy of &lt;a href="http://lists.kde.org/?l=kfm-devel&amp;m=116280999303236&amp;w=2"&gt;David Faure&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-3307292571298245724?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/3307292571298245724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=3307292571298245724' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/3307292571298245724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/3307292571298245724'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2008/04/ftp-ascii-mode-in-kde-kioslave.html' title='FTP Ascii Mode in KDE (kioslave)'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-987889223685972109</id><published>2008-04-21T10:49:00.004+08:00</published><updated>2008-04-21T10:57:52.600+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='free software'/><category scheme='http://www.blogger.com/atom/ns#' term='moin'/><title type='text'>Steps to Upgrade MoinMoin Wiki from 1.5.* to 1.6.*</title><content type='html'>I've been using the MoinMoin Wiki from Debian Testing for some time and this morning I found it was upgraded from 1.5.8 to 1.6.2, and unsurprisingly, my Wiki installation stopped working, very obviously some data migration may be necessary.&lt;br /&gt;&lt;br /&gt;After wasted some time, I found a good article: Thomas Waldmann's &lt;a href="http://moinmo.in/ThomasWaldmann/AnotherWayToMigrateFrom1.5To1.6"&gt;AnotherWayToMigrateFrom1.5To1.6&lt;/a&gt;. I couldn't find a good official migration guide like this, which told you that you must run cache cleaning and data migration.&lt;br /&gt;&lt;br /&gt;Hope this is useful to other MoinMoin users.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-987889223685972109?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/987889223685972109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=987889223685972109' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/987889223685972109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/987889223685972109'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2008/04/steps-to-upgrade-moinmoin-wiki-from-15.html' title='Steps to Upgrade MoinMoin Wiki from 1.5.* to 1.6.*'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-3961216931074751844</id><published>2008-04-17T14:41:00.003+08:00</published><updated>2008-04-17T14:45:33.164+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='pdf'/><category scheme='http://www.blogger.com/atom/ns#' term='pdftk'/><category scheme='http://www.blogger.com/atom/ns#' term='free software'/><title type='text'>Use pdftk to Update PDF File's Meta Data</title><content type='html'>A good tool, &lt;a href="http://www.pdfhacks.com/pdftk/"&gt;pdftk&lt;/a&gt;, can be used to manipulate PDF files, changing meta-data, page-juggling, etc., you name it! And it's GPLed. &lt;br /&gt;&lt;br /&gt;Easy, peasy, japanesey.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-3961216931074751844?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/3961216931074751844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=3961216931074751844' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/3961216931074751844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/3961216931074751844'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2008/04/use-pdftk-to-update-pdf-files-meta-data.html' title='Use pdftk to Update PDF File&apos;s Meta Data'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-487238524869854528</id><published>2008-04-15T17:35:00.003+08:00</published><updated>2008-04-15T17:41:13.272+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='vmware'/><title type='text'>Error of Running VMware Server 1.0.5 on Debian 4.0 Etch</title><content type='html'>I installed VMware Server 1.0.5 on Debian 4.0 Etch (i686) today and couldn't start vmware-console due to this error:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(vmware:20921): libgnomevfs-WARNING **: Cannot load module `/usr/lib/gnome-vfs-2.0/modules/libfile.so' (/usr/lib/vmware/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_4.2.0' not found (required by /usr/lib/libstdc++.so.6))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;To fix this problem, start VMware by running:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;VMWARE_USE_SHIPPED_GTK=yes vmware&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;For more information on this please click the title, which leads to a post on VMware community website.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-487238524869854528?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://communities.vmware.com/message/500708' title='Error of Running VMware Server 1.0.5 on Debian 4.0 Etch'/><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/487238524869854528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=487238524869854528' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/487238524869854528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/487238524869854528'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2008/04/error-of-running-vmware-server-105-on.html' title='Error of Running VMware Server 1.0.5 on Debian 4.0 Etch'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-1987483646451808899</id><published>2008-04-14T14:36:00.004+08:00</published><updated>2008-04-15T17:41:48.216+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rpm'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='fedora'/><category scheme='http://www.blogger.com/atom/ns#' term='rhel'/><category scheme='http://www.blogger.com/atom/ns#' term='red hat'/><title type='text'>RPM Spec: conditional build based on host distro</title><content type='html'>When writing spec of RPM, often you need to write some special instructions that are needed only on &lt;b&gt;some&lt;/b&gt; distros or versions, but not all. You can use this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# Do something for FC4 and beyond.&lt;br /&gt;%if 0%{?fedora} &gt;= 4&lt;br /&gt;    # ...&lt;br /&gt;%endif&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-1987483646451808899?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://fedoraproject.org/wiki/Packaging/DistTag' title='RPM Spec: conditional build based on host distro'/><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/1987483646451808899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=1987483646451808899' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/1987483646451808899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/1987483646451808899'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2008/04/rpm-spec-conditional-build-based-on.html' title='RPM Spec: conditional build based on host distro'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-702382101903317733</id><published>2008-04-09T09:49:00.003+08:00</published><updated>2008-04-09T10:23:16.181+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='mount option'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Tweak GNOME Auto Mount Options</title><content type='html'>Use &lt;b&gt;gconf-editor&lt;/b&gt; to edit the key:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/system/storage/default_options/vfat/mount_options&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The most useful one for me to add is "&lt;b&gt;iocharset=utf8&lt;/b&gt;".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-702382101903317733?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/702382101903317733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=702382101903317733' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/702382101903317733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/702382101903317733'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2008/04/tweak-gnome-auto-mount-options.html' title='Tweak GNOME Auto Mount Options'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-2411342214249381594</id><published>2008-04-04T18:15:00.004+08:00</published><updated>2008-04-15T17:42:33.003+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='grep'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>Ignoring .svn directories with grep</title><content type='html'>Have lived with Subversion for many years and finally I found &lt;a href="http://coreygilmore.com/blog/2007/09/14/ignoring-svn-directories-with-grep/trackback/"&gt;this&lt;/a&gt;  (link to outside my blog) simple little trick.  :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-2411342214249381594?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/2411342214249381594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=2411342214249381594' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/2411342214249381594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/2411342214249381594'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2008/04/ignoring-svn-directories-with-grep.html' title='Ignoring .svn directories with grep'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-5008340683186026451</id><published>2008-04-04T17:09:00.000+08:00</published><updated>2008-04-04T17:26:58.200+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wikipedia'/><category scheme='http://www.blogger.com/atom/ns#' term='censorship'/><category scheme='http://www.blogger.com/atom/ns#' term='china'/><title type='text'>Wikipedia Unblocked (temp) in China</title><content type='html'>Now I can access &lt;a href="http://www.wikipedia.org/"&gt;Wikipedia&lt;/a&gt; in China without using a proxy, not all contents, only a large part. This is a big step forward.&lt;br /&gt;&lt;br /&gt;As well as &lt;a href="http://blogspot.com/"&gt;blogspot.com&lt;/a&gt;, wow!&lt;br /&gt;&lt;br /&gt;May His Holiness let this last.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-5008340683186026451?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/5008340683186026451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=5008340683186026451' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/5008340683186026451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/5008340683186026451'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2008/04/wikipedia-unblocked-temp-in-china.html' title='Wikipedia Unblocked (temp) in China'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-1773573141960391740</id><published>2008-03-16T11:21:00.000+08:00</published><updated>2008-03-16T11:46:20.619+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='bank'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>Choose a Linux-friendly Bank in China</title><content type='html'>At last I thought I should spend some time on finding a Linux-friendly bank. By Linux-friendly I meant that the e-Bank services should be able to achieved from a Linux machine running native browsers such as Firefox. I've been using China Merchant Bank for nearly 10 years and although generally good, their eBank services are designed around IE and ActiveX. What's more annoying is that their bank software could not be run within a virtual machine, alleged for the sake of better security, which shut all doors to run it on Linux.&lt;br /&gt;&lt;br /&gt;I used eBank to manage loads of things such as utility payment, donations, credit card payment and investment management. So it's really a waste of time to reboot to MS Windows&lt;small&gt;&lt;sup&gt;TM&lt;/sup&gt;&lt;/small&gt; to do them.&lt;br /&gt;&lt;br /&gt;So finally I chose &lt;a href="http://www.spdb.com.cn/chpage/c510/"&gt;Shanghai Pudong Development Bank&lt;/a&gt;. It's eBank services are great with Firefox!  Till now I'm happy with it. I've also applied for the credit card and hope to move all my credit card subscriptions to it gradually.&lt;br /&gt;&lt;br /&gt;Now the only gray area for me is that my employer doesn't support to pay into SPDB. I'll keep complaining to my beloved HR manager.  :)&lt;br /&gt;&lt;br /&gt;N.B. &lt;a href="http://www.hsbc.com.cn/1/2/home"&gt;HSBC&lt;/a&gt; is doing very well with Linux too. Who (I guess) has been running &lt;a href="http://www.ibm.com/aix"&gt;IBM's AIX&lt;/a&gt; and &lt;a href="http://www.ibm.com/systems/z/"&gt;System z&lt;/a&gt; for a long time and is generally browser-independent.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-1773573141960391740?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/1773573141960391740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=1773573141960391740' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/1773573141960391740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/1773573141960391740'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2008/03/choose-linux-friendly-bank-in-china.html' title='Choose a Linux-friendly Bank in China'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-5052042028997050379</id><published>2008-02-28T20:32:00.001+08:00</published><updated>2008-04-15T17:42:54.215+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='andrew morton'/><title type='text'>A Talk with Andrew Morton</title><content type='html'>On Feb 20th, 2008, Tina and I attended the &lt;a href="http://www.beijinglug.org/en/index.php?option=com_content&amp;amp;task=view&amp;amp;id=199&amp;amp;Itemid=7"&gt;Eating the Linux Kernel&lt;/a&gt; party:&lt;br /&gt;"Thanks to the Linux Foundation and China OSS Promotion Union we're&lt;br /&gt;organizing a diner with all the great speakers of the Linux Developer&lt;br /&gt;Symposium. This is going to be the one opportunity to share food and&lt;br /&gt;thoughts with people like Andrew Morton, Jonathan Corbet, Dave Neary,&lt;br /&gt;Jeff Waugh and many many others. In total probably 20 specialists from&lt;br /&gt;the kernel development, Linux embedded or Gnome development&lt;br /&gt;exclusively for Beijing LUG members..."&lt;br /&gt;&lt;br /&gt;Fortunately I had a chance to have a talk to Andrew Morton who seated&lt;br /&gt;besides me:&lt;br /&gt;&lt;br /&gt;(This is not a verbal transcript of the talk, nor has Andrew Morton&lt;br /&gt;endorsed it and he has no responsibility for whatever listed here.&lt;br /&gt;This is just a fast record of a gossip and please don't take it&lt;br /&gt;seriously.)&lt;br /&gt;&lt;br /&gt;YL: Hi Andrew, you look tired, are you working busy on 2.6.25?&lt;br /&gt;&lt;br /&gt;AM: Yes, it takes me lot of time.&lt;br /&gt;&lt;br /&gt;YL: When will you leave Beijing?&lt;br /&gt;&lt;br /&gt;AM: Friday.  Take a tour tomorrow (Thursday) in Beijing.&lt;br /&gt;&lt;br /&gt;YL: Can I ask you some questions about the kernel? Why Linux doesn't&lt;br /&gt;maintain a stable ABI.  Currently each time the kernel updates, all&lt;br /&gt;3rd party modules will have to be recompiled. And this is really&lt;br /&gt;annoying for many users.&lt;br /&gt;&lt;br /&gt;AM: What 3rd party modules?&lt;br /&gt;&lt;br /&gt;YL: For example, the one of Madwifi, and fglrx, the proprietary driver&lt;br /&gt;for ATI cards.&lt;br /&gt;&lt;br /&gt;AM: Are they GPL?&lt;br /&gt;&lt;br /&gt;YL: Oh, no, part of it is a non-GPL blob. So I see the reason why the&lt;br /&gt;kernel doesn't support them well is that they are not free software.&lt;br /&gt;So can I say that the rumor is true that you intentionally break the&lt;br /&gt;ABI to make using 3rd party modules difficult?&lt;br /&gt;&lt;br /&gt;AM: No, we don't break them _intentionally_. We just don't care about&lt;br /&gt;it.  If we were to support a stable ABI, it will make the development&lt;br /&gt;and maintenance of the kernel much more difficult.  We won't support&lt;br /&gt;non-GPL code by compromising free software.&lt;br /&gt;&lt;br /&gt;YL: But if you made the installation of some proprietary drivers&lt;br /&gt;easier, more users would come to use Linux.  And if you had more&lt;br /&gt;users, you have more developers. And this will promote the development&lt;br /&gt;of the kernel.&lt;br /&gt;&lt;br /&gt;AM: Yeah, it's true. But we just can't support proprietary software by&lt;br /&gt;ways of compromising free software.&lt;br /&gt;&lt;br /&gt;YL: Do you have a plan, or a long-term goal of the kernel development?&lt;br /&gt;&lt;br /&gt;AM: No, we have no plan. And this is just the point of kernel&lt;br /&gt;development (and maybe other free software project). The users decide&lt;br /&gt;where the kernel goes.  If you need a function, just as he (a man sit&lt;br /&gt;besides AM) just said, if you need to support Chinese display in&lt;br /&gt;Linux, just implement it and send me the patch, and if it's good&lt;br /&gt;enough, we'll include it in the kernel.&lt;br /&gt;&lt;br /&gt;YL: If the kernel itself has no concrete plan for what functions&lt;br /&gt;should be supported and what not, and accepts everything good enough&lt;br /&gt;from the users, won't the kernel became bloated quickly?&lt;br /&gt;&lt;br /&gt;AM: No it won't. Everything is configurable. If you don't need it,&lt;br /&gt;disable it.&lt;br /&gt;&lt;br /&gt;YL: But the kernel is already very large, the binary is 20Mb, and the&lt;br /&gt;source codes are somewhat more than 300Mb.&lt;br /&gt;&lt;br /&gt;AM: I think it's not a problem. The core part of the kernel takes only&lt;br /&gt;1Mb memory at run-time.  And I see 300Mb is not a problem for today's&lt;br /&gt;hard drive.&lt;br /&gt;&lt;br /&gt;YL: The kernel is so large, and has too many things in it. I see&lt;br /&gt;another problem with this approach. Say if you found a bug in a driver&lt;br /&gt;for an ancient piece of hardware and you updated the kernel.  Then all&lt;br /&gt;users have to update just to pull in something they'll never used.&lt;br /&gt;&lt;br /&gt;AM: Oh, I've to say sorry for that.  You can say it's a problem.&lt;br /&gt;&lt;br /&gt;YL: Can we just split this large kernel into several loosely coupled&lt;br /&gt;projects? Say, one project for a kernel core, one project for file&lt;br /&gt;systems, one project for the network layer and some other projects for&lt;br /&gt;drivers.&lt;br /&gt;&lt;br /&gt;AM: That maybe to difficult for maintenance.&lt;br /&gt;&lt;br /&gt;YL: So do you thing micro-kernel would solve this problem, or are you&lt;br /&gt;a fan of monolithic kernel?&lt;br /&gt;&lt;br /&gt;AM: Monolithic kernel is much more efficient and easy to develop.&lt;br /&gt;&lt;br /&gt;YL: Another question, does the kernel team have a plan to add&lt;br /&gt;automatic test to cover some key functions?&lt;br /&gt;&lt;br /&gt;AM: No, auto test doesn't work as we tried before.  I've been&lt;br /&gt;following the LTP project for more than 2 years, and only 2 bugs were&lt;br /&gt;found by those automatic tests.  Most of the kernel bugs are only&lt;br /&gt;reproducible on some special pieces of hardware and you just have no&lt;br /&gt;way to use automatic test to cover them.&lt;br /&gt;&lt;br /&gt;For the core part, things like scheduler, file system, etc., is used&lt;br /&gt;by everyone so they are thorough tested by everyone, and for the other&lt;br /&gt;parts, like various drivers for special hardware, only those have that&lt;br /&gt;hardware can test it.  So auto test has few use for this.&lt;br /&gt;&lt;br /&gt;YL: Do you think the kernel can be better maintained or developed by a&lt;br /&gt;team?&lt;br /&gt;&lt;br /&gt;AM: No. It won't get better if you put a lot people in a building.&lt;br /&gt;The communication would take too much time.  I see it's efficient&lt;br /&gt;enough to communication by using mailing list.  I get bored soon&lt;br /&gt;during a long meeting so I just leave and ask them to send mails and&lt;br /&gt;code snips to me and we can have better understanding on technical&lt;br /&gt;problems.&lt;br /&gt;&lt;br /&gt;YL: Do you think attending symposiums, lectures and parties like this&lt;br /&gt;is a waste of time?  Do you think you can better use the time for&lt;br /&gt;hacking?&lt;br /&gt;&lt;br /&gt;AM: Oh, I don't like this before I go, it's not good to travel for&lt;br /&gt;long time on plane. But when the event was finished I thought "oh,&lt;br /&gt;it's not bad."  These are things for promotion. For example, before I&lt;br /&gt;went to Japan some years ago, there's few patch from Japanese&lt;br /&gt;developers.  And after some lectures there, the patches from Japan now&lt;br /&gt;skyrocketed to be around 20% among all patches.  So it has a snowball&lt;br /&gt;effect and that's why I attended these events. I hope I can get more&lt;br /&gt;patch from Chinese developers.&lt;br /&gt;&lt;br /&gt;YL: Do you have a laptop?&lt;br /&gt;&lt;br /&gt;AM: Yes, it's a ThinkPad.&lt;br /&gt;&lt;br /&gt;YL: Oh, I'm using a ThinkPad too. But I have to use proprietary blobs&lt;br /&gt;to support the wireless as well as ATI video card.  Though I don't use&lt;br /&gt;3D acceleration much, I do need the 2D acceleration for daily work.&lt;br /&gt;The open source driver is slow on 2D performance.&lt;br /&gt;&lt;br /&gt;AM: Yeah, ThinkPad has poor 2D performance but it's bearable.  I just&lt;br /&gt;use the default open source driver.  For wireless my laptop is running&lt;br /&gt;ipw3945 driver and that's the only binary blob on my laptop.&lt;br /&gt;&lt;br /&gt;YL: So does your suspend and hibernation work well?&lt;br /&gt;&lt;br /&gt;AM: No, they don't.  (shrug)&lt;br /&gt;&lt;br /&gt;YL: What's your main work time and for how long you sleep a day?&lt;br /&gt;&lt;br /&gt;AM: Huh! I work most of the time, and sleep from around 3am to, say,&lt;br /&gt;11am.&lt;br /&gt;&lt;br /&gt;YL: I remember you wrote an article said that the 2.6 kernel is slowly&lt;br /&gt;getting buggier.&lt;br /&gt;&lt;br /&gt;AM: Yes. People should spend more time on fixing bugs.&lt;br /&gt;&lt;br /&gt;YL: What's your personal plan for the following years?&lt;br /&gt;&lt;br /&gt;AM: I may quit in about 1 or 2 years and then I won't spend much time&lt;br /&gt;on maintenance.  I'll continue to work on the kernel, perhaps focusing&lt;br /&gt;on bug fixing.&lt;br /&gt;&lt;br /&gt;YL: So how about the mm tree?&lt;br /&gt;&lt;br /&gt;AM: No need to worry, some other people will set their own branches to&lt;br /&gt;take the position of it.&lt;br /&gt;&lt;br /&gt;YL: Have Google asked you to do something special for them?&lt;br /&gt;&lt;br /&gt;AM: No, they just pay me to do whatever I want to do.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-5052042028997050379?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/5052042028997050379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=5052042028997050379' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/5052042028997050379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/5052042028997050379'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2008/02/talk-with-andrew-morton.html' title='A Talk with Andrew Morton'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-379765337646284803</id><published>2008-01-10T14:32:00.002+08:00</published><updated>2010-07-07T10:44:32.695+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='subpixel'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='font'/><category scheme='http://www.blogger.com/atom/ns#' term='antialias'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>(Don't) Use "Subpixel Smoothing" for Fonts in GNOME</title><content type='html'>&lt;em&gt;I proposed that "Subpixel smoothing" was slow in my testing. But that result was machine-dependent. Some drivers were doing better than others. Personally I think Intel's video cards are better than that from nVidia (ATI's seems not bad either). I have to admit for some configurations subpixel rendering products better result. So it's totally up to you to decide whether to use it or not (I found myself enabled it on all my machines for now, even on a slow machine with nVidia card).&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Old post follows:&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;It's extremely slow, while the gain in font appearance is little. This setting has contributed a lot to my bad impression about GNOME's sluggish display. Now I'm happy with "Best shapes."&lt;br /&gt;&lt;br /&gt;In gnome-terminal, Subpixel smoothing is 3 times as slow as "Best shapes" rendering, on my laptop.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-379765337646284803?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/379765337646284803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=379765337646284803' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/379765337646284803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/379765337646284803'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2008/01/dont-use-subpixel-smoothing-for-fonts.html' title='(Don&apos;t) Use &quot;Subpixel Smoothing&quot; for Fonts in GNOME'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-1240071333305833094</id><published>2007-08-14T21:01:00.000+08:00</published><updated>2008-02-26T17:25:23.202+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='centos'/><category scheme='http://www.blogger.com/atom/ns#' term='sendmail'/><category scheme='http://www.blogger.com/atom/ns#' term='rhel'/><category scheme='http://www.blogger.com/atom/ns#' term='fetchmail'/><category scheme='http://www.blogger.com/atom/ns#' term='gmail'/><category scheme='http://www.blogger.com/atom/ns#' term='fedora core 6'/><title type='text'>Gmail, Fetchmail and Sendmail on UNIX/Linux</title><content type='html'>Linux Home Automation hosts a good article, &lt;a href="http://www.linuxha.com/other/sendmail/gmail.html"&gt;Linux, Sendmail and Gmail.com&lt;/a&gt; on how to configure sendmail to work with Gmail. My config is a bit simpler than his (tested on Fedora Core 4, 6, Red Hat Enterprise Linux 5, CentOS 5, should work on most modern Linux distros).&lt;br /&gt;&lt;br /&gt;My fetchmail run control file (.fetchmailrc):&lt;br /&gt;&lt;pre&gt; &lt;br /&gt; set syslog&lt;br /&gt; poll pop.gmail.com with proto POP3 and options no dns&lt;br /&gt;     user 'abc@gmail.com'&lt;br /&gt;     pass "WriteYourPasswordHere"&lt;br /&gt;     ssl &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Modification to sendmail's mc file (/etc/mail/sendmail.mc): &lt;br /&gt;&lt;pre&gt;&lt;br /&gt; define(`SMART_HOST',`smtp.gmail.com')dnl&lt;br /&gt; define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl&lt;br /&gt; define(`ESMTP_MAILER_ARGS', `TCP $h 587')dnl&lt;br /&gt; define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl&lt;br /&gt; FEATURE(`authinfo',`hash /etc/mail/auth/client-info')dnl&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;To generate the authinfo file used above, refer to &lt;br /&gt;&lt;a href="http://www.linuxha.com/other/sendmail/gmail.html"&gt;Linux, Sendmail and Gmail.com&lt;/a&gt;. It's very simple and you can done it within 3 minutes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-1240071333305833094?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/1240071333305833094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=1240071333305833094' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/1240071333305833094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/1240071333305833094'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2007/08/gmail-fetchmail-and-sendmail-on.html' title='Gmail, Fetchmail and Sendmail on UNIX/Linux'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-5916039463562925418</id><published>2007-07-23T18:10:00.001+08:00</published><updated>2008-04-14T11:15:09.893+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='amarok'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='centos'/><category scheme='http://www.blogger.com/atom/ns#' term='rhel'/><title type='text'>Install Amarok on CentOS5/RHEL5</title><content type='html'>&lt;em&gt;Now I prefer to build amarok by using SRPM from latest Fedora on CentOS/RHEL. Though I think the following method should still work, it's not the best solution. The first problem is that Fedora 6 is no longer supported and you get no security patches, the second is that some packages from Fedora 6 Extra repo conflicts with similar packages from RPMForge, which is a must for nearly all CentOS/RHEL systems.&lt;/em&gt;&lt;br /&gt;&lt;hr/&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Install livna and rpmforge repo.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Add fedora-extras.repo:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[fedora-extras]&lt;br /&gt;name=Fedora Extras 6 - i386&lt;br /&gt;#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/extras/6/i386/&lt;br /&gt;mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=extras-6&amp;amp;arch=i386&lt;br /&gt;gpgcheck=0&lt;br /&gt;enabled=1&lt;br /&gt;includepkgs=libnjb* libtunepimp* libifp* libmtp* libgpod* libofa* amarok* xine-lib wavpack&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You see, we should include necessary packages only.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Edit CentOS-Base.repo, add following lines:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# exclude libgpod 0.4.0 to install libgpod 0.4.2 from FC6 repo for Amarok&lt;br /&gt;exclude=libgpod&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Add fedora-updates.repo:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[fedora-updates]&lt;br /&gt;name=Fedora Core 6 - $basearch - Updates&lt;br /&gt;#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/updates/$releasever/$basearch/&lt;br /&gt;mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-fc6&amp;amp;arch=$basearch&lt;br /&gt;enabled=1&lt;br /&gt;gpgcheck=1&lt;br /&gt;gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora&lt;br /&gt;protect=0&lt;br /&gt;includepkgs=libnjb* libtunepimp* libifp* libmtp* libgpod* libofa* amarok*&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Edit rpmforge.repo, add:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;exclude=xine-lib&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-5916039463562925418?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/5916039463562925418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=5916039463562925418' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/5916039463562925418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/5916039463562925418'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2007/07/install-amarok-on-centos5rhel5.html' title='Install Amarok on CentOS5/RHEL5'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-3482821684600633576</id><published>2007-06-11T15:19:00.000+08:00</published><updated>2007-06-11T15:35:59.248+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='fedora core 6'/><title type='text'>Disable one user's remote login on Linux</title><content type='html'>I have to disable one particular user's remote login on Linux, sounds simple, but it costed me some time. The normal way is to change PAM settings, using pam_access.so to control user login. Following steps are tested on Red Hat Linuxes (Fedora, RHEL, CentOS, etc.)&lt;br /&gt;&lt;br /&gt;First you should enable pam_access.so:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Unlink "/etc/pam.d/system-auth", which is a link to "/etc/pam.d/system-auth-ac".&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Create a new "/etc/pam.d/system-auth", includes all settings from "/etc/pam.d/system-auth-ac", like this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;auth        include       system-auth-ac&lt;br /&gt;account     include       system-auth-ac&lt;br /&gt;password    include       system-auth-ac&lt;br /&gt;session     include       system-auth-ac  &lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Insert "pam_access.so":&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;auth        include       system-auth-ac&lt;br /&gt;account     required      pam_access.so&lt;br /&gt;account     include       system-auth-ac&lt;br /&gt;password    include       system-auth-ac&lt;br /&gt;session     include       system-auth-ac&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Now you can config pam_access.so by editing "/etc/security/access.conf", like this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;+ : player : LOCAL&lt;br /&gt;- : player : ALL&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;For more info, read "man access.conf".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-3482821684600633576?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/3482821684600633576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=3482821684600633576' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/3482821684600633576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/3482821684600633576'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2007/06/disable-one-users-remote-login-on-linux.html' title='Disable one user&apos;s remote login on Linux'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-1233411968766718546</id><published>2007-03-21T17:09:00.000+08:00</published><updated>2007-03-21T17:39:53.548+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='exim'/><category scheme='http://www.blogger.com/atom/ns#' term='gmail'/><category scheme='http://www.blogger.com/atom/ns#' term='fedora core 6'/><title type='text'>Use Exim with Gmail SMTP on Fedora</title><content type='html'>I've managed to setup Exim to send mail via Gmail SMTP on my laptop running Fedora Core 6. It was a bit tough work, for I can't find any precedent of using it on Fedora. Most talkings and guides regards Exim were based on Debian, and Fedora just doesn't have that config tools of Debian.&lt;br /&gt;&lt;br /&gt;If you just want to know what to do, skip this paragraph, which talks theoratical things. My work started by following &lt;a href="http://typo.submonkey.net/articles/2005/09/09/use-gmail-as-a-smart-host"&gt;Use Gmail as a Smart Host&lt;/a&gt;, but it doesn't work. Checked Exim's log I found that the connection to Gmail's SMTP server was rejected, because Exim had been trying to connect to port 25 of it. Add a line "port = 587" solved this problem. Another problem is about the TLS authentication, because Exim thought the server it were to connect is called "gmail-smtp.l.google.com", which was got through DNS lookup, rather than the "smtp.gmail.com" set by me. So in the configure file, you should use  "gmail-smtp.l.google.com" instead of "smtp.gmail.com."&lt;br /&gt;&lt;br /&gt;So what to do is: edit "/etc/exim/exim.conf", add:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# routers section&lt;br /&gt;send_via_gmail:&lt;br /&gt;  driver = manualroute&lt;br /&gt;  domains = ! +local_domains&lt;br /&gt;  transport = gmail_smtp&lt;br /&gt;  route_list = * gmail-smtp.l.google.com&lt;br /&gt;&lt;br /&gt;# transports section&lt;br /&gt;gmail_smtp:&lt;br /&gt;  driver = smtp&lt;br /&gt;  port = 587&lt;br /&gt;  hosts_require_auth = gmail-smtp.l.google.com&lt;br /&gt;  hosts_require_tls = gmail-smtp.l.google.com&lt;br /&gt;&lt;br /&gt;# authenticators section&lt;br /&gt;gmail_login:&lt;br /&gt;  driver = plaintext&lt;br /&gt;  public_name = LOGIN&lt;br /&gt;  client_send = : youraccount@gmail.com : yourpassword&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I do think Exim should write an official FAQ regards this problem.&lt;br /&gt;&lt;br /&gt;For some time, you may see such errors in Exim's log:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;SMTP timeout while connected to gmail-smtp.l.google.com [72.14.253.109] after EHLO yourhostname: Conne&lt;br /&gt;ction timed out&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This is network or Gmail's problem. Want you can do is just waiting or switch to another ISP and try.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-1233411968766718546?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/1233411968766718546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=1233411968766718546' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/1233411968766718546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/1233411968766718546'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2007/03/use-exim-with-gmail-smtp-on-fedora.html' title='Use Exim with Gmail SMTP on Fedora'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-7488200019935122376</id><published>2007-02-20T07:40:00.001+08:00</published><updated>2008-04-09T10:25:30.192+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nokia'/><category scheme='http://www.blogger.com/atom/ns#' term='phone'/><category scheme='http://www.blogger.com/atom/ns#' term='crash'/><category scheme='http://www.blogger.com/atom/ns#' term='symbian'/><title type='text'>S60 Phone Error: Nokia 5500, "App. Closed: Calendar" (Solved)</title><content type='html'>I've got a problem with my mobile phone, Nokia 5500 Sports, bought 3 months ago.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Phenomenon:&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Phone detail: Nokia 5500 Sports, 3 months old. Symbian OS v9.1 (S60 3rd Edition).&lt;br /&gt;More detail from Nokia forum: &lt;a href="http://www.forum.nokia.com/devices/5500"&gt;http://www.forum.nokia.com/devices/5500&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Can't open the &lt;i&gt;Calendar&lt;/i&gt; program. Before the &lt;i&gt;Calendar&lt;/i&gt;program's graphical user interface was fully displayed, it crashed, exited automatically and an error message "App. Closed: Calendar" displayed by the system&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Entries in Calendar: two daily morning alarm entries. 3 to 5 other appointments. Very few data&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Every morning at the time when the daily morning alarms are supposed to ring, the whole phone would HANG. No operation is possible except for the "Task Switch" (long press Menu key), which would bring up the task list but no further operation is possible. The only way to recover is to remove the battery and wait until the display faded out&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Memory usage of phone main memory: half. Memory usage of memory card: 1/3&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;I can think of NO particular operation that may be designated as the cause. Daily use is very common: phone, SMS, camera, web surfing, notes, etc.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Haven't synced with PC before. After this problem occured, I tried to sync it with my PC by using bluetooth or IrDA, everything was synced successfully except the Calendar&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Two custom themes downloaded from local operator's website&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;One or two custom rings transferred from my friend's MOTO phone by using bluetooth, 2 MONTHs AGO&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Installed 3rd party programs: Gmail client (Java)&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;2 weeks ago I've transferred 3 small Java games from another MOTO phone. But those games can't run on my phone &amp; I deleted them&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Phone software edition (by dailing &lt;b&gt;*#0000#&lt;/b&gt;): V 03.18 07-09-06 RM-86&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Fix attempt:&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Reboot the phone, no help&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Sync with PC, no help&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Remove those custom programs &amp;amp; themes, no help&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Reset to factory settings (by dialing &lt;b&gt;*#7780#&lt;/b&gt;), no help&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Whole phone backup, then format C: (by dialing &lt;b&gt;*#7370#&lt;/b&gt;). After formating, the &lt;i&gt;Calendar&lt;/i&gt; is OK, but after I restored my data by using Nokia's PC Suite, the &lt;i&gt;Calendar&lt;/i&gt; broken again&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Analysis:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;My first guess is that the &lt;i&gt;Calendar&lt;/i&gt;'s data files are corrupted, so the bet maybe delete those files to reset the program. But for this 3rd edition of Symbian OS, I can't figure out which files are its data files (after a long search on net)! I checked some of the folders under &lt;b&gt;C:\system\data&lt;/b&gt; but no good luck.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Solution:&lt;/b&gt;&lt;br /&gt;Format C: (by dialing &lt;b&gt;*#7370#&lt;/b&gt;), then sync my contacts back to phone. The trick is to avoid using whole system backup, which would keep the corrupted calendar data files.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;PS:&lt;/b&gt;&lt;br /&gt;I wanna try "&lt;a href="http://www.nokia.com/A4176089"&gt;Nokia Phone Software Update&lt;/a&gt;", but I've no cable now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-7488200019935122376?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/7488200019935122376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=7488200019935122376' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/7488200019935122376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/7488200019935122376'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2007/02/s60-phone-error-nokia-5500-app-closed.html' title='S60 Phone Error: Nokia 5500, &quot;App. Closed: Calendar&quot; (Solved)'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-116919944318288000</id><published>2007-01-19T17:15:00.000+08:00</published><updated>2007-01-19T17:37:23.190+08:00</updated><title type='text'>Configuration of Ad-hoc Wireless Network with Linux boxes</title><content type='html'>I've connected two Linux boxes (laptops) with wireless network without an AP.  This is called "Ad-hoc Mode". It's as simple as connecting a wired network with a switch or hub. For a full explanation, please read this: &lt;a href="http://en.wikipedia.org/wiki/Wireless_ad-hoc_network"&gt;http://en.wikipedia.org/wiki/Wireless_ad-hoc_network&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Set up your wirelss NIC first.  This varies upon different machine models.  Usually a web search would solve your problem. For my scenario (Intel IPW2200 card on Fedora with rpm.livna.org), a "yum install ipw2200-firmware" is enough.&lt;br /&gt;&lt;br /&gt;Then the only thing you need to config is your NIC's config file, usually named "ifcfg-eth?".  For Fedora it's in "/etc/sysconfig/network-scripts/".  Here's mine:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# Intel Corporation PRO/Wireless 2200BG Network Connection&lt;br /&gt;DEVICE=eth1&lt;br /&gt;ONBOOT=no&lt;br /&gt;BOOTPROTO=none&lt;br /&gt;TYPE=Wireless&lt;br /&gt;USERCTL=no&lt;br /&gt;IPV6INIT=no&lt;br /&gt;PEERDNS=yes&lt;br /&gt;NETMASK=255.255.255.0&lt;br /&gt;DHCP_HOSTNAME=&lt;br /&gt;IPADDR=192.168.0.2&lt;br /&gt;DOMAIN=&lt;br /&gt;HWADDR=&lt;br /&gt;CHANNEL=1&lt;br /&gt;MODE=Ad-Hoc&lt;br /&gt;RATE=Auto&lt;br /&gt;BROADCAST=192.168.0.255&lt;br /&gt;NETWORK=192.168.0.0&lt;br /&gt;ESSID=&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;To bring it up, use "ifup eth?".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-116919944318288000?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/116919944318288000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=116919944318288000' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/116919944318288000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/116919944318288000'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2007/01/configuration-of-ad-hoc-wireless.html' title='Configuration of Ad-hoc Wireless Network with Linux boxes'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-116919627725439541</id><published>2007-01-19T16:37:00.000+08:00</published><updated>2007-01-19T16:44:37.256+08:00</updated><title type='text'>Font Config of Gtk2 and Gnome2 Applications Outside Gnome2</title><content type='html'>I have switched from GNOME to KDE, and have been happy with it, since it's A LOT faster.  A small problem is those GNOME applications will appear in default theme/font style regardless your settings done in GNOME.  Perhaps they rely on some global environment settings that exists only when GNOME is loaded.  &lt;br /&gt;&lt;br /&gt;Here's a workaround from Ed Hurst: &lt;a href="http://ed.asisaid.com/gtk2.html"&gt;Gtk2 and Gnome2 Applications Outside Gnome2&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Quote:&lt;br /&gt;&lt;b&gt;Fonts&lt;/b&gt;: Create a config file in your home directory -- ~/.gtkrc-2.0. In this file, place one simple line:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;gtk-font-name = "Arial 12"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Theme&lt;/b&gt;: To get the color scheme you like, choose one that is available on your system -- /usr/share/themes in SuSE/Fedora -- and make sure it is indeed Gtk2, as not everything there is.  Edit ~/.gtkrc-2.0 and add a line like this one:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;include "~/.themes/Dirty-Ice/gtk-2.0/gtkrc"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Quote end.&lt;br /&gt;&lt;br /&gt;This is my ".gtkrc-2.0":&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;gtk-font-name = "Sans 12"&lt;br /&gt;include "/usr/share/themes/Simple/gtk-2.0/gtkrc"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Have fun with KDE!  :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-116919627725439541?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/116919627725439541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=116919627725439541' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/116919627725439541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/116919627725439541'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2007/01/font-config-of-gtk2-and-gnome2.html' title='Font Config of Gtk2 and Gnome2 Applications Outside Gnome2'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-116919728811721592</id><published>2007-01-19T03:48:00.000+08:00</published><updated>2007-01-19T17:03:50.816+08:00</updated><title type='text'>Switched from MSN Space</title><content type='html'>I switched from MSN Space to here.  Since MSN Space is extremely slow in Firefox on Linux, greatly reduced my ardor to write things with it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-116919728811721592?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/116919728811721592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=116919728811721592' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/116919728811721592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/116919728811721592'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2007/01/switched-from-msn-space.html' title='Switched from MSN Space'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-116073177398449843</id><published>2006-05-17T00:10:00.000+08:00</published><updated>2006-10-13T17:29:33.993+08:00</updated><title type='text'>Tips: Use VMplayer/VMware on Linux 2.6.16 Kernel</title><content type='html'>A patch is need. Refer to &lt;a href="http://tredosoft.com/node/9"&gt;VMware on Fedora Core 5&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-116073177398449843?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/116073177398449843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=116073177398449843' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/116073177398449843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/116073177398449843'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2006/05/tips-use-vmplayervmware-on-linux-2616.html' title='Tips: Use VMplayer/VMware on Linux 2.6.16 Kernel'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634563.post-110316973696864907</id><published>2004-12-16T12:01:00.000+08:00</published><updated>2007-01-19T16:37:02.786+08:00</updated><title type='text'>My new blog, on the road!</title><content type='html'>This blog is better than MSN Space in "free software" world in various ways: speed, compatibility, etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634563-110316973696864907?l=elliotli.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://elliotli.blogspot.com/feeds/110316973696864907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9634563&amp;postID=110316973696864907' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/110316973696864907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634563/posts/default/110316973696864907'/><link rel='alternate' type='text/html' href='http://elliotli.blogspot.com/2004/12/my-new-blog-on-road.html' title='My new blog, on the road!'/><author><name>Yan Li</name><uri>http://www.blogger.com/profile/02019884916024750698</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-3eY59mCUv6Y/TpJ6pyzh-kI/AAAAAAAAFtc/grcnbb0PQZ0/s220/yan-meego-avatar-full-size.png'/></author><thr:total>5</thr:total></entry></feed>
