Так уж сложилось, что давно не приходилось ставить Windows никуда. Linux-овая привычка “дэдэш (dd) iso прямо в диск”, к сожалению, подвела. Оказалось, что для установки с флешки Windows 11 нужно эту самую флешку “правильно” отформатировать и расположить там файлы.

Начальные данные:

  • есть образ диска (например, /tmp/windows.iso);
  • есть флешка (например, /dev/sdb).

Для работы понадобятся следующие программы:

  • wipefs (пакет util-linux);
  • mkfs.vfat (пакет dosfstools);
  • mkfs.ntfs (пакет ntfsprogs);
  • udisksctl (пакет udisks2).

Сначала отформатируем флешку:

1
# wipefs -a /dev/sdb

Далее создаем структуру файловой системы на флешке:

1
2
3
4
5
# parted /dev/sdb
(parted) mklabel gpt                                                      
(parted) mkpart BOOT fat32 0% 1GiB
(parted) mkpart INSTALL ntfs 1GiB 100%
(parted) quit

Тут мы создали 2 раздела на gpt диске:

  • BOOT под файлы загрузчика;
  • INSTALL под все остальные файлы (в примере был взять весь объем флешки, можно указать размер вручную заменим 100% на нужный).

Далее форматируем каждый из разделов в нужную файловую систему и монтируем его:

1
2
3
4
5
6
7
# mkfs.vfat -n BOOT /dev/sdb1
# mkdir /mnt/vfat
# mount /dev/sdb1 /mnt/vfat/

# mkfs.ntfs --quick -L INSTALL /dev/sdb2
# mkdir /mnt/ntfs
# mount /dev/sdb2 /mnt/ntfs

Монтируем iso образ:

1
2
# mkdir /mnt/iso
# mount /mnt/windows.iso /mnt/iso/

Далее копируем в BOOT раздел все файлы из iso кроме папки sources, но включая файл sources/boot.wim:

1
# rsync -r --progress --include sources/boot.wim --exclude sources/* --delete-before /mnt/iso/ /mnt/vfat/

И полный образ в INSTALL раздел:

1
# rsync -r --progress --delete-before /mnt/iso/ /mnt/ntfs/

После этого ждем сброс данных на флешку, размонтируем все разделы и извлекаем ее:

1
2
3
4
5
6
7
# sync

# umount /mnt/ntfs
# umount /mnt/vfat
# umount /mnt/iso

# udisksctl power-off -b /dev/sdb

Теперь с флешки можно загрузиться и выполнить установку Windows.