GRUB2下引导ISO镜像文件
在没有U盘的情况下,Windows系统由于对c盘进行了磁盘压缩,导致windows无法正常启动。
与此同时,我的电脑下同时存在着DEEPIN深度的LINUX 操作系统,想到用GRUB2引导WINPE来恢复系统。
于是就查阅资料。
- 1.我的电脑用BCD.
- 2.GRUB2不支持GRUB那样的map操作来引导ISO文件。但能通过memdisk来引导。
memdisk 是什么?
memdisk能够启动某些软盘镜像,硬盘镜像,光盘镜像,通常是一些只读的live CD。
memdisk在内存的高地址区模拟出一个磁盘,在低地址区模拟出它自己使用的驱动,然后调用int13(磁盘驱动),int15(内存查询)bios中断。
- 3.然后用memdisk引导iso文件,就有了下面的命令:
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/WinPE.iso
}
将上面的东西塞入GRUB2的配置文件中,通常是在根目录下的boot中的GRUB(或者GRUB2)目录中的grub.cfg,用管理员权限打开在在启动项那个区域添加以下几行就可以了。
注意:在其中的 set root=’(hd0,msdos1)‘要注意hd0为你的硬盘编号,msdos1为我的分区在MBR记录表中的位置。
set root=’(hd0,msdos1)'这是设置根目录的地方,
在上面的代码,设置的是文件放在(hd0,msdos1)的硬盘分区下,你的Windows PE要放在第二个分区中的boot目录下。
注意区分大小写!
要使用memdisk,需要一个叫syslinux的包,这个包通常在linux系统(Deepin, CentOS, Ubuntu…)中找到,可以直接在的linux系统里/usr/local/share/syslinux…类似的目录中拷贝一份,当然也可以到syslinux的官方网站去下载。
在测试时发现当.iso文件大于1G时,ISO文件无法加载,所以只能挂比较小的ISO文件,比如Linux 的live,winpe等。