从 grub2 启动 Windows 7 iso

从 grub2 启动 Windows 7 iso

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

答案1

使用 grub4dos 启动 Windows XP

使用 grub legacy 或 grub2 启动实际 ISO 不起作用,但对于较旧的 Windows 版本(即 XP),可以将 ISO 中的 i386 文件夹解压到 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 --set=root --fs-uuid ____INSERT_PARTITION_UUID_HERE___
    ntldr ($root)/bootmgr
}

选项A假设您的可启动 USB 棒/HDD 是第一个设备,并且具有 msdos 样式的分区表。请调整以匹配您的配置。如果您的启动设备具有 GPT 分区表,那么您很可能需要使用它(hd0,gpt1)(GPT 通常更难设置)。

选项使用驱动器的唯一 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 --set=root --fs-uuid 0E239BC6-F960-3107-89CF-1C97F78BB46B
    ntldr /bootmgr
}

答案2

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


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

但 Windows 对此却犹豫不决。

如果你恰好有至少 4GB 的 RAM,你可以选择加载整个 DVD iso记忆磁盘然后启动它。为此,下载SysLinux 并将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 下载工具并链接至该处。抱歉,我似乎没有其他方法。

答案3

.iso从技术上讲,无法从 Windows 文件安装。您可以.iso使用 grub 启动,但此后 Windows 将失去与安装位置的联系,或者无法执行此操作。因此,grubWindows 和 Linux 都应该知道安装和启动。目前 Windows 不支持。

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

答案4

您可以创建 ntfs 分区或将 usb 驱动器格式化为 ntfs,将 windows 7/8/10/11 iso 提取到此分区或 usb 驱动器,确保所有文件都已提取,sudo update-grub然后重新启动以查看 spacefic windows 启动菜单项,您可以使用它来安装 windows。
您可以在 usb 驱动器上安装 grub2 并使用 Ubuntu 制作多重启动 USB,无需任何特殊工具即可安装 Ubuntu 和 Windows

相关内容