Я хочу сделать это, потому что я хочу установить Windows 7, и мое меню BIOS не появляется; при запуске он переходит в меню grub2, но это уже другая история ... Есть ли способ загрузить iso для установки Windows 7 непосредственно с grub2?
Да, вы могли бы подумать, что что-то подобное сработает:
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 с использованием устаревшего grub или 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 или с более новым оборудованием . [+1112]
С 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-накопитель / жесткий диск является первым устройством и имеет таблицу разделов в стиле 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
}
find
как строка? Почему не find | while read foo; do ...; done
? В любом случае это также повреждается на именах файлов с пробелами или обратными косыми чертами на их имена.
– terdon♦
27 April 2015 в 17:59
Технически установка из файла Windows .iso
невозможна. Вы можете загрузиться с .iso
, используя grub, но после этого Windows потеряет контакт со смонтированным местоположением или не сможет этого сделать. Так что оба grub
& amp; Windows должна знать о монтировании и загрузке. В настоящее время Windows не поддерживает.
Таким образом, вам нужно извлечь / скопировать содержимое .iso
в корневой каталог раздела и затем загрузить в него цепочку, используя grub
.