U盘安装多个Linux系统的方法

[ 2008年11月20日 ]
Tags:  Linux  
我一直使用光盘安装系统,但是光盘介质容易损坏,而且系统一旦升级,又要重新刻过光盘。
上个星期,看到一篇文章,介绍使用U盘安装系统,受到启发,开始制作自己的多功能U盘。

工作环境:Linux及FreeBSD
工具:U盘一个(大于64M)

1、格式化U盘:
因为想在windows下也能使用U盘,所以把U盘格式成FAT32格式

进入Linux,格式化U盘

#mkfs.vfat /dev/sda1

2、在U盘上安装grub:

#grub --no-floppy

grub>root (hd1,0)

grub>setup (hd1)

......

grub>quit

#mkdir /mnt/usb
#mount /dev/sda1 /mnt/usb
#mkdir -p /mnt/usb/boot/{grub,kernel,image}
#cp /boot/grub/stage{1,2} /mnt/usb/boot/grub
#cp /boot/grub/fat_stage1_5 /mnt/usb/boot/grub

3、加入Ubuntu 8.04启动项:

打开链接:http://ubuntu.cn99.com/ubuntu/dists/hardy/main/installer-i386/current/images/netboot/ubuntu-installer/i386/

下载ubuntu 8.04的两个文件:linux和initrd.gz,并分别改名ubuntu804和ubuntu804.gz

#mv linux ubuntu804
#mv initrd.gz ubuntu804.gz

将这两个文件复制到U盘上:

#cp ubuntu804 /mnt/usb/boot/kernel
#cp ubuntu804.gz /mnt/usb/boot/image


编辑menu.lst文件,若没有则创建:

#vi /mnt/usb/boot/grub/menu.lst

文件包含以下内容:

default 0
timeout 300

title Ubuntu-8.04-installer
kernel /boot/kernel/ubuntu804
initrd /boot/image/ubuntu804.gz

加入debian、CentOS、RHEL4的步骤与上面基本相同

4、加入OpenBSD 4.3安装项:

首先复制memdisk到U盘上:

#cp /usr/lib/syslinux/memdisk /mnt/usb/boot/kernel
#gzip -9 /mnt/usb/boot/kernel/memdisk

到OpenBSD的FTP站点下载启动文件floppy43.fs:
ftp://ftp.freebsdchina.org/pub/OpenBSD/4.3/i386/floppy43.fs

#mv floppy43.fs openbsd43.fs
#cp openbsd43.fs /mnt/usb/boot/image

修改menu.lst:

#vi /mnt/usb/boot/grub/menu.lst

文件包含以下内容:

title OpenBSD-4.3-installer
kernel /boot/kernel/memdisk.gz
initrd /boot/image/openbsd43.fs

5、加入NetBSD 4.0安装项:

到NetBSD的FTP站点下载启动文件boot-big.fs:
ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-4.0/i386/installation/floppy/boot-big.fs

#mv boot-big.fs netbsd40.fs
#cp netbsd40.fs /mnt/usb/boot/image

修改menu.lst:

#vi /mnt/usb/boot/grub/menu.lst

文件包含以下内容:

title NetBSD-4.0-installer
kernel /boot/kernel/memdisk.gz
initrd /boot/image/netbsd40.fs

卸载U盘:

#umount /mnt/usb

6、加入FreeBSD 7.0安装项:

加入FreeBSD的安装启动项比较复杂,需要在FreeBSD6.X或FreeBSD7.X下操作

装载U盘:

#mkdir /mnt/usb
#mount -t msdosfs /dev/da0s1 /mnt/usb

到FreeBSD的FTP站点下载启动文件(boot.flp、kern1.flp、kern2.flp、kern3.flp、mfsroot1.flp):

复制启动文件boot.flp中的内容到临时文件夹boot_tmp下:
#mkdir /mnt/cd
#mdconfig -a -t vnode -f boot.flp -u 0
#mount /dev/md0 /mnt/cd
#mkdir boot_tmp
#cp -R /mnt/cd/* boot_tmp/
#umount /mnt/cd
#mdconfig -d -u 0

查看boot_tmp下的kernel.gz.split和mfsroot.gz.split这两个文件,可以知道kernel.gz文件被分割成了四个文件:kernel.gz.boot、kernel.gz.aa、kernel.gz.ab、kernel.gz.ac,而mfsroot.gz被分割成了mfsroot.gz.boot和mfsroot.gz.aa两个文件,下面就是要把这几个分割开的文件合并到一起;

合并kernel.gz文件:
#mdconfig -a -t vnode -f kern1.flp -u 0
#mount /dev/md0 /mnt/cd
#cat /mnt/cd/kernel.gz.aa >> boot_tmp/kernel.gz.boot
#umount /mnt/cd
#mdconfig -d -u 0

#mdconfig -a -t vnode -f kern2.flp -u 0
#mount /dev/md0 /mnt/cd
#cat /mnt/cd/kernel.gz.ab >> boot_tmp/kernel.gz.boot
#umount /mnt/cd
#mdconfig -d -u 0

#mdconfig -a -t vnode -f kern3.flp -u 0
#mount /dev/md0 /mnt/cd
#cat /mnt/cd/kernel.gz.ac >> boot_tmp/kernel.gz.boot
#umount /mnt/cd
#mdconfig -d -u 0

#mv boot_tmp/kernel.gz.boot boot_tmp/kernel.gz
至此kernel.gz合并完毕

合并mfsroot.gz文件:
#mdconfig -a -t vnode -f mfsroot1.flp -u 0
#mount /dev/md0 /mnt/cd
#cat /mnt/cd/mfsroot.gz.aa >> boot_tmp/mfsroot.gz.boot
#umount /mnt/cd
#mdconfig -d -u 0

#mv boot_tmp/mfsroot.gz.boot boot_tmp/mfsroot.gz
至此mfsroot.gz合并完毕

另外还需要做额外一些工作:
#rm -f boot_tmp/{kernel,mfsroot}.gz.split

修改boot_tmp/boot/loader.conf文件,删除含有"Insert floppy"的两行

再把boot_tmp下的内容打包成启动文件:
#dd if=/dev/zero of=freebsd70 bs=1k count=6800
#mdconfig -a -t vnode -f freebsd70 -u 0
#disklabel -Bw /dev/md0
#newfs /dev/md0a
#mkdir /mnt/hd
#mount /dev/md0a /mnt/hd
#cp -R boot_tmp/* /mnt/hd
#umount /mnt/hd
#mdconfig -d -u 0
#gzip -9 freebsd70
#cp freebsd70.gz /mnt/usb/boot/image/

修改menu.lst:

#vi /mnt/usb/boot/grub/menu.lst

包含以下内容:

title FreeBSD-7.0-installer
kernel /boot/kernel/memdisk.gz
initrd /boot/image/freebsd70.gz


卸载U盘

#umount /mnt/usb




原创文章如转载,请注明:转载自Chinadu`s Blog [ http://www.4shell.org/ ]

本文链接地址:http://www.4shell.org/archives/668.html
相关文章:
发布:Chinadu | 分类:技术文章 | 评论:0 | 引用:0 | 浏览:
发表评论