There had to be a better way.
Together with a colleague of mine, I decided to figure out whether there could be an easier way to install Ubuntu on a USB device.
I found a way of doing it in a much simpler way... without creating the separate partition to store the LiveCD:
A couple of assumptions to take into account when going through this manual:
- My computer (Dell D820 laptop) has 1 internal disk, devided into 3 partitions (dell utility -- windows -- Ubuntu 8.04)
- Just one USB device (in my case a 250GB harddisk
- BIOS configured to enable boot from internal HDD, CD/DVD and USB Storage device
(I didn't take screenshots, so I will be explaining a lot about the screens... It looks like a lot of work, but trust me: it is not, and it really is easy:-)
- Insert the LiveCD into your computer;
- Connect your USB device;
- Boot your computer from the liveCD;
- Once Ubuntu is started, go to System -- Administration -- Partition Manager
This will open the Partion Editor. Select your USB device and delete all partitions on it. Click Apply and exit Partition Editor;
- Double Click the Install Icon. This will start the Installer;
- The Welcome Screen is shown. Choose your language and click Forward;
- Select your Time Zone and click Forward;
- Choose your Keyboard Layout and click Forward;
- The partitioner will be started, and you will be given the choice where to install Ubuntu. Choose Guided -- Use entire disk, selecting your USB device (this will most likely be /dev/sdb, don't choose /dev/sdb1!);
- The next sceen you will give your username/password information. Provide the required info and hit Forward;
- If there is anything to migrate from other installations on your computer (most likely not), do whatever you want, and click Forward;
- The next screen is important -- It is titled: "Ready to Install". Be careful here: before clicking on Forward, make sure you click on the "Advanced" Button!
This will open a new screen, giving you the option whether and where to install the bootloader. Select your USB device (in my case it was /dev/sdb) to install the bootloader to;
Exit this screen and click on Forward in the "Ready to Install" screen, which will be shown;
- The installation will be started now. Just be patient, grab a cup of coffee and come back 15 minutes later, your installation will be more or less finished by then.
So you have finished the installation. However, when you will be restarting your system from USB, you will find out that the partition you just installed Ubuntu to cannot be mounted.
Here comes the trick:
- Once the installation is finished, reboot your PC (this is the safest) from your LiveCD, with your USB device connected;
- Once started, open up a terminal (Applications -- Accessories -- Terminal);
- In the Terminal, type: sudo -i (which will give you root privileges, so be careful from now on!);
- Change directories to /media/disk/boot/grub -- This will take you to the "/boot/grub" directory on the USB device;
- open menu.lst with vi (make a backup first!)
- Go to line 130 (or somewhere in that area).
You will find a line looking like:
## ## End Default options ##
And underneath it you will find three entries pointing to your Ubuntu you just installed:
title Ubuntu 8.04, kernel 2.6.24-16-generic
(the above 5 lines repeat 3 times with slight differences)
- The magic trick is to change (hd1,0) into (hd0,0) for all these three entries.
Why? Booting from USB device makes your USB device hd0, in stead of hd1 at time of installation.
- Search for the line starting with "# groot=(hd1,0)" and change (hd1,0) to (hd0,0) -- Don't delete the # at te beginning of this line!
- Once you did this, you can optionally remove the remaining of the file
(everything underneath ### END DEBIAN AUTOMATIC KERNELS LIST);
- Save the file, make sure it is owned by root:ubuntu (chgrp ubuntu menu.* will do)
- Edit device.map (in the same directory) and change the mapping of hd0 to /dev/sdb.
- Reboot your machine, from USB, choose the Ubuntu installation from the Boot Loader and you are one happy person.
I guess that is it. If I missed something, please comment.