Как в 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 >
Весь день разбираюсь с этой темой, нашёл вариант скопировать содержимое образа в корень флешки, но мне это не подходит, так как образ не один.
@andreymal, Ventoy, конечно, намного лучше и проще, но всё таки хотелось бы самому руками потыкать и понять, как это можно сделать
2 ответа 2
Если grub не принципиален и хочется простоты работы с установочными образами, рекомендую обратить внимание на Ventoy для того чтобы создать загрузочную флешку, необходимо всего лишь установить программу на флешку и скопировать обычным способом ISO образы на эту флешку, работает с разными системами.
Компромиссное решение
Для наиболее полного ответа проделал эксперимент. К сожалению 32gb флешки не было под рукой, но хватило и 8gb
C помощью GParted разбил ее на 3 раздела:
На второй раздел обычным способом скопировал файлы из iso (win10) Третий оставил пустым так как предположил если сработает со вторым то и с третьим заработает (по принципу индукции).
На первый раздел установил grub , у меня в системе он второй версии поэтому соответственно устанавливал ее:
mkdir /mnt/USB && mount /dev/sdb1 /mnt/USB
grub-install --force --removable --no-floppy --target=i386-pc --boot-directory=/mnt/USB/boot /dev/sdb
cd /mnt/USB/boot/grub wget pendrivelinux.com/downloads/multibootlinux/grub.cfg
# 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"
Значение для рута получил командой 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.
How to add Windows 10 to grub boot loader?
Also, I have tried to change grub config with this answer https://askubuntu.com/questions/661947/add-windows-10-to-grub-os-list#answer-977251 — But in this case, There is Windows 10 — but when I chose — I will recursively going to grub
And with this answer https://askubuntu.com/questions/661947/add-windows-10-to-grub-os-list#answer-890562 I have an error message when chose Windows 10 — There is no bootmgr directory
Thanks @Kinnectus for help
/dev/sda1:FreeDOS:FreeDOS:chain /dev/sda2:FreeDOS:FreeDOS1:chain
Generating grub configuration file . Found linux image: /boot/vmlinuz-4.10.0-38-generic Found initrd image: /boot/initrd.img-4.10.0-38-generic Found memtest86+ image: /boot/memtest86+.elf Found memtest86+ image: /boot/memtest86+.bin Found FreeDOS on /dev/sda1 Found FreeDOS on /dev/sda2 done
Unfortunately — there is not Windows 10 in grub menu
Device Boot Start End Sectors Size Id Type /dev/sda1 2048 16779263 16777216 8G c W95 FAT32 (LBA) /dev/sda2 * 16779264 33556479 16777216 8G c W95 FAT32 (LBA) /dev/sda3 33556480 770219115 736662636 351,3G 7 HPFS/NTFS/exFAT /dev/sda4 770220030 976771071 206551042 98,5G 5 Extended /dev/sda5 770220032 976771071 206551040 98,5G 83 Linux Partition 4 does not start on physical sector boundary.
There is an issue. Maybe the problem is with this issue?
Please, help me, I am stucking with this a whole day. I completely have no idea, what am I doing wrong.
Настройка запуска меню загрузчика GRUB при установке Linux с Windows на один компьютер с таблицей разделов GPT
Привет, Хабр! Сегодня мы рассмотрим ситуацию, когда при двойной установке Linux & Windows загрузчик GRUB не стартует, давая возможность выбрать ОС, а автоматически загружается Windows. Немного теории:
GRUB (GRand Unified Bootloader) — программа-загрузчик операционных систем.
GRUB может загрузить любую совместимую с ней операционную систему. Среди них: Linux, FreeBSD, Solaris и многие другие. Кроме того, GRUB умеет по цепочке передавать управление другому загрузчику, что позволяет ему загружать Windows (через загрузчик NTLDR), MS-DOS, OS/2 и другие системы.
Значит с теорией мы немного разобрались (думаю этого будет достаточно), теперь же рассмотрим, какие бывают подводные камни, при установке Dual Boot Windows и Linux на одном компьютере.
Эксперимент производился на рабочей станции со следующими характеристиками:
Base Board Information
- Size: 4096 MB
- Type: DDR3
- Speed: 1333 MHz
- Manufacturer: Kingston
- Rank: 2
- product: ST500DM002-1BD14
- vendor: Seagate
- physical id: 0.0.0
- bus info: scsi@0:0.0.0
- logical name: /dev/sda
- size: 465GiB (500GB)
- capabilities: gpt-1.00 partitioned partitioned:gpt
Но, как показала практика, не со всеми дистрибутивами такое происходит. При установке Ubuntu 16.04.1 вместо Debian на ту же рабочую станцию вылез первый подводный камень — GRUB не стартовал, и Windows 10 автоматом шла на загрузку.
Решение проблемы было найдено спустя недели три-четыре (тогда уже надоело считать, сколько времени убито на решение проблемы). Оно оказалось неожиданным, но в тоже время вся система заработала. Значит, если вы столкнулись с такой же проблемой, приведенная ниже инструкция может вам пригодится и сэкономить кучу времени.
Важно! До начала выполнения инструкции нужно подготовить LiveCD с дистрибутивом Linux Mint — все операции мы будем выполнять на нем (я выбрал этот дистрибутив из-за того, что на него спокойно можно установить Midnight Commander, что сложно сделать на LiveCD с Ubuntu, так мы получаем больше пространства для маневров). Также стоит заметить, что команда из под консоли update-grub вам не поможет, так как она рассчитана на случай, когда GRUB запускается, но не видит другие ОС кроме Линукса. Также рекомендую создавать резервные копии файлов/каталогов, над которыми вы осуществляете хоть малейшие изменения.
- Через терминал, с правами root смонтировать раздел с EFI в папку /mnt. В моем случае, это была команда mount /dev/sda2 /mnt.
menuentry 'openSUSE Leap 42.2 27.01' --class opensuse --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-996b3ed5-150f-4de3-a40c-6d385e27d6de' < load_video set gfxpayload=keep insmod gzio insmod part_gpt insmod ext2 set root='hd0,gpt6' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt6 --hint-efi=hd0,gpt6 --hint-baremetal=ahci0,gpt6 996b3ed5-150f-4de3-a40c-6d385e27d6de else search --no-floppy --fs-uuid --set=root 996b3ed5-150f-4de3-a40c-6d385e27d6de fi echo 'Загружается Linux 4.4.36-8-default …' linuxefi /boot/vmlinuz-4.4.36-8-default root=UUID=996b3ed5-150f-4de3-a40c-6d385e27d6de ro resume=/dev/sda7 splash=silent quiet showopts echo 'Загружается начальный виртуальный диск …' initrdefi /boot/initrd-4.4.36-8-default >
Написать openSUSE The best choice!:):
menuentry 'openSUSE The best choice!:)' --class opensuse --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-996b3ed5-150f-4de3-a40c-6d385e27d6de' < load_video set gfxpayload=keep insmod gzio insmod part_gpt insmod ext2 set root='hd0,gpt6' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt6 --hint-efi=hd0,gpt6 --hint-baremetal=ahci0,gpt6 996b3ed5-150f-4de3-a40c-6d385e27d6de else search --no-floppy --fs-uuid --set=root 996b3ed5-150f-4de3-a40c-6d385e27d6de fi echo 'Загружается Linux 4.4.36-8-default …' linuxefi /boot/vmlinuz-4.4.36-8-default root=UUID=996b3ed5-150f-4de3-a40c-6d385e27d6de ro resume=/dev/sda7 splash=silent quiet showopts echo 'Загружается начальный виртуальный диск …' initrdefi /boot/initrd-4.4.36-8-default >
Хоть мелочь, а приятно! Остальное в коде советую не трогать.
Если трудно разобраться с управлением Midnight Commander (в этом нет ничего страшного, у меня тоже в первый раз были проблемы с этой программой), все операции можно выполнить в файловом менеджере Nautilus (или в другом, не суть важно), но изначально запустив его под правами пользователя root.
После этого идем на перезагрузку и радуемся результату. Но, как оказывается, такая проблема есть и у дистрибутива OpenSUSE Leap 42.2. Как показала практика, если на компьютере установлен дистрибутив OpenSUSE с Windows 10, то приведенная выше инструкция не поможет. Точнее, она поможет, но только ее нужно дополнить. После выполнения основной части выполняем следующие шаги:
- После выполнения всех операций заходим в папку /EFI/opensuse/x86_64-efi/ (название итоговой папки x86_64-efi может быть другим в зависимости от архитектуры ПК)
- Копируем файл grub.efi (если у вас включена опция Secure Boot, там будет еще файл shim.efi, тогда советую скопировать их вместе)
- Заходим в папку /EFI/Boot и удаляем все файлы, которые там есть (при обновлении загрузчика они снова появятся, но в этом нет ничего страшного)
- Вставляем файл (или файлы), которые мы скопировали и спокойно идем на перезагрузку.
Вот и вся инструкция. Думаю, кому-то пригодится…
Для тех же, кого заинтересовала данная тема, рекомендую прочитать статью: «Начальный загрузчик GRUB 2 — полное руководство».
Как добавить windows 10 в меню загрузки grub?
На ssd стояла windows 10.
Разбил hdd под установку linux mint, но после его установки загружалась только windows 10. Решил это чистой установкой Linux, установщик разбил диск как ему надо. Как итог linux грузится, windows 10 — нет, и кроме того не могу войти в настройки bios: меню загрузки там пустое, bios setup не открывается.
В меню загрузки grub есть только linux.
Есть ли способ добавить windows в меню загрузчика grub, как убедиться, что она сможет запуститься, и это не убьет работающий Linux?
Grub выглядит так:
По команде lsblk результат такой:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 465,8G 0 disk ├─sda1 8:1 0 512M 0 part /boot/efi └─sda2 8:2 0 465,3G 0 part / sdb 8:16 0 118G 0 disk ├─sdb1 8:17 0 117,2G 0 part └─sdb2 8:18 0 790M 0 part
Device Boot Start End Sectors Size Id Type /dev/sdb1 * 2048 245839254 245837207 117,2G 7 HPFS/NTFS/exFAT /dev/sdb2 245839872 247457791 1617920 790M 27 Hidden NTFS WinRE
/dev/sdb1: LABEL="M-PM-^TM-PM-8M-QM-^AM-PM-:" UUID="2EE6EE17E6EDDF59" TYPE="ntfs" PARTUUID="d7209484-01"
upd
Добавил руками пункт загрузки в grub как написано в статье.
При выборе — error: invalid EFI file path.
ps. Если бы была возможность зайти в bios, с удовольствием бы снес все и накатил заново винду (или восстановил с загрузочной флешки). С проблемой столкнулся не впервые, но в прошлый раз пришлось прибегнуть к прошивке bios на программаторе. Хотелось бы обойтись без такой хирургии, тк не желательно отдавать ноут на несколько дней.
Простой 2 комментария