原理:
利用grub2可以启动iso文件的方法,可以制作大量的多启动U盘,但是很大部分还不支持,比如常用的debian,centos,等等就不支持,不过我常用的systermrescuecd,archboot,freebsd都支持这种启动方式.
操作过程:
首先把U盘分区,我实验用的U盘有2G容量,为了通用性,我就格式化为fat32格式,这样windows和linux,以及bsd下都可以复制iso,修改grub.cfg文件.
1)分区就使用fdisk
首先你要把u盘的mbr清空,避免以前做的mbr影响将要安装的grub2启动
(X代表你的U盘所在的盘符,比如我的u盘就是/dev/sdb)
$ sudo dd if=/dev/zero of=/dev/sdX bs=512 count=1
$ sudo fdisk -l
$ sudo fdisk /dev/sdX
d删除已有分区,p显示分区情况,m察看fdisk帮助,n新建分区,p为主分区,t转换分区格式,b转换为win95vfat格式,l显示可以转换的分区格式,a激活启动分区,w保存分区情况,q不保存关闭fdisk
2) 安装grub2
这里要注意,安装的grub2最好是32位的,比如systermrescuecd和ubuntu livecd都选用32位的,可以保持兼容性;我这里就走了很多弯路,使用机器arch本身的grub2,导致u盘无法启动的情况,应为我的arch是64位的.
首先挂载你的u盘,如果你使用gnome3,或者其他自动挂载的桌面,你就需要找到你的u盘挂载的地方
$ sudo mount -t vfat /dev/sdb1 /mnt
$ sudo grub-install --no-floppy --force --root-directory=/mnt /dev/sdb1
3) 编辑grub.cfg文件,并添加iso文件
$ sudo mkdir /mnt/iso
把你需要启动的iso镜像放到/mnt/iso目录中就可以了
$ sudo vim /mnt/boot/grub/grub.cfg
下面是我的grub.cfg配置文件,你可以自己根据自己的情况修改
set color_normal='light-blue/black' set color_highlight='light-cyan/blue' menuentry "System Rescue CD" { loopback loop /iso/systemrescuecd-x86-2.3.1.iso linux (loop)/isolinux/rescuecd isoloop=/iso/systemrescuecd-x86-2.3.1.iso setkmap=us docache dostartx initrd (loop)/isolinux/initram.igz } menuentry "Parted Magic Disk Utilities" { loopback loop /iso/pmagic-6.2.iso linux (loop)/pmagic/bzImage iso_filename=/iso/pmagic-6.2.iso edd=off noapic load_ramdisk=1 prompt_ramdisk=0 rwnomce sleep=10 loglevel=0 initrd (loop)/pmagic/initramfs } menuentry "Ubuntu 11.04" { loopback loop /iso/ubuntu-11.04-desktop-i386.iso linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/iso/ubuntu-11.04-desktop-i386.iso noeject noprompt -- initrd (loop)/casper/initrd.lz } menuentry "Arch Linux i686" { loopback loop /iso/archlinux-2011.10-1-archboot.iso linux (loop)/boot/vmlinuz rootdelay=10 initrd (loop)/boot/initrd.img } menuentry "Arch Linux x86_64" { loopback loop /iso/archlinux-2011.10-1-archboot.iso linux (loop)/boot/vm64 rootdelay=10 initrd (loop)/boot/initrd64.img } menuentry "FreeBSD 8.2 i386" { set isofile=/iso/FreeBSD-8.2-RELEASE-i386-disc1.iso loopback loop $isofile kfreebsd (loop)/boot/kernel/kernel iso-scan/filename=$isofile noeject noprompt splash -- kfreebsd_module (loop)/boot/mfsroot.gz type=mfs_root } menuentry "FreeBSD 8.2 x86_64" { set isofile=/iso/FreeBSD-8.2-RELEASE-amd64-disc1.iso loopback loop $isofile kfreebsd (loop)/boot/kernel/kernel iso-scan/filename=$isofile noeject noprompt splash -- kfreebsd_module (loop)/boot/mfsroot.gz type=mfs_root }
参考 : Restore_Usbstick
Boot Multiple ISO from USB via Grub2 using Linux
MultiBootUSB shell
Installing Grub (2) on a USB flash drive
Install GRUB2 on USB from Ubuntu Linux
No comments:
Post a Comment