Debian, создание загрузочной флешки из модифицированного образа дистрибутива

04.04.2021

Дано. Компьютер с сетевой картой, которая не поддерживается актуальным установщиком Debian, но при этом сам Debian на этот компьютер нужно поставить по сети.

Методов решения подобной проблемы может быть несколько, однако в этой статье рассмотрим вариант, при котором драйвера добавляются в скачанный установочный netinst-образ.

После скачивания образ нужно распаковать в папку (с помощью GUI, через mount или любым другим удобным способом).

Установщик актуальной (10.9) версии Debian может загружать дополнительные драйвера из папки firmware, которая находится в корне дистрибутива. Так как мы имеем дело с ISO-образом, все папки и сам образ изначально будут в режиме только для чтения. После добавления прав на запись (например через chmod u+w firmware) в папку можно добавить необходимые драйверы.

Теперь необходимо сформировать новый загрузочный ISO-образ из папки с дистрибутивом. По сразу нескольким причинам один из самых простых способов сделать это именно в Debian — воспользоваться утилитой xorriso (есть в репозитории). Команда:

$ xorriso -as mkisofs \
  -c isolinux/boot.cat \
  -b isolinux/isolinux.bin \
  -no-emul-boot \
  -boot-load-size 4 \
  -boot-info-table \
  -eltorito-alt-boot \
  -e boot/grub/efi.img \
  -no-emul-boot \
  -isohybrid-gpt-basdat \
  -o /path/to/tmp.iso \
  /path/to/tmp

Первоисточник команды. Чтобы сформированный образ мог загружаться в UEFI-режиме нужно воспользоваться утилитой isohybrid (содержится в пакете syslinux-utils):

$ isohybrid --uefi tmp.iso

После этого дело за малым — записать образ на накопитель. Для этого отлично подойдет dd. Не забудьте предварительно выяснить имя устройства (в примере /dev/sdb), присвоенное флешке, например через lsblk. Команда:

# dd bs=4M if=path_to_iso.iso of=/dev/sdb conv=fdatasync

Отдельно стоит отметить, что все вышеперечисленные операции можно значительно упростить воспользовавшись дополнительным компьютером с Windows и программами AnyBurn (для создания образа из папки) и Rufus (для записи образа).