Установка Window7(64Bit) на GPT диск, на материнках с EFI, без USB/DVD

в 20:59, , рубрики: EFI, gpt, windows, windows 7, установка ос, метки: , , ,

Сразу нужно уточнить, что речь пойдёт про установку Win рядом с linux дистрибутивом. То есть на компьютере должен стоять grub-efi.
Установка возможна только 64 битной Windows системы.

Так как у нас EFI плата, значит есть хотя бы один ФАТ32 раздел на диске.
Так же нам нужно создать раздел, куда мы распакуем образ Win.

/dev/sda1 — EFI раздел
/dev/sda3 — Раздел куда мы распакуем образ, Фат32 минимум 5гб(ну или сколько весит ваш образ)

Копируем образ на диск

Далее подготовительное полотенце:

sudo mkdir /mnt/cdrom
sudo mkdir /mnt/isoExtr
sudo mount -o loop ~/ISO/win7_sp1_64.iso /mnt/cdrom/
sudo mount /dev/sda3 /mnt/isoExtr/
cd /mnt/cdrom/
#Копируем образ на раздел
sudo cp -Rv ./* ../isoExtr/
cd /tmp
sudo umount /mnt/cdrom

Распакуем EFI загрузчик Win

Для этого нам понадобится 7z архиватор, загрузчик хранится в файле sources/install.wim (Windows/Boot/EFI/bootmgfw.efi)

sudo apt-get install p7zip-full
cd /tmp
7z x /mnt/isoExtr/sources/install.wim Windows/Boot/EFI/bootmgfw.efi

Скопируем загрузчик в efi нашего распакованного образа
sudo cp /tmp/Windows/Boot/EFI/bootmgfw.efi /mnt/isoExtr/efi/microsoft/boot/

Узнаем UUID дисков


ls -l /dev/disk/by-uuid/

В моём случае это:

lrwxrwxrwx 1 root root 10 Nov 28 22:29 A18B-57CD -> ../../sda1
lrwxrwxrwx 1 root root 10 Nov 28 22:29 CAA9-A38B -> ../../sda3

Создадим меню в Grub

Добавить в конец /etc/grub.d/40_custom

sudo nano /etc/grub.d/40_custom

menuentry «Microsoft Windows Start» --class windows --class os {
insmod usbms
insmod part_gpt
insmod part_msdos
insmod fat
insmod search_fs_uuid
insmod chain
search --fs-uuid --no-floppy --set=root A18B-57CD # < — CHANGE THIS TO YOUR UUID
chainloader (${root})/efi/microsoft/BOOT/bootmgfw.efi
}

menuentry «Microsoft Windows x86_64 UEFI-GPT Setup» --class windows --class os {
insmod usbms
insmod part_gpt
insmod part_msdos
insmod fat
insmod search_fs_uuid
insmod chain
search --fs-uuid --no-floppy --set=root CAA9-A38B # < — CHANGE THIS TO YOUR UUID
chainloader (${root})/efi/Microsoft/Boot/bootmgfw.efi
}


sudo chmod +x /etc/grub.d/40_custom
sudo update-grub
cd ~
sudo umount /mnt/isoExtr

Установка Windows

Перезагружаемся

sudo reboot

Выбираем в грабе «Microsoft Windows x86_64 UEFI-GPT Setup».
Ставим винду на нужный раздел, в процессе установки она попросит перегрузиться.
Видимо, в этот момент она прописывает свой загрузчик(/efi/microsoft/BOOT/bootmgfw.efi) в EFI раздел, при этом не нарушает работу grub-efi
В грабе выбираем «Microsoft Windows Start», система доустановится.
Установка завершена.
Далее, когда вам понадобится винда, выбираете в грабе пункт «Microsoft Windows Start».

Один из недостатков этого метода в том, что нужно разворачивать образ на диск, хотя было бы проще создать новый образ, в котором был бы нужный нам загрузчик, но все мои попытки сделать это не удались.
Достоинством является то, что загрузчик не нужно чинить после установки винды.
П.С.: Если кто-то знает как запустить в grub efi загрузчик из iso, я буду очень благодарен за предоставленную информацию, так как я не смог запустить EFI загрузчик из любых образов linux.
П.С.2: Мне удалось поставить Win7(64bit) дома на живом компе, правда, у меня было два физических диска. В VirtualBox я не смог повторить, так как падал EFI загрузчик винды, выдавал мифические «BlXmiInitialize failed 0xc000009a». Буду рад если кто-то повторит на живой машине, так как еще раз проходить ад-установки винды я не хочу.

Автор: DisDis

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js