1.你必须有一个喜欢的Linux系统,然后插入usb硬盘
2.需要安装两个工具:mkinitrd,rsync。debian用户apt-get install initrd-tools rsync。用其他发行版的自己看着办。
3.fdisk /dev/sda(以下都假设是sda),假设sda1为主分区,sda2为交换分区
4.mkfs.reiserfs /dev/sda1,用你喜欢的文件系统创建分区
5.mkswap /dev/sda2,创建交换分区
6.mount /dev/sda1 /mnt/mp(假设/mnt/mp已经存在),把分区挂上,准备把本机的系统传送过去。
7.rsync -av --exclude "/mnt" --exclude "/proc" / /mnt/mp,开始传送系统,注意要避开/proc和/mnt。当然你用cp -a也可以。
8.mkdir /mnt/mp/proc /mnt/mp/mnt,虽然避开了/mnt和/proc,但是别忘了创建这两个挂载点。
9.把grub/lilo安装到/dev/sda上面。
10.vi /dev/sda1/etc/fstab,按照新的分区情况调整fstab。
11.vi /etc/mkinitrd/modules,加上以下模块:
usbcore
scsi_mod
sd_mod
usb-storage
uhci-hcd
ehci-hcd
usbhid
12.vi /etc/mkinitrd/mkinitrd.conf,把DELAY=0改成DELAY=10(按照实际情况调整,偶觉得一般>3秒就行了)
13.mkinitrd -o lv.img 2.6.10-1-686(这里用当前的版本号)
14.mv lv.img /mnt/mp/boot/initrd.img-2.6.10-1-686-usb
15.vi /mnt/mp/boot/grub/menu.lst,加上一个新的启动选项,其中initrd的那一项用这个新生成的。
16.搞定,重启机器,从usb启动。
原理:整个过程前11步都在讲怎么把当前系统迁移到新的硬盘上面。后面才是制作从USB启动的关键,也就是生成合适的initrd.img。以前偶是自己用debian的kernel-image里面的initrd改的,现在发现原来用mkinitrd也可以产生符合偶需求的映象。