主题:【原创】Install and boot linux on a USB external hard drive -- whoknows
Ok, ok, this is not a totally new stuff, we all know it. Here is only a record to show how I did it.
The story happened when we were doing unpacking and arranging our new apartment. A old, very old laptop was digged out from one of the boxes. The configuration is as following:
CPU: P-III 1GHz
Memory: 256M
HD: None
DVD-ROM
Floppy Drive
No support for USB boot (that's something different, right;) )
Fortunately I have a spare 80G hard disk and a hard drive enclosure. So I decided to make this old guy something useful - a Linux server for my car pc system develpment such that I do not have to do development on and mess up the target machine.
The Linux distributionn I chose is Ubuntu 6.06 LTS, which is downloanded from www.ubuntu.com, for its very good reputations and my pervious experiences with Ubuntu. Installation is very simple. Just follow the on screen instructions is good.
After installation, a boot cd will be created to boot the system since this old guy does not support boot via USB. After search using www.google.com, I got some very good references, which will be listed in the reference part below. Here is what is needed and how to make the boot cd.
The only necessary software package that one may have to install is syslinux 3.11. I use another computer that have the exactly same Ubuntu system installed to make/get another two important pieces: the linux kernel image and the ramdisk image. Following is a step-list of how to do to reach the point the old guy is booted:
(1) install the Ubuntu to the external hard drive through USB. In my case is /dev/sda1
(2) install the syslinux package. It can be installed via the Synaptic Package Manager automatically or downloaded from the syslinux.zytor.com.
(3) make the initial ramdisk you will need. The initial ramdisk wil at least include the USB drivers that will allow you to mount your USB external hard drive as your root file system after your kernel is started.
Using my Ubuntu, make such an initial ramdisk is just a piece of cake:
(a) edit the /etc/mkinitramfs/modules to add following lines:
ehci-hcd
ohci-hcd
uhci-hcd
usb-storage
scsi-mod
sd_mod
(b) make the new ramdisk image by running following command
mkinitramfs -o /boot/initrd_usb.img /lib/modules/<linux version>
For me, the command is like: mkinitramfs -o /boot/initrd_usb.img /lib/modules/2.6.15-23-386
For other Linux distributions, there are other means of create the initial ramdisk, yeah, even manually. I will discuss this in another post, maybe.
(4) Make the iso image for the boot cd
(a) create a directory to hold all the files that will be used to create the iso image, under my home directory.
$ mkdir bootcd
(b) copy the created initial ramdisk image to bootcd
$ cp /boot/initrd_usb.img bootcd/
(c) copy the desired linux kernel image to bootcd. For me, the command looks like
$ cp /boot/vmlinuz-2.6.15-23-386 /bootcd/linux
(d) copy the isolinux.bin of syslinux to bootcd directory. For me, the command looks like
$ cp /usr/lib/syslinux/isolinux.bin bootcd/
(e) create the isolinux.cfg file in the bootcd directory, which is the configuration fiile for the isolinux bootloader. Put following lines in the isolinux.cfg file:
DEFAULT linux initrd=<initial ramdisk image name> ro root=<your root device>
where <initial ramdisk image> is the name of the initial ramdisk image you want use. In my case, it is initrd_usg.img. The <your root device> is the device that you have installed your Linux. For me, it is /dev/sda1.
Thus my isolinux.cfg file looks like:
DEFAULT linux initrd=initrd_usb.img ro root=/dev/sda1
(f) create an iso image using following command
$ mkisofs -o bootcd.iso -b ioslinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -J -hide-rr-removed -R bootcd/
(g) burn the bood cd using the image
(5) Test it. And the external disk can be used. The boot cd and the external hard drive can be used anywhere as long as the boot from cd is supported and USB port presents.
Notes: The approach here can be used not only for the Ubuntu system but also any other linux distributions, as long as you can create the right initial ramdisk image and get the desired kernel image.
Enjoy:)
References:
[1] http://ubuntuforums.org/archive/index.php/t-19428.html
[2] http://ubuntuforums.org/showthread.php?t=80811
[3] http://www.freeos.com/guides/lsst/
[4] http://www-128.ibm.com/developerworks/linux/library/l-initrd.html?ca=dgr-lnxw01LinuxInitialRam
[5] http://librenix.com/?page=USB%20Drive
[6] http://yolinux.com/TUTORIALS/LinuxTutorialRecoveryAndBootDisk.html
[7] http://www.geocities.com/potato.geo/bootlinuxcd.html
and many many others, and great thanks to them.
- 相关回复 上下关系4
🙂【原创】Install and boot linux on a USB external hard drive
🙂逮住牛人问个问题:如何修改/boot/initrd_usb.img中的内容啊 wsxx 字154 2006-08-14 06:00:41
🙂内存映像是可以用mount挂的,需要一个module 1 kavin 字0 2006-09-16 06:12:37
🙂一点建议 1 whoknows 字1303 2006-08-15 14:10:01