目标:通过现有LINUX系统制作出USB引导盘,达到对系统起动更深一层理解的目的。
准备:rpm包两个:grub和filesystem, 2G U盘
制作步骤:
1、清空U盘MBR引导代码:(本机USB设备认作sdb)
dd if=/dev/zero of=/dev/sdb bs=1024 count=1
2、格式化成ext3格式
fdisk /dev/sdb #重新分区U盘并标记为可引导
partprobe /dev/sdb #使分区生效
mke2fs -j /dev/sdb1 #格式化成ext3文件系统
mount /dev/sdb1 /mnt #挂载到/mnt目录下
3、构建系统安装树(文件系统)
rpm -ivh --force --nodeps --root=/mnt filesystem- 2.4.0 -1.rpm
将本地系统起动必须的文件复制到U盘上:
cp /bin/* /mnt/bin/
cp /sbin/* /mnt/sbin/
cp -rf /lib/* /mnt/lib/
4、安装grub(grub可执行文件)
rpm -ivh --force --nodeps --root=/mnt grub-0.97-13.rpm
5、 cp /usr/bin/* /mnt/usr/bin/
cp /usr/bin/* /mnt/usr/sbin/
#cp /usr/lib/* /mnt/usr/lib/ #这个目录可以不拷,只是一些库用不了,但基本的已够了( 800M 左右)
cp -rf /boot/* /mnt/boot/
#/mnt/boot/目录下必须的文件: ./grub vmlinuz- 2.6.23 config-2.6.18-53.el5
# 其他的可以保留
#修改/mnt/boot/grub目录下的相应文件内容:
/mnt/boot/grub/device.map
内容:(hd0) /dev/sdb
/mnt/boot/grub/grub.conf
内容: default=0
timeout=5
title USB Linux Server ( 2.6.23 )
root (hd0,10)
#起动进入/bin/bash
kernel /boot/vmlinuz- 2.6.23 ro root=/dev/sdb1 rhgb quiet init=/bin/bash
initrd /initrd.img #一会新建,名字先定义好
6、复制fstab和mtab到U盘相应位置,修改其内容
cp /etc/fstab /mnt/etc/fstab
内容:/dev/sdb1 / ext3 defaults 1 1
cp /etc/mtab /mnt/etc/mtab
内容:/dev/sdb1 / ext3 rw 0 0
7、切换到U盘系统下,安装grub
chroot /mnt
mkdir /dev/sdb b 8 16
mkdir /dev/sdb1 b 8 17
grub-install /dev/sdb #grub安装
exit
8、建立initrd.img
#在EL5里只需usb_storage,在EL4里还要有sd-mod,scsi-mod,uhci_hcd,ehci_hcd
mkinitrd --with=usb_storage /mnt/boot/initrd.img `unam -r`
#注意顺序不能错
9、sync #同步下数据
10、umount /mnt
11、重启,用USB引导测试。
注:这个项目只是加深对系统启动进一步的了解,企业中并不一定用的上,因为不同的机器对U盘的识别不一样,在这台机器上是/dev/sda,可能另一台就是/dev/sdb,如果真出了问题,还是光盘更好一些。不过用类似的方法可以做一些自己的发布版……