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

от автора

Сразу нужно уточнить, что речь пойдёт про установку 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». Буду рад если кто-то повторит на живой машине, так как еще раз проходить ад-установки винды я не хочу.

ссылка на оригинал статьи http://habrahabr.ru/post/160655/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *