Как в Grub загрузить образ windows.iso

Создал мультизагрузочную флешку в линукс, но пока только с другими линукс дистрибутивами. Никак не могу заставить Grub запускать образы windows. Пробовал следующим образом:

menuentry "Windows 10"  --class windows --class os {
insmod ntfs
insmod ntldr
loopback loop /iso/Win_Pro_10_1607_64bit_Rus_2017.ISO
root=(loop)
ntldr (loop)/bootmgr
}

menuentry "Windows 7" {
insmod ntfs
insmod ntldr
loopback loop /iso/Windows_7_64bit_Ultimate_ru.iso
root=(loop)
ntldr (loop)/bootmgr
}

Весь день разбираюсь с этой темой, нашёл вариант скопировать содержимое образа в корень флешки, но мне это не подходит, так как образ не один.


Ответы (2 шт):

Автор решения: Daniil Loban

Если grub не принципиален и хочется простоты работы с установочными образами, рекомендую обратить внимание на Ventoy для того чтобы создать загрузочную флешку, необходимо всего лишь установить программу на флешку и скопировать обычным способом ISO образы на эту флешку, работает с разными системами.

введите сюда описание изображения

Компромиссное решение

Для наиболее полного ответа проделал эксперимент. К сожалению 32gb флешки не было под рукой, но хватило и 8gb

C помощью GParted разбил ее на 3 раздела:

введите сюда описание изображения

На второй раздел обычным способом скопировал файлы из iso (win10) Третий оставил пустым так как предположил если сработает со вторым то и с третьим заработает (по принципу индукции).

На первый раздел установил grub, у меня в системе он второй версии поэтому соответственно устанавливал ее:

  1. смонтровал первый раздел
mkdir /mnt/USB && mount /dev/sdb1 /mnt/USB
  1. поставил:
grub-install --force --removable --no-floppy --target=i386-pc --boot-directory=/mnt/USB/boot /dev/sdb
  1. скачал конфиг:
cd /mnt/USB/boot/grub
wget pendrivelinux.com/downloads/multibootlinux/grub.cfg
  1. внес изменения

# This Menu entry brought to you courtesy of https://www.pendrivelinux.com/boot-multiple-iso-from-usb-via-grub2-using-linux/

set timeout=60
set default=0

menuentry "Windows 10" {
    insmod part_msdos
    insmod ntfs
    insmod ntldr
    set root='hd0,msdos2'
    ntldr ($root)/bootmgr
}

menuentry "Reboot" {
    reboot
}
menuentry "Shut Down" {
    halt
}

Значение для рута получил командой search -u UUID из под grub, для этого после загрузки с флешки можно нажать c после чего появится ожидание ввода команд grub> где и следует ввести комманду поиска. Сам UUID глянул в GParted:

введите сюда описание изображения

Таким образом распаковывая iso в разные разделы и находя их по UUID можно создать флешку с разными версиями Windows.

На заключительном этапе очень помог kvm, устанавливал так для KDE:

sudo apt-get install qemu-kvm

Для теста под linux достаточно ввести команду:

sudo kvm -boot c -drive file=/dev/sdb,cache=none -m 1024

Опция -m 1024 отвечает за оперативку, меньше делать не стоит, лучше больше.

В финале я добрался до приветствия, пришлось подождать минут 10.

введите сюда описание изображения

→ Ссылка
Автор решения: Алексей Мызников

Из - под любой винды

Откусил кусочек в 5 Гб диска, распаковал образ туда, установил Grub4Dos. В Menu.lst дописал

timeout=5

default 0

title Setup 10

root (hd0,1)

chainloader (hd0,1)/bootmgr

(это второй раздел первого диска в представлении груба) Перезагрузился - началась и успешно прошла установка

→ Ссылка