| 
 | 
 
 本帖最后由 有阴也有阳 于 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, 下载次数: 235, 下载积分: 无忧币 -2  
 
MEMDISK 6.03 2014-10-06 
 
 
 
 
评分
- 
查看全部评分
 
 
 
 
 
 |