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 }
好了,其实关键就是memdisk后面的raw参数!感兴趣的自己看Syslinux的Wiki,我这段代码引导的是U盘boot文件夹下的Win8PE.iso,请修改成你自己的具体情况。
借助MEMDISK(几十KB的文件),GRUB2就能加载几乎任意的镜像文件(ISO、IMG等)了,相当于是「虚拟光驱」的作用?不过引导速度比GRUB4DOS稍微慢一点。
关于PE的话这里多说点,建议去无忧论坛看看,我用无忧论坛的东西做启动维护工具估计都快七八年了!各种启动维护工具的讨论和分享。
嗯,现在我应该可以把U盘的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
Comments
38 responses to “GRUB2引导Windows PE等ISO文件的办法”
UEFI 32位上这方法行不通
linux16 跟 initrd16 都没法执行~~~
我原本以为能用这个来简单的在山寨平板上安装 Linux
不用加16
UEFI的话制作启动盘恐怕复杂一些。可以用Fedora的Live Creator做Fedora启动U盘,是UEFI可引导的。
最近也是想怎么grub2直接启动iso,找了不少资料,这个syslinux的memdisk在发行版安装后都有,我就复制的ubuntu下面的.不过呢,这个有点慢,他要把整个iso文件复制到memdisk.如果iso小,还可等一下,现在的winpe合集都7-800m,加载的非常慢,假如你u盘速度也慢的,那启动iso慢的无语.不知道还有其他高招么
是的,要整个复制所以很慢……要不就只能加载老的GRUB4DOS然后在那边引导ISO了,比这个要快些。只用GRUB2是没有别的办法的
博主你这博客的时间是零时区吗:D
恩,伦敦、都柏林、里斯本时间
同样的情况,我在https://www.kernel.org/pub/linux/utils/boot/syslinux/最新版的下载中没有找到memdisk的binary,都是source。 博主你从哪个文件里找到的?能不能把你的发上来?
有时候就算发行版用grub引导他也会安装syslinux
/boot下找找吧
我记得debian有个叫grub-imageboot的软件包
你可以apt-get download grub-imageboot后拆开这个包试试
谢了。我从CentOS里面挖了一个出来结果没用。又根据博主发帖子的时候找当时最新的memdisk好像是5.1,还是不行。我是UEFI环境跑得grub2的x86-64的EFI引导起来的。还有其他解么?
efi下貌似没看到能仿真memdisk的😰
洗洗睡吧
grub-efi下根本不能linux16 uefi毕竟不存在16位实模式了
“efi下用C写个磁盘仿真不会比win下写个虚拟磁盘困难”无忧那边说是这么说啦
可有相关资料?最好能有点source code :-)
应该说是无忧论坛的人日常吹水的内容吧
根本就没个影的东西
哪有源码啊😪
就不知道linux社区那边有没有人动手就是了
“memdisk文件夹下面有一个memdisk文件(没有任何扩展名)”,我没有找到没有扩展名的memdisk,HELP ME?
M$ 你怎么还不被拆分啊!
既然要linux16 /boot/memdisk iso
那为毛还要insmod memdisk呢?
grub的memdisk是个摆设么?
我才知道GRUB2的memdisk模块好像也能直接加载镜像,不过我没试过加载WinPE能不能行。
多谢提醒,已经更新文章了……
P.S. 我已经很久不折腾启动引导程序了
我只是很奇怪…几乎所有的文章都要insmod memdisk
但是又都用了Syslinux的memdisk………………….
grub的memdisk模块怎么用又没人讲……
又看了一下文章
我感觉grub2好low…………
真的low
从无忧论坛的相关描述来看 memdisk.mod是让grub的配置去内存……
什么意义?
这个模块的描述是官方文档没说明
文章也少的可怜
不过我找到了一个叫“grub-imageboot”软件包 封包了syslinux的memdisk 路径就是/boot/memdisk debian下是有这个包的 这也算方便了一点吧
确实方便了一点,所以用syslinux的memdisk到底要不要用memdisk模块呢?
那个模块好像是让grub能访问(memdisk)/boot
这样的设备
这里提了一点
http://works.jinbuguo.com/linux/grub.cfg.html
这个文章的末尾讲了两者的不同 不过我是看得迷迷糊糊的
http://wiki.xtronics.com/index.php/Grub2_howto
启动无忧这里有讨论 但是开始指向的帖子已经打不开了
http://bbs.wuyou.com/forum.php?mod=viewthread&tid=206521
我是不是该去问问Gub4Dos的维护者呢?
grub4dos的维护者说
“没有用过grub2不太清楚”
…………..
这个我实在是无力了…..
从前面几篇文章来看没必要insmod memdisk
而且grub2的memdisk.mod并不是让你用来把iso直接塞到内存里的………….
至于具体功用嘛…
我反正是挖不出来了
那就不管了吧,反正也没啥影响,GRUB2和GRUB4DOS差别很大的,你还不如发邮件到GRUB2的开发者列表问问看。
隔了久 来看这个也是比较微妙memdisk.mod确实是用来加载打包到.img的.mod的(啥用就不知道了)貌似是memdisk
.mod生成的ramdisk只能给grub2用…….
然后其实忽然想到这里呢…
是因为由于某些需求我需要整一个uefi下能用的引导工具…
于是就想起了我grub2不就是为了这个重构的代码吗?
但是找了一万年都没找到uefi环境下能用的memdisk…..
貌似无忧那边讲貌似没人写efi下的memdisk(Syslinux也没有)
Grub4dos的维护者表示“uefi啥的 忘了吧 我觉得grub4dos挺好的 现在功能也够用 修修补补凑活用吧 实在要用为什么不试试grub2呢?由于uefi对其他操作系统并不友好(secure boot),最后没办法就听微软的吧,微软让你用啥你就用啥,linux还是和旧电脑一起死吧,grub4dos就当陪葬吧”
legacy bios貌似也要死….我的X86平板就无法从uefi bios切换到legacy bios,然后听说有点软的Surface就已经无法关闭secure boot了…ubuntu这些个给微软交了99$保护费的发行版好像是能运行啦 可是还有一些发行版交不起保护费呢……
然后pc上的uefi是amd64架构…..但是寨板上有ia32架构的uefi……….
这导致了如果寨板也锁secure boot的话那么没有编译且签名ia32efi固件的ubuntu x86镜像也是无法启动的 x64镜像由于efi固件是amd64架构的也是无法启动…………
此时我的内心几乎是崩溃的
现在说的x64就是amd64吧,一个东西了。如果你指的是ia64那个奇葩架构已经被Intel器坑了啊。x86平台的64位就只有一个:amd64(Intel管它叫intel64,其实是一个东西)。
引导工具这种东西,那个Coreboot行么?(不过我不知道Coreboot是什么东西)
常见的桌面平台上的uefi都是64位的嘛
但是奸诈的微软和英特尔为了移动市场丧心病狂的推出了一堆1gRAM的 x86板上64位系统很明显不明智 但是貌似英特尔又不打算整legacy BIOS(可能和某个OS厂打算用uefi加强其控制力的战略也有关)于是丧心病狂的搞出了32位uefi这种东西……结果就是上面了……
我真是日了狗了
那你何必要买1G RAM的板子……我一年多之前买的手机都2G内存了,不敢想象1G内存的平板(而且还是Windows平板)。正好给了你动力折腾……少年,快快破解32位UEFI!
C?饶了我吧,我也就玩过某些脚本语言,其实………….
买个1G ram的板子是因为我觉得 win8平板这东西搞不好就放着吃灰了 花多了钱可惜 要买就买最便宜的 才288….包邮….(三月京东卖199….)
事实上这板子也能用……………
可以撸AVG
也可以临时用来刷机…..
只不过可能要买一堆的配件
然后电池才3000毫安时…..
我的天!两百多块的东西还指望啥,就玩玩好了。咳咳,都散了吧
订正一下这个黑屁
好像微软的某个协议说是如果要让x86设备贴上微软认证的标 就必须能关闭secure boot(当然不是出于微软的善意 如果不这么做可能微软会面临一堆反垄断官司和罚款)
刚才我为了启动iso里面的winpe,居然先chainloader到grub4dos,然后再map iso….惭愧…学习了
其实我之前也不会,都是一个慢慢学习的过程嘛
我试了楼主的方法,U盘引导Win8 ISO 提示错误:
couldn’tfind suitable memory target.
MEMDISK: No ramdisk image specified!
我也是刚从 grub4dos 迁移到 grub2,我的 grub.cfg:
menuentry “Install Windows” {
insmod memdisk
set root='(hd0,msdos1)’
linux16 /Tools/Bootloader/syslinux/memdisk/memdisk iso raw
initrd16 /Tools/OS/Test.iso
}
楼主有没有遇到过?
没有遇到过这个问题,我用memdisk就引导PE而已,你说的Win8 ISO是Windows 8的完整ISO镜像么?完整的Windows镜像的引导的话,你去syslinux的wiki看看吧,我记得好像新版的Windows引导是有些问题还是什么的来着。
我这篇文章仅限引导PE~
这么屌?
屌的点在哪里?