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
上个星期,看到一篇文章,介绍使用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 | 浏览:

Linux Kernel < 2.4.36.9/2.6.27.5 Unix Sockets Local Kernel Panic Exploit (2008-11-12 13:52:7)
Linux操作系统高级安全加固 (2008-11-11 21:57:50)
Linux小技巧收集 (2008-11-11 21:52:37)
linux下留本地后门的两个方法 (2008-11-11 21:49:46)
WebSniff 1.0 linx修改版 (2008-11-5 9:1:32)
Linux Kernel < 2.6.22 ftruncate()/open() Local Exploit (2008-11-2 23:9:56)
Linux Kernel 2.6.27.4 (2008-10-27 9:35:6)
Local root Exploit For Linux Kernel 2.6.9 (2008-10-22 10:48:17)
Linux系统信息查看命令大全 (2008-10-15 23:50:39)
Linux内核2.6.27正式到来 (2008-10-13 9:48:53)