从grub2启动Windows 7 iso

我想这样做是因为我想安装Windows 7并且我的BIOS菜单没有出现; 它在开始时跳到grub2菜单,但这是另一个故事……有没有办法直接从grub2启动Windows 7安装iso?

是的,你会认为这样的事情会起作用:

menuentry "Boot Windoze" { search -f "--set-root /Winblows.iso" drivemap "/Winblows.iso" '(hd32)' drivemap '--hook' '' set root='(hd32)' chainloader +1 } 

但Windows只会对此犹豫不决。

如果你碰巧有至少4GB的RAM,你可以选择在memdisk中加载整个DVD iso并启动它。 为此,请下载 SysLinux并将memdisk文件memdisk压缩到您的boot目录中。 然后你需要向Grub2添加这样的代码

 menuentry "Boot Windoze" { search -f "--set-root /Winblows.iso" insmod memdisk linux16 /boot/memdisk iso initrd16 /Winblows.iso } 

但是,我甚至不打算测试代码,因为将3 GB以上的数据放入RAM中是完全错误的(从思想观点来看)。 不,我真的很想要你想要的东西,但最后我把Windows安装放在USB上的分区上,使用Windows 7 USB / DVD下载工具并加载到那个。 对不起,似乎没有任何其他方式,我可以看到。

使用grub4dos启动Windows XP

用grub legacy或grub2引导实际的ISO不起作用,但是对于旧的Windows版本(即XP),可以将i386文件夹从ISO解压缩到USB记忆棒,然后使用grub4dos来调用引导程序:

 title windows installer via setupldr.bin find --set-root /i386/setupldr.bin chainloader /i386/setupldr.bin 

要么

 title windows installer via /bootsect.bin find --set-root /i386/setupldr.bin chainloader /bootsect.bin 

这不适用于较新的Windows版本或较新的硬件。

使用grub2启动Windows 7

使用grub2显然这样的东西适用于Windows 7

 menuentry "Windows 7 (bootmgr)" --class windows --class os { insmod part_msdos insmod ntfs insmod ntldr ### A: either use this line or the next one, but not both set root='(hd0,msdos1)' ### B: ### search --no-floppy --fs-uuid --set=root ____INSERT_PARTITION_UUID_HERE___ ntldr ($root)/bootmgr } 

选项A假定您的可启动USB记忆棒/ HDD是第一个设备并具有msdos样式分区表。 调整以匹配您的配置。 如果你的启动设备有一个GPT分区表,那么很可能你需要使用(hd0,gpt1) (一般来说GPT设置起来比较棘手)。

选项B使用驱动器的唯一UUID,可以在Linux上使用sudo blkid或在OSX上看到,例如diskutil info disk0s1 (或磁盘工具>信息)。

最后的条目可能看起来像这样:

 menuentry "Windows 7 installer" --class windows --class os { insmod part_msdos insmod ntfs insmod ntldr search --no-floppy --fs-uuid --set=root 0E239BC6-F960-3107-89CF-1C97F78BB46B ntldr /bootmgr } 

从Windows的.iso文件技术上安装是不可能的。 你可以使用grub从.iso启动,但之后Windows将失去与安装位置的联系,或者它无法使用它。 所以grub和Windows都应该知道mount和boot。 目前Windows不支持。

因此,您需要将.iso的内容提取/复制到分区的根目录,然后使用grub链接到其中。