EEEBuntu on Aspire One SD Card Booting
by admin on Feb.10, 2009, under Linux, Netbooks
One draw back the Aspire One has is that BIOS lacks an option to boot directly to the SD slots. I was disappointed when I saw this, as other UMPCs such as the EEE PC allow this. I really think Acer should update the BIOS to allow this, but as yet it remains unsupported. There are however workarounds. I had been planning on trying to use grub to chain load an OS install on the SD drive as was doing some research on this.
I then came across this great article here about installing EEEBuntu on the Acer Aspire One, specifically installing it onto an SD card.
Gary Rennie did a great on on the original article describing step by step how to make the initrd and giving an excellent review of EEEBuntu, I definitely recommend looking at his post for the overall procedure.
I had not previously heard of EEEbuntu and it certainly looked interesting, however the article’s method had one major draw back: It directs you to first install EEEBuntu onto the internal 8GB drive, then using it build a new initrd to use which contains the drivers allowing booting to the SD card, then actually installing it again onto the SD card.
I wanted to keep my existing install (Linpus at the time, now Solaris) on the 8GB drive and thought installing the same OS onto both the internal drive and an SD card was superfluous. I am sure a lot of users would prefer not to have to erase their existing installs in order to install EEEBuntu as an intermediary step.
To work around this I downloaded the EEEBuntu .iso and then installed it as a virtual machine using Virtualbox from Sun Microsystems. (I did this on my desktop system, not the Aspire One.) This was the first time I had used Virtualbox and I was quite impressed with it, though please note you do have to compile the kernel module for it to work (see the install documentation). It was very easy to set up and in a few minutes I had a fully running EEEBuntu Virtual Machine.
It then literally took minutes to create the new initrd with the drivers built in for the SD card. I then simply copied the new initrd and EEEBuntu kernel over to my /boot directory on the Aspire One. I then modified grub, adding an entry that would load them and point to the SD card. I used the UUID of the SD card to specify the root argument in the grub entry, for example:
title SD-Card EEEbuntu 8.10, kernel 2.6.27-8-eeepc SDHC CARD
uuid 736f6f5a-28c8-4848-9b97-04342ca875b2
kernel /boot/vmlinuz-2.6.27-8-eeepc root=UUID=03399adb-ac83-4f13-a0be-5defe86c9506 ro clocksource=hpet
initrd /boot/initrd.img-2.6.27-8-eeepc
quiet
Your UUID will obviously be different, and can be discovered by running:
Callandor:/ # ls -lha /dev/disk/by-uuid/
Once the above was done I installed EEEBuntu by attaching a CD drive with a USD converter. the installer sees the SD card and you can partition it as you like and install directly to it. It will not however be bootable without using the modified initrd as described above.
If you have set everything up right you will boot the kernel and initrd from your /boot directory on your internal drive, and once the kernel loads it will find the root directory on the SD card, and booting will continue.
I found the performance to be quite acceptable using a 16GB Patriot class 6 SDHC card. Although slightly less snappy than running from the SSD drive, it is certainly quite usable.
I found EEEBuntu to work near flawlessly on the Aspire One. Networking, sound, OSD controls, etc. all worked perfectly. Suspend mode does not however work and I’ll investigate this and post the solution.
You can now use the same methods above to install other OSes on multiple SD cards, or if you have a 16GB or larger card perhaps several on the same card.
I am currently running Solaris 10 Developers Edition on the 8GB SDD with EEEBuntu on the SD card and am extremely happy with this set up.
Gary Rennie did a great on on the original article describing step by step how to make the initrd and giving an excellent review of EEEBuntu, I definitely recommend looking at his post for the overall procedure.
Leave a Reply
You must be logged in to post a comment.
February 11th, 2009 on 6:08 pm
“u on Aspire One SD Card Booting | Mine the Harvest, This has been a great read and a help; especially in the current economic climate. Added to my feed.
February 12th, 2009 on 12:12 pm
Hi there,
I am glad you found it interesting and thanks for subscribing!
Pete
February 13th, 2009 on 8:42 pm
[…] to Grub to boot to it. This works extremely well, and I can dual boot to either OS just fine. (See this post for more details on how to set this […]
April 22nd, 2009 on 5:55 pm
Great article. Sadly, I think it’s way over my head. I want to be able to stick an SD into my netbook, and have it boot right into Firefox, to a specific URL. Looks like my Aspire One will be too much of a pain, so I will buy an EEE. But would you consider a quick job helping me with this? Email me and i can give you details.
May 13th, 2009 on 10:14 pm
Hi Scott,
I emailed you back regarding this – Thanks for visiting my blog. Have you made any progress on getting an EEEPC or an Aspire One and getting it set up as you need? Once you get the OS installed, it should be a simple matter of launching Firefox when it boot and going to whatever default page you want. Is this to be used as a kiosk or for a trade show, or educational use or some such?
You should be able to use either, if you need help setting up the Aspire One to boot to an SD card just let me know – I may be able to provide you with the initrd file you need for EEEBuntu if you choose to go that route.
Pete
May 26th, 2009 on 9:04 pm
Hi there, I tried everything by now. Made a slightly different installation: used unetbooting to generate a installation disk on a usb pen, and then using a SDHC in an adapter, i made the installation. After that I started to have some problems. First it was grub who needed some modifications, and now I’m having a message that indicates that the system is looking for things in on the wrong place. When I boot from the SDHC the following messages appear:
/scripts/init-premount
Done.
Begin: Mounting root file system… …
/init: line 217: syntax error: 0x96adb0a2-112b-…-ccea179a6afa
and then i have a kernel panic…
(the 0x96… is my SDHC uuid)
here are the steps:
* generate an install usb disk with eeeBuntu
* install eeeBuntu into a SDHC using the usb adapter
* boot from SDHC using usb adapter
* generate net initrd.img… with new modules
* mount SSD into eeeBuntu
* copy initrd.img to SSD (//boot/)
* edit grub on SSD (a bit tricky)
* i also copied the kernel to the SSD /boot just to make sure i was not doing anything wrong. it starts the same way as if it is on the SDHC (of course I had to add 2 entries to grub to start with both options)
what do you think i done wrong?
May 27th, 2009 on 3:47 pm
Hi there,
I think you are about 99% of the way there and I suspect perhaps the UUID for the root= argument may be the culprit. It is a bit odd the error is “/init: line 217: syntax error” though. (Normally if the UUID is incorrect you get a message to the effect that the device is not found, etc). Can you please post the output of your UUID mapping from ls -lha /dev/disk/by-uuid/ and also post the relevant stanzas from your grub menu.lst? I am sure we can get this working for you – you are on the very verge!
Cheers,
Pete
May 31st, 2009 on 7:11 pm
Hello,
In fact there was some kind of error in my uuid. I solved it using a simply trick: just started the eeebuntu using the usb adaptor, then copied the grub lines to the Linpus grub and changed it. It worked from then on!
Meanwhile I’m trying to install Linux4One, another Ubuntu release, this time specifically for AAO. It uses a 8.04 Ubuntu LTS version (which is good for 3 years support), and the Netbook Remix desktop. Let’s see if it works as fine as the great eeeBuntu!
It would be nice if we could also run M$ Window$ from an SD card. Of course you ask me “and why would you want to do that?”… Just because the hardware manufacturers keep forgetting Linux: Garmin, Logitech, Canon and Nokia (GPS, remote control, camera and mobile phone) provided software don’t work in Linux. A shame I’d say.
August 6th, 2009 on 1:30 pm
Hi: Thanks for taking time to write the article. I just had a quick question: My aspire one came with the Windows XP installed on the internal 8 GB card, which I need to keep. Can I somehow boot Linux, installed on the external 8 GB card and keep the Windows XP on the internal 8GB card?
Many, many thanks,
serio.
August 6th, 2009 on 4:16 pm
Hi there,
Thanks for stopping by. In your case, getting Linux to boot from your existing XP / NTFS partition is going to take a bit of work, but it should be possible. The problem is that the Linux kernel must reside on the primary (not SD card) drive, and also you must use a boot loader such as Grub and it must be able to find and load the kernel and initrd. It would be best to carve out an ext3 partition from your existing NTFS internal drive to use for this purpose.
I would recommend this:
1) Make a full backup of you existing XP install to an external USB hard drive. The simplest way to do that is hook an an external drive and boot to a Linux Live CD (via a separately attached USB CD ROM). From the Live CD, simply use ddrescue or dd_rescue to image the drive, such as: #ddrescue /dev/sda /dev/sdb (verify your drive designations first as it will NOT ask for any confirmation.)
2) Now use a partitioning utility such as gpartd to shrink the existing NTFS partition. Ideally you want to carve out some space at the start of the partition, a few hundred megs will do fine.
3) Format the newly created boot partition as ext3
4) Install Grub into the MBR of /dev/sda. There are a few ways you can do this. The easiest way will be to just use a CD install of Linux to install the OS to your SD card, and when it asks you if / where you want to install Grub to, ensure that /dev/sda is selected. The installer should then put Grub onto /dev/sda for you. However it will still not work yet as the kernel and initrd have been installed to the SD card, and must be moved to the new partition you made on the internal hard drive.
5) Copy over the kernel (vmlinz) and inint.rd files from the Linux install on the SD card to the ext3 boot partition you created on the internal drive.
6) Update the grub.conf or menu.lst file to point to the sd drive to mount the root file system of your Linux install (see the original blog post for more on this.)
7) Note: The initrd you copy to your internal drive may lack the drivers it needs to access the SD card slot, in which case the kernel will load and then hang when it tries to start the root file system. In this case you will need to build in the drivers needed for the SD card, please see the links from the blog post for more help with this.
So the bottom line is yes, it can be done – but it is likely going to take a few hours work.
Unless you REALLY need Windows on the primary drive, you might find it a lot easier to just nuke it and run Linux natively on the internal drive. Is there some reason you need to stay with Windows on your netbook?
Cheers and good luck!
Pete
September 30th, 2009 on 5:36 am
Have you managed to fix the suspend issue on the aspire one with eeebuntu ?
I’m happily using eebuntu install on to the SSD on my aspire one but could really do with being able to use suspend properly.
October 9th, 2009 on 5:45 pm
Hi there,
You know – you would certainly think I would have gotten around to fixing that suspend issue, but I just never seemed to have done that. I ended up playing around with OpenSolaris on the Aspire and dual boot it and EEEBuntu, so I never really took the next steps to resolve that issue – though now that you mention it, it truly is annoying. Though I see now that there is a new version of EEEBuntu out as well, and I highly suspect it has been resolved. Unfortunately it does not appear as though there is an easy upgrade path from the old version, so I might just do a fresh install of the new version.
Cheers,