Я хочу сделать это, потому что я хочу установить Windows 7, и мое меню BIOS не появляется; при запуске он переходит в меню grub2, но это уже другая история ... Есть ли способ загрузить iso для установки Windows 7 непосредственно с grub2?
Я хочу сделать это, потому что я хочу установить Windows 7, и мое меню BIOS не появляется; при запуске он переходит в меню grub2, но это уже другая история ... Есть ли способ загрузить iso для установки Windows 7 непосредственно с grub2?
Ответы:
Загрузка действительного ISO с помощью grub legacy или grub2 не будет работать, но в более старых версиях 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 :
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
}
Вариант А предполагает, что ваш загрузочный USB-накопитель / жесткий диск является первым устройством и имеет таблицу разделов в стиле 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
}
Да, вы думаете, что-то вроде этого будет работать:
menuentry "Boot Windoze" {
search -f "--set-root /Winblows.iso"
drivemap "/Winblows.iso" '(hd32)'
drivemap '--hook' ''
set root='(hd32)'
chainloader +1
}
Но Windows просто откажется от этого.
Если у вас есть хотя бы 4 ГБ ОЗУ, вы можете выбрать загрузку всего DVD iso в memdisk и загрузиться с него. Для этого загрузите SysLinux и распакуйте memdisk
файл в свой boot
каталог. Затем вам нужно добавить код в Grub2 примерно так
menuentry "Boot Windoze" {
search -f "--set-root /Winblows.iso"
insmod memdisk
linux16 /boot/memdisk iso
initrd16 /Winblows.iso
}
Тем не менее, я даже не собираюсь тестировать код, так как помещать более 3 ГБ данных в ОЗУ просто неправильно (с идеологической точки зрения). Нет, я действительно хотел то, что вы хотите, но, в конце концов, я установил установку Windows на раздел USB, используя инструмент загрузки USB / DVD Windows 7, и загрузил его туда. Извините, я не вижу другого способа увидеть это.
Технически установка из .iso
файла Windows невозможна. Вы можете загрузиться с .iso
помощью grub, но после этого Windows потеряет контакт с подключенным каталогом или не сможет. Так что grub
и Windows, и Windows должны знать о монтировании и загрузке. В настоящее время Windows не поддерживает.
Поэтому вам нужно извлечь / скопировать содержимое .iso
в корневой каталог раздела, а затем загрузить в него цепочку, используя grub
.