Загрузка USB с пользовательским ISO-файлом

Я выполняю шаги из документации по Ubuntu https://help.ubuntu.com/community/LiveCDInternetKiosk

Я пытался заменить последний шаг, использующий mkisofs, на xorriso, не помогло , Моя флешка не зарезервирует, я получаю пустое приглашение. Думаю, что это может быть связано с файловой системой (скрытая NTFS / FAT вместо VFAT), но изменение ее с помощью cfdisk не решает проблему. Таблица разделов "dos", выглядит хорошо, и / dev / sdb1 активен, он же загрузочный. Исходный образ .iso - это новый сервер Ubuntu 17.10, а модифицированный копируется с помощью dd. Системные файлы не затрагиваются в измененной версии.

Если я пытаюсь установить syslinx на USB впоследствии (syslinux -i / dev / sdb), я получаю следующую ошибку: «syslinux: недопустимая подпись носителя (не том FAT / NTFS?)»

Если я загрузить .iso на USB с помощью unetboot в системе загружается нормально. Мне нужно было только сделать isolinux -> sysline rename, чтобы избежать стандартного приглашения загрузки по умолчанию unetbootin.

Я хотел бы иметь возможность написать этот последний шаг без использования X или взаимодействия с пользователем вообще.

Некоторые соответствующие шаги:

sudo rm extract-cd/casper/filesystem.squashfs
sudo mksquashfs edit extract-cd/casper/filesystem.squashfs

sudo chmod a+w extract-cd/casper/filesystem.size
printf $(sudo du -sx --block-size=1 edit | cut -f1) > extract-cd/casper/filesystem.size


cd extract-cd
sudo rm md5sum.txt
find -type f -print0 | sudo xargs -0 md5sum | grep -v syslinux/boot.cat | sudo tee md5sum.txt
cd ..

xorriso -as mkisofs \
  -o xgogi.iso \
  -isohybrid-mbr /usr/lib/SYSLINUX/mbr.bin \
  -c syslinux/boot.cat \
  -b syslinux/syslinux.bin \
   -no-emul-boot -boot-load-size 4 -boot-info-table \
  extract-cd/

#copy to USB works, needs X
sudo unetbootin lang=en method=diskimage isofile=xgogi.iso installtype=USB targetdrive=/dev/sdb1 autoinstall=yes

# doesn't work and I am badly frustrated why
sudo dd bs=4M if=gogi.iso of=/dev/sdb
1
задан 25 November 2017 в 23:21

2 ответа

Как вы узнали, вам нужна специально подготовленная MBR в качестве входных данных для xorriso. У него необычная работа по поиску и запуску программы "isolinux.bin" внутри ISO.

Проект SYSLINUX предлагает подходящую MBR под названием «isohdpfx.bin». Двоичный пакет Debian «isolinux» имеет его как /usr/lib/ISOLINUX/isohdpfx.bin.

Хотя в SYSLINUX мало разработок, следует позаботиться о том, чтобы объединять isohdpfx.bin и isolinux.bin только из совместимых версии. Поэтому при изменении ISO и сохранении его файла isolinux.bin целесообразно извлечь первые 432 байта из этого ISO и использовать их в качестве входных данных MBR. (Не вредно копировать все 512 байтов первого блока. Xorriso перезапишет избыточные байты соответствующими значениями.)

2
ответ дан 25 November 2017 в 23:21

Мой mbr.bin был неверным. Вместо этого мне пришлось создать новый из оригинального .iso. Например:

$ sudo dd if=ubuntu-16.04-desktop-amd64.iso bs=512 count=1 of=custom-iso/isolinux/isohdpfx.bin

На этой прекрасной статье: https://linuxconfig.org/legacy-bios-uefi-and-secureboot-ready-ubuntu-live-image-customization

0
ответ дан 25 November 2017 в 23:21

Другие вопросы по тегам:

Похожие вопросы: