从grub2引导Windows 7 iso


12

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


1
“我的BIOS菜单没有出现”,但是您是否尝试进入BIOS?
米奇

如果我格式化硬盘怎么办?Windows会启动吗?:)

Answers:


7

使用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(或Disk Utility> Info)查看。

例如,最终条目看起来像这样:

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
}

真好 我确实使用--set = root --fs-uuid UUIDHERE(更改了顺序),但是(无法说出是否需要)。谢谢
Jan Kyu Peblik '16

@JanKyuPeblik您可以从ISO引导吗?
Anwar

那是我的回忆,是的。我不会对其他东西感兴趣。
Jan Kyu Peblik '16

5

是的,您会认为类似的方法会起作用:


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 7 USB / DVD下载工具将Windows安装到USB的分区上,并进行了链式加载。抱歉,我看不到其他任何方式。


第一个代码将启动Windows,但由于Windows不知道iso的安装位置,因此将在一段时间后失败
totti 2014年

第二个代码可能不起作用,因为它不适用于Ubuntu的iso
totti 2014年

OP专门针对Windows7。能够进行测试吗?
Warpspace,2014年

您可能不喜欢Windows,但是在此处张贴“ Winblows”和“ Windoze”相当不专业。-1。
0xC0000022L

1
由于我不是专业的自举程序程序员,因此我可以忍受“不专业”的生活。我认为您可能表示“不尊重”。是的,那条评论是六年前的事了。从那时起,我已经进行了很多更改(Windows也进行了更改)
Warpspace

5

从技术上讲,.iso无法从Windows的文件进行安装。您可以从.isousing grub 引导,但是在那之后Windows将失去与已安装位置的联系,否则它将无法执行。因此grub,Windows均应注意安装和引导。Windows目前不支持。

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


2
分享知识的好主意,但是您可以添加直接以技术方式回答问题的方法。即将当前文本用作免责声明,但随后您可以将“可以从.iso引导”扩展为菜单项或其他内容。通过这种方式,您可以准确地实现自己想像的方法,以实现所要求的功能,尽管您知道哪种方法无法实现预期的目的。这也将消除您确实考虑过的解决方案的数量。
n611x007 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.