无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 16064|回复: 5
打印 上一主题 下一主题

[转贴] GRUB2引导Windows PE等ISO文件的办法

  [复制链接]
跳转到指定楼层
1#
发表于 2015-12-2 20:38:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 有阴也有阳 于 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

评分

参与人数 1无忧币 +5 收起 理由
Mindfly + 5 赞一个!

查看全部评分

推荐
发表于 2015-12-5 23:10:23 | 只看该作者
对于那些 通过 把 pe的iso装入 内存调取的方案,我一直是这样做的:
1、把pe改造成 native 模式,做成小iso,装入内存启动,负责进入 native 模式,
这个iso 也可以做成 hd影像,iso中有grub4dos负责引导iso中的bootmgr,因为memdisk比较认g4d的引导,而其他的甚至 bootmgr 都不好说,当然,如果用 g4d 启动的这个小iso ,就可以在map之后直接 chainloader 这个iso中的bootmgr而不用在走一次iso中的g4d。
2、把pe的主要 wim 文件放在硬盘某处,让进入 native的pe装载,并进入图形界面。

这样节省内存占用,启动也快一些。而且,不用修改本地 bcd.
回复

使用道具 举报

2#
发表于 2015-12-2 23:41:30 | 只看该作者
**,纯围观...
回复

使用道具 举报

3#
发表于 2015-12-3 11:31:58 | 只看该作者
这个比较给力啊啊,在UEFI和legacy Bios下都测试过了么???
回复

使用道具 举报

4#
发表于 2015-12-3 11:58:59 | 只看该作者
感谢分享。当年也长期受到无法map的困扰,放弃grub2之后就不关心了。希望以后能发展成grub2的合盘。

还有我这边不挂VPN上不了wiki,难道大家上维基都用代理或者破解版浏览器?

点评

现在封锁的网站越来越多了,真是作死。 我的所有设备都是开机自动启动V一P一N,跟没有墙一样  发表于 2015-12-3 12:43
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-25 14:39

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表