|
本帖最后由 有阴也有阳 于 2015-12-6 22:06 编辑
GRUB2不支持GRUB4DOS那样的map操作来引导ISO文件,是长期困扰我的一个问题,在今天之前,我都很
傻地用grub2引导grub4dos然后引导Windows PE……直到我膝盖中了一箭,看到这个帖子。下面好好整理了一下,
希望本文也能帮助你彻底从GRUB4DOS升级换代到GRUB2!
关于在U盘上安装GRUB2引导器的教程请自行Google,太多这类文章和Wiki了。下面开始GRUB2引导ISO文
件(特别是Windows PE和Windows安装光盘这种)的正题。
首先下载最新版的Syslinux,解开压缩包,memdisk文件夹下面有一个memdisk文件(没有任何扩展名),把memdisk文件复制到U盘
boot文件夹下(随便你放在哪,这里我是放倒boot这个文件夹下)。
编辑你U盘GRUB2的配置文件(一般是U盘/grub2/grub.cfg),在启动项那个区域添加以下几行:
menuentry 'Boot Windows 8 PE ISO'{
set root='(hd0,msdos1)'
echo 'Loading Memdisk...'
#insmod memdisk
linux16 /boot/memdisk iso raw
echo 'Loading ISO...'
initrd16 /boot/Win8PE.iso
}
为了确保从U盘启动运行,也可以用如下的写法:
menuentry 'Boot Windows 8 PE ISO'{
search--set-f/myudisk.txt
echo 'Loading Memdisk...'
#insmod memdisk
linux16 /boot/memdisk iso raw
echo 'Loading ISO...'
initrd16 /boot/Win8PE.iso
}
(将空白的记事本文件命名为myudisk,形成一个myudisk.txt文件,把myudisk.txt文件复制到启动U盘的根目录,成为启动U盘的路
标文件,search--set-f/myudisk.txt为启动U盘的指路命令——指明文件的路径、指明命令的执行路径......
search--set-f/myudisk.txt的含义:
搜索根目录包含myudisk.txt文件的分区并设为root,注意如果多个分区含有myudisk.txt文件,set失去作用。)
好了,其实关键就是memdisk后面的raw参数!感兴趣的自己看Syslinux的Wiki,我这段代码引导的是U盘boot文件夹下的Win8PE.iso,
请修改成你自己的具体情况。借助memdisk(几十KB的文件),GRUB2就能加载几乎任意的镜像文件(ISO、IMG等)了,相当于是“虚拟光
驱”的作用?不过引导速度比GRUB4DOS稍微慢一点。
2014-12-22 更新:
不需要insmod memdisk这一句,因为用的是Syslinux的MEMDISK而不是GRUB2的memdisk模块。当然你也可以直接用GRUB2的memdisk
模块来加载镜像文件。
2015-02-22 更新:
为了规范,syslinux的MEMDISK全部大写,以便和GRUB2的memdisk模块区分开来。两者重名了,刚查了一下,GRUB2的memdisk是用
来读取core.img的。和syslinux的MEMDISK完全不同……详见http://wiki.xtronics.com/index.php/Grub2_howto
这篇文章中提到的“这个帖子”:
grub2如何才能像grub4dos正确引导iso文件呢?
直接从menu.lst转换到grub.cfg可以吗?(这种方法我没试过)
那种引导ubuntu liveCD的方法就不要提了,我知道可以, 我想的是类似虚拟光驱的用法,比较方便。
解决情况:可行的方法如下 【注意那个“raw”关键字】 :
#【这就是我想要的效果,不用关心iso里面是什么文件,而是“模拟光驱”,即使它并不是什么iso都可以引导。】
#memdisk文件来自syslinux
#给点耐性,等一会,相比grub4dos的方式慢了点。
menuentry '[iso] -- /winpe.iso(memdisk) ' {
insmod memdisk
insmod fat
set root='hd0,msdos1'
linux16 /boot/syslinux/memdisk iso raw
initrd16 /winpe.iso
}
#grub4dos的方式,在grub2配置中一次写完也可以: 【这不是我想要的方式,但可以。】
menuentry "[iso] -- /image/winpe.iso(grub.exe) 2003" --class windows --class os{
linux16 /grub4dos/grub.exe --config-file="map /image/winpe.iso (hd32) || map --mem /image/winpe.iso (hd32); map --hook; chainloader (hd32); rootnoverify (hd32)"
initrd16 /image/winpe.iso
}
附:memdisk使用方法链接
http://www.syslinux.org/wiki/index.php/MEMDISK
Syslinux6.03版的memdisk文已经通过附件上传,方便大家下载。
|
-
-
memdisk.rar
12.88 KB, 下载次数: 232, 下载积分: 无忧币 -2
MEMDISK 6.03 2014-10-06
评分
-
查看全部评分
|