从u盘grub2引导安装iso

以下内容是经过我一下午加一晚上折腾得出的,不过文章全凭记忆所写,并未验证其正误,如有错误,欢迎指出:)
1.用fdisk查看分区信息,得知u盘设备为/dev/sdd,分区为/dev/sdd1
[img]http://dl.iteye.com/upload/attachment/0081/7963/39a4dee6-e3a3-32ea-bbc9-52c341343e1e.png[/img]
2.用fdisk命令重新对u盘进行分区
注意:起始扇区需要是默认的+128,即2048+128=2176,为保险起见,我直接从3000开始:)
[img]http://dl.iteye.com/upload/attachment/0081/7967/c33f8030-503a-3996-ae80-eabcbd3f91a5.png[/img]
3.格式化u盘“sudo mkfs.vfat -F 32 /dev/sdd1”
4.使用umount命令卸载u盘,再mount挂载至/mnt(可换成其它)
注意:不记得我干了啥,结果设备名变了。如:之前为/dev/sdd,现为/dev/sdc
5.写入grub至u盘,执行完下条命令后,u盘下应该能看到boot目录
“sudo grub-install --force --no-floppy --root-directory=/mnt /dev/sdc”
6.键入下面命令,将下面的配置文件(需要进行相应修改)复制进去,保存退出即可
“sudo vim /mnt/boot/grub/grub.cfg”

#---------------------------------------------分割线-------------------------------------------------
#这里是默认选项,0就是第一个
set default=0
#这里是默认等待时间
set timeout= 10
#加载fat模块,fat32等fat类文件系统格式必需
insmod fat
#加载vbe模块(作用未知,如有知道,请告知)
insmod vbe

menuentry "Archlinux-2013.03.01-dual" --class iso {
insmod fat
insmod loopback
insmod iso9660
#镜像相对u盘根目录路径
set isofile="/OS/archlinux-2013.03.01-dual.iso"
#(hd0,1)表示u盘第一个分区
loopback loop (hd0,1)$isofile
#archisolabel=u盘卷标,img_dev=u盘分区
#u盘改名请google:u盘 mtools 改名
linux (loop)/arch/boot/i686/vmlinuz archisolabel=FZ img_dev=/dev/sdc1 img_loop=$isofile earlymodules=loop
initrd (loop)/arch/boot/i686/archiso.img
}

menuentry 'ubuntu-12.04-desktop-i386' {
insmod fat
insmod loopback
insmod iso9660
set isofile="/OS/ubuntu-12.04-desktop-i386.iso"
loopback loop (hd0,1)/$isofile
set root=(loop)
linux /casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject locale=zh_CN.UTF-8 --
initrd /casper/initrd.lz
}

#配置不起作用,除了安装grub4dos外暂未找到解决方案
#貌似需要修改iso文件解压后的syslinux.cfg
#menuentry 'openSUSE-12.3-GNOME-Live-i686' {
# insmod fat
# insmod loopback
# insmod iso9660
# set isofile="/OS/openSUSE-12.3-GNOME-Live-i686.iso"
# loopback loop (hd0,1)/$isofile
# #set root=(loop)
# #linux /boot/i386/loader/linux boot=boot/i386/loader/ iso-scan/filename=/OS/openSUSE-12.3-GNOME-Live-i686.iso noprompt noeject locale=zh_CN.UTF-8 --
# #initrd /boot/i386/loader/initrd
# linux (loop)/boot/i386/loader/linux archisolabel=FZ img_dev=/dev/sdc1 img_loop=$isofile earlymodules=loop
# initrd (loop)/boot/i386/loader/initrd
#}

#另一种引导archlinux的方法
#将archlinux-2013.03.01-dual.iso解压后的arch文件夹移动到u盘根目录
#menuentry 'archlinux-2013.03.01-dual'{
# insmod part_msdos
# insmod fat
# set root='hd0,msdos1'
# linux /arch/boot/i686/vmlinuz archisobasedir=arch archisolabel=FZ
# initrd /arch/boot/i686/archiso.img
#}

你可能感兴趣的:(Linux,操作系统,开发工具)