How to make the Acer Aspire One faster 10
Using an SD card to run Ubuntu
The Acer Aspire One 110 is notorious for its small and sluggish SSD disk (SSDPAMM0008G1EA). Firefox is so slow it seems web pages will never finish loading and you'd better not be in a hurry when starting the package manager or setiing up Ubuntu updates. I wanted to find a solution that wouldn't involve tearing the motherboard apart and I found one. It cost me about $40 and a couple of hours of work.
The idea is to use a fast SD card as the primary drive of the laptop by installing Ubuntu on it, the SSD becomes an extra storage device. As you will see below, the SD card shows more balanced performances than the SSD and significantly faster write speeds.
I chose to buy the Transcend 16 GB SDHC Class 6 memory card. Note that it is sold with an USB adapter that comes very handy when installing the OS on the AAO.
Setup
There is just one problem with the setup: the bios on the Acer Aspire One is unable to boot from the SD card. That means that you can't just setup Ubuntu on it and restart. The workaround is to let the laptop boot from the SSD: the bios reads the MBR and starts grub on the SSD. The initrd kernel image is also on the SSD and that kernel is capable of mounting the SD card. Only after this is done can the regular boot process resume and the actual kernel get loaded from the SD card.
I followed the very good installation instructions I found on osnews.com. They are very detailed, I followed them point by point and I didn't run into any issue. Here is a slightly modified list of steps that goes straight to the point:
- Install Ubuntu on the SSD if it's not already there. In my case it was there so I could skip that step. I found the version of linux present on the SSD doesn't really matter, it will just be used for its /boot directory and grub.
- Boot from a USB drive where you can Install Ubuntu from. I used the 9.04 alternate CD. I had plugged it in the USB slot on the right of the AAO and I had the SD card in the USB adapter on the left of the AAO. It might be possible to just stick the SD card directly on the left SD slot on the left, I think the 9.04 install USB key would be able to find it but I haven't tried and you will need the adapter on step 4 anyway.
- Proceed with the actual installation to the SD card from the USB drive.
- Reboot from the newly installed SD card (inside the USB adapter: there's no way around this for this step). Mount the old SSD on /ssd
mount -t ext2 /dev/sda1 /ssd
- Now you must reconfigure how initrd.img files are generated. The goal here is to include support for the SD card reader in the initrd. Without it, you won't be able to access the card from grub. Edit /etc/initramfs-tools/modules on the SSD card and add those 4 lines:
mmc_core mmc_block sdhci sdhci-pci
- Regenerate the latest initrd kernel image and copy it inside of the SSD /boot directory.
update-initramfs -u cp /boot/initrd.img-2.6.28-12-generic /ssd/boot
- Edit /ssd/boot/grub/menu.lst on the SSD drive. There you will create a grub menu entry that points at a kernel on the SD card. Replace the UUID below with yours.
title Ubuntu 9.04, kernel 2.6.28-12-generic-SDCard uuid 5ce02d2f-1fee-4cc5-8c7d-bde5f19b26b8 kernel /boot/vmlinuz-2.6.28-12-generic root=UUID=5ce02d2f-1fee-4cc5-8c7d-bde5f19b26b8 ro elevator=noop quiet splash initrd /boot/initrd.img-2.6.28-12-generic quiet
Note that the UUID on the "kernel" line is the UUID of the SD card. So in the /boot directory of the SD card, there must be a vmlinuz file that matches the initrd file from the SSD card.
That's it, you can reboot one last time, select "Ubuntu 9.04, kernel 2.6.28-12-generic-SDCard" from the grub menu and if the gods are with you, you will load the OS from the SD card. At this point you will enjoy an Ubuntu setup that will feel twice as fast as the old one with 3 times more storage space.
Beware: anytime you get a new kernel, by default it's only installed on the SD card but you need it on the SSD drive. So don't forget to copy the new initrd.img to /ssd/boot and to update /ssd/boot/grub/menu.lst whenever needed or you won't be able to use the new kernel.
Disk performance measures
Now that is just a feeling at this point. Here is how to back it with concrete numbers. I found the dd test page very helpful for this experiment. One can easily measure the disk read speed with hdparm but that ells you nothing about the write speed.
$ hdparm -tT /dev/mmcblk0p1 /dev/mmcblk0p1: Timing cached reads: 1144 MB in 2.00 seconds = 572.07 MB/sec Timing buffered disk reads: 40 MB in 3.16 seconds = 12.67 MB/sec
So the best way to get both read and write speed is the following:
To measure the sequential write speed, write a large file to disk while measuring the time it takes. Note that the sync command is essential to guarantee all the data gets written instead of staying in some cache. Do not trust the throughput reported by dd, instead divide the size of the file by the duration reported by "time". For example, here is the test on the SD card (it generates a 160 MB file):
$ time sh -c "dd if=/dev/zero of=ddfile count=20000 bs=8k && sync" 20000+0 records in 20000+0 records out 163840000 bytes (164 MB) copied, 13.4757 s, 12.2 MB/s real 0m18.885s user 0m0.020s sys 0m0.640s
To measure the read speed, read the same large file from disk:
$ time dd if=ddfile of=/dev/null bs=8k 20000+0 records in 20000+0 records out 163840000 bytes (164 MB) copied, 9.96247 s, 16.4 MB/s real 0m9.974s user 0m0.016s sys 0m0.588s
I ran that test on the SD card, on the SSD and on another Acer Aspire One (AOA 150) with a regular hard disk.
| SD Card |
SSD | AOA150 | |
| Read speed (MB/s) | 16.4 | 26.5 | 62.2 |
| Write speed (MB/s) | 8.42 | 2.31 | 51.6 |
As you can see although the SD read speed is just 60% of the SSD read speed, the write speed is almost 4 times higher on the SD card and for normal usage of a laptop that write speed increase changes everything. It worked so well, I decided to use Gnome on this machine and it appears to go twice as fast as Xfce was going on the SSD. Not that the Acer Apire One got magically turned into a Ferrari but with that SD card, it became a pretty decent Toyota!

Thanks or this posting, cause it helped me to understand why the installation of Ubuntu on the SD-Card in an Aspire One didn't work.
But I think, that the solution with the double boot-directory is too complex.
It seems to me, that you use one partition for the system including /boot on it. I think the better way is to use a second partition only for /boot on the internal SSD. The 2nd partition is mounted in the filesystem at /boot at a later state of the boot-process (and there is only an empty /boot as mount-point on the partition with the root-fs self).
This is the way Ubuntu uses to mount a root-partition witch is located on a lvm. The system can access the lvm with the correspondig modules in the kernel. So the /boot with the initrd is in an accessible partition and afterwards the root-partition on the lvm is mounted.
With this solution the initrd in /boot will be updated automatically from the system (cause there is only one /boot and one set of initrds).
Why not keep the system on the SSD, with /var/log, /var/tmp, /tmp etc on tmpfs? That should boot faster because of the higher read speeds. (Installing upgrades or new software will be slow, but that's rarely urgent.)
Then put /home onto the SDHC card - most of the stuff you are writing should go there.
I've configured an 8GB SD card partitions (30MB/s read-write = 200x speed) this way:
/ = 8GB SSD ext4 of Aspire One /var = 1GB ext4 of SD card /usr = 3.5GB ext4 of SD card /home = 3GB ext4 of SD card = 500MB of SD card
I don't know if this is the best configuration, but I only used normal installation and I defined special partitions during Ubuntu Installation.
The computer is working very well now, I'ts like a new faster computer.
Thanks! I used this as the basis for my install but made a few changes:
* Note, I'm writing this after the fact, so I may have missed a step, but should give you the basis. I used Unbuntu derivative linux4one but should be the same with straight ubuntu netbook. *
Grub supports reading from fat32 so decided to make it dual boot with minimal change to the windows ssd
Boot with linux4one live usb (but ubuntu netbook should have worked just as well) and switched to root shell:
Ran /usr/sbin/update-initramfs.distrib -u (note update-initamfs will tell you it is disabled on a live boot disk)
Copy initrd image reported from update-initramfs to /ssd/boot/initrd.img, example:
Rebooted linux4one usb and executed an install to the sdcard (/dev/mmcblk0p1)
Reboot and get grub menu to select windows or linux
Well, there was a few more steps of trial and error, but this is how I would do it a second time ;)
Other notes - I ended up changing the root from /dev/mmc.... to the uuid of the SD card for a extra stability and am debating symlinking /boot to /ssd/boot so updates automatically update the initramfs on the windows drive...
References:
here is the simplest way to do so http://om26er.blogspot.com/2009/08/install-ubuntu-on-acer-aspire-one-sd.html
Hi, thanks for the guide - works fine (Ubuntu 9.04)
but now I cannot get the AspireOne to suspend - it blocks with a black screen with cursor in upper left corner blinking.. and have to turn off power forcibly.. Any ideas how to remedy this?
Also, sometimes a different partition on the same SD card, where I have some icons, mounts as the very last on gnome-desktop, so I have to logoff/logon to show the icons.. Pointers about this problem would be great too..
Thanks..
Everybody knows that today's cars implement computer technology, it is not surprising anymore.
The most simplest and easy way: run live session of ubuntu and start installation with 100mb boot partition on SSD and /root on memory card. Let the setup be done in background and type gksudo gedit /etc/initramfs-tools and add these in a new line
mmc_core mmc_block sdhci sdhci-pci
and type sudo mkinitramfs -o test open /home directory and see there is a 'test' file. wait for the setup to complete after its completed click on 'continue testing' button and open the 100mb partition from nautilus and see for initrd.img.... copy that name to the 'test' file. now open nautilus as super user by typing gksudo nautilus and replace the genuine file. and reboot when ubuntu starts just add those modules to the /etc/initramfs-tools so that your system don't end up in a non bootable state upon initramfs update. Thanx
Thx for the guide, this was extremely helpful. I have tried to do some research but can not make suspend work, it hangs on a blank screen as described in an earlier comment. Any help would be much appreciated!
the problem you are facing is also the same case for me and its a known bug in ubuntu https://bugs.launchpad.net/ubuntu/+source/linux/+bug/464712