Sunday, October 18, 2009

Install a 2nd SSD to my EeePC 4G

After waiting for almost 3 months, I have finally received the 16 GB Asus Phison SSD my brother had promised to send me (together with a 1GB DDRII RAM). These are the remains after my brother had upgraded the 16 GB SSD of his 901 to a 64 GB Patriot SSD, and RAM to 2 GB.

I have been reading in the EeeUser Forum that default Xandros of EeePC 4G is not compatible with a 2nd SSD. But out of my surprise, I just plug it in and it runs - no hardware modification required. The 1st SSD (4GB SiliconMotion SM223AC) remains the IDE master, and the new 16 GB Phison SSD becomes the IDE slave.


So apparently, there are different software and hardware versions of EeePC 4G, some that needs the FLASH_CON pin 26 modification for to insert a 2nd SSD, while the earliest models (like the one I bought) don't need this.

For your information, my 4G was bought on the 1st day EeePC started to be sold in Hong Kong. Its serial number is:
701-W0004
MB REV 701
S/N: 7A0AAQ008175
VN: 7569

Now that I have a 16 GB 2nd SSD, I can use it as permanent home for default Xandros - because for some months already, I have my working copy of default Xandros in SD card (boot from USB), while the 1st SSD is retained for experiments. Also, I have been thinking for long time to install also win2k in my EeePC (this is the reason why initially I worked on booting Xandros from USB).

So my new 16 GB 2nd SSD will be the home of win2k, default Xandros, and the HOME partition. And to do this, I booted with Pupeee and run GParted to repartition the 2nd SSD, then dd the working default Xandros partition (no union filesystem) from the SD card to the 2nd SSD.
dd if=/dev/sda1 of=/dev/hdd2 conv=notrunc,noerror,sync bs=4k
Please note that when I booted from Pupeee, the system sees the 2nd SSD as /dev/hdd, and the SD card as /dev/sda.

Then I need to change the volume label of /dev/hdd2, and also edit /boot/grub/menu.lst to specify the correct root partition and the volume label (because I am using an custom initramfs image that mounts the root partition by seeking volume label). This time, I chose "XANDROS" as the volume label of this root partition.
e2label /dev/hdd2 XANDROS
But before this system can boot, I still need to install grub to the MBR of the 2nd SSD. Then I can set in BIOS the 2nd SSD as 1st boot device. And for this, I open a terminal and run the grub command:
sudo bash
grub
Then, in the grub shell, I run these commands:
grub> find /boot/grub/stage1
grub> root (hd1,1)
grub> setup (hd1)
Now I have my working copy of default Xandros up and running.

Edit fastinit to avoid mounting 2nd SSD as home partition

Currently, I have EeePC Linux version 901 on the 1st SSD and this version will automatically mount any Linux partition with the volume label HOME as /home. Of course, this is not desirable because I don't want my experiments to mess up my working copy of default Xandros. So I disable this in the boot script /sbin/fastinit.

To do this, you can either hexedit /sbin/fastinit (with khexedit) to remove the line "/bin/mount -onoatime -L HOME /home > /dev/null" [NB. Replace with equal number of blanks], or simply run this sed command in a root terminal:
sudo bash
sed -i 's@/bin/mount -onoatime -L HOME /home > /dev/null 2>&1@ @' /sbin/fastinit
So after almost five months of living in SD, my default Xandros finally find a permanent home in the new 16 GB SSD.