Создание загрузочной USB Flash с Windows 7 из-под Ubuntu
Недавно друг попросил установить ему Windows 7. Так уж вышло, что мой DVD-привод давно не работает, зато есть флешка на 8 ГБ. Тема создания загрузочной флешки с Windows 7 из-под Windows уже давно сильно разжевана в Сети. Но я пользуюсь Ubuntu, так что пришлось искать другое решение. На самом деле, как мне кажется, оно еще и проще.
Для начала нам потребуется графическая утилита GParted и пакет для работы с файловой системой NTFS. Для этого достаточно установить пакеты gparted и ntfsprogs. Это можно сделать как через Synaptic, так и через консоль:
sudo apt-get install gparted ntfsprogs
Далее нам нужно отформатировать флешку.
Можно сделать это из консоли:
sudo mkfs.ntfs /dev/sdb4
вместо /dev/sdb4, разумеется, должен быть адрес Вашей флешки
Можно это сделать и более легким путем. Для этого запускаем GParted, выбираем флешку (выпадающее меню сверху) и выбираем раздел. Выбираем в меню «Раздел» подменю «Отмонтировать», потом снова в меню «Раздел» подменю «Форматировать в » и в выпадающем меню выбираем «ntfs». Жмем зеленую галочку на панели инструментов.
Если Вы форматировали флешку через консоль, то дальше все-равно придется запустить GParted для того, чтобы установить boot флаг на флешку. Выбираем нужный раздел, выбираем меню «Раздел», подменю «Установить флаги». В появившемся окошке ставим галочку на «boot» и закрываем окно. GParted нам больше не понадобится.
Дальше проблема, с которой я столкнулся было то, что стандартные средства Ubuntu не позволяют открыть UDF ISO образ. Поэтому нужно смонтировать образ вручную:
sudo mkdir /media/iso
sudo mount windows7.iso /media/iso -t udf -o loop
Осталось только скопировать все файлы из образа на флешку:
cp -R /media/iso/* /media/MyFlashDrive
P.S. В принципе можно таким образом на флешку не только Windows 7 скопировать.
UPD. Можно обойтись и вовсе без использования GParted. Вместо него можно использовать fdisk (спасибо icCE)
bogus@bogus-laptop:~$ sudo fdisk /dev/sdb
Диск /dev/sdb: 1998 МБ, 1998585344 байт
255 heads, 63 sectors/track, 242 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00068ccc
Устр-во Загр Начало Конец Блоки Id Система
/dev/sdb4 1 243 1951712 7 HPFS/NTFS
Раздел 4 имеет различные физические/логические окончания:
физ=(241, 254, 63) логич=(242, 250, 7)
Команда (m для справки): a
Номер раздела (1-4): 4
Диск /dev/sdb: 1998 МБ, 1998585344 байт
255 heads, 63 sectors/track, 242 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00068ccc
Устр-во Загр Начало Конец Блоки Id Система
/dev/sdb4 * 1 243 1951712 7 HPFS/NTFS
Раздел 4 имеет различные физические/логические окончания:
физ=(241, 254, 63) логич=(242, 250, 7)
Команда (m для справки): w
Таблица разделов была изменена!
Вызывается ioctl() для перечитывания таблицы разделов.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Синхронизируются диски.
bogus@bogus-laptop:~$
UPD2. Более простой способ с помощью dd (спасибо stampoon):
dd if=/w7.iso of=/dev/sdx
UPD3. Если после dd или копирования файлов с флешки загрузиться не выходит, вероятно там не корректная MBR. (thx nalimka)
Можно заюзать утилиту ms-sys:
ms-sys -7 /dev/sdb
Создаём загрузочный 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 флэшку, отмонтируем её если она смонтирована:
Отмонтирование USB диска в gparted
Теперь необходимо пересоздать таблицу разделов, при этом выбрать тип msdos . Заходим в меню Устройство (Device) и выбираем Создать таблицу разделов (Create partition table) :
Gparted создание таблицы разделов
После этого выбираем неразмеченную область, нажимаем правой кнопкой мыши по ней же и выбираем пункт меню «Новый». В появившемся окне выбираем файловую систему NTFS или FAT32. Если у вас какая-то нестандартная сборка в которой могут быть файлы больше 4 гигабайт, то файловая система должна быть определенно NTFS, в противном случае, можно выбрать FAT32, и, тогда, так же можно будет загрузиться с UEFI. Так же необходимо указать метку для USB-диска. Важно: метка должна быть не просто «Windows», а какой либо более уникальной. Если файловая система FAT32, то метка должна быть указана заглавными буквами.
Создание нового раздела Gparted
Применяем все наши изменения:
Применение изменений в Gparted
Копирование файлов Windows на USB диск
Теперь необходимо смонтировать образ с Windows и скопировать данные с него на наш подготовленный ранее usb диск. В большинстве современных рабочих окружений это можно сделать из файлового менеджера. По необходимому образу нажимаем правой кнопкой мыши, выбираем Открыть с помощью и выбираем Disk Image Mounter :
Монтирование образа с Windows в файлом менеджере Thunar
Если у вас нет такой утилиты, то можно смонтировать из командной строки:
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;