Создаём загрузочный USB диск с Windows из под Linux
В ubuntu уже есть приложение для создания образов дисков - Startup Disk Creator, но оно умеет создавать только загрузочные USB с Linux. Для создания загрузочного USB-диска с Windows из Linux, существует WinUSB, но она довольно давно не обновлялась, и честно говоря, у меня не заработала. Данный пост довольно подробный, и рассчитан преимущественно на людей, плохо знакомых с Linux.
Перед тем как я продолжу, следует указать что в Windows мире два метода загрузки:
- MBR, при котором в начале диска резервируется место, и располагается специальный загрузочный файл;
- EFI, при котором исполняемый файл загрузчика хранится в стандартном расположении на FAT32 файловой системе;
Если вы не знаете какой выбрать, то наиболее часто используемый вариант который работает без модификации файлов Windows - это msdos таблица разделов с fat32 файловой системой и загрузочным флагом.
Прежде всего USB-диск необходимо подготовить. В Linux наиболее простой и удобной для этих целей утилитой является gparted.
Ставим его если не установлен:
sudo apt-get install gparted
Подготовка USB диска
Выбираем нашу USB флэшку, отмонтируем её если она смонтирована:
Теперь необходимо пересоздать таблицу разделов, при этом выбрать тип msdos
. Заходим в меню Устройство (Device)
и выбираем Создать таблицу разделов (Create partition table)
:
После этого выбираем неразмеченную область, нажимаем правой кнопкой мыши по ней же и выбираем пункт меню "Новый". В появившемся окне выбираем файловую систему NTFS или FAT32. Если у вас какая-то нестандартная сборка в которой могут быть файлы больше 4 гигабайт, то файловая система должна быть определенно NTFS, в противном случае, можно выбрать FAT32, и, тогда, так же можно будет загрузиться с UEFI. Так же необходимо указать метку для USB-диска. Важно: метка должна быть не просто "Windows", а какой либо более уникальной. Если файловая система FAT32, то метка должна быть указана заглавными буквами.
Применяем все наши изменения:
Выходим из gparted.
Копирование файлов Windows на USB диск
Теперь необходимо смонтировать образ с Windows и скопировать данные с него на наш подготовленный ранее usb диск. В большинстве современных рабочих окружений это можно сделать из файлового менеджера. По необходимому образу нажимаем правой кнопкой мыши, выбираем Открыть с помощью
и выбираем Disk Image Mounter
:
Если у вас нет такой утилиты, то можно смонтировать из командной строки:
sudo mount -o loop $HOME/Загрузки/Windows.iso /mnt/cdrom
Где $HOME/Загрузки/Windows.iso
необходимо заменить на путь до образа с Windows. Образ будет смонтирован в директорию /mnt/cdrom
.
Делаем USB-диск загрузочным
Если создаем MBR загрузочный диск
Для создания MBR загрузочной записи будем использовать grub:
sudo grub-install --target=i386-pc --boot-directory="/media/$user/$drive/boot" /dev/sdX
Где:
$user
- имя текущего пользователя;$drive
- название образа;/dev/sdX
- расположение диска (в моем случае/dev/sdb
;
Если образ монтировали руками, то /media/$user/$drive/boot
необходимо заменить на /mnt/cdrom/boot
.
В случае, если не было никаких ошибок, то в консоли должны увидеть примерно следующее:
Installing for i386-pc platform.
Installation finished. No error reported.
Теперь на USB-диске в директории boot/grub
необходимо создать файл grub.cfg
с таким содержимым:
default=1
timeout=15
color_normal=light-cyan/dark-gray
menu_color_normal=black/light-cyan
menu_color_highlight=white/black
menuentry "Start Windows Installation" {
insmod ntfs
insmod search_label
search --no-floppy --set=root --label $USB_drive_label --hint hd0,msdos1
ntldr /bootmgr
}
menuentry "Boot from the first hard drive" {
insmod ntfs
insmod chain
insmod part_msdos
insmod part_gpt
set root=(hd1)
chainloader +1
boot
}
В листинге выше, $USB_drive_label
необходимо заменить на метку, которую мы присвоили диску на первом шаге. В данном случае WINUSB2503
.
Перезагружаемся, загружаемся с USB-диска и выбираем Start Windows Installation
.
Если создаем UEFI загрузочный диск
С UEFI все несколько проще. Следует обратить внимание, что данный способ подходит только для Windows 7 x64 и выше.
После того, как все файлы скопировались, необходимо зайти в директорию efi/boot
. Если в ней присутствуют файлы bootx64.efi
или bootia32.efi
то всё в порядке, можно пробовать загрузиться с диска.
Если нет ни одного из указанных выше файлов, то необходимо зайти в директорию куда смонтирован образ Windows, открыть файл install.wim
архиватором (должен быть установлен 7z). В архиваторе открыть путь ./1/Windows/Boot/EFI
, разархивировать файл bootmgfw.efi
в директорию efi/boot
и переименовать его в bootx64.efi
. Если этих файлов нет, то скорее всего у вас 32 битный образ Windows. 32 битная Windows не поддерживает загрузку с UEFI.
Полезные ссылки:
- Make a bootable Windows USB from Linux - содержит немного полезной информации;
- Grub2/Installing - документация Ubuntu;
- Installing GRUB using grub-install - документация GRUB 2.0;