web-dev-qa-db-ja.com

カスタムisoファイルでUSBを起動する

Ubuntuドキュメントの手順に従っています https://help.ubuntu.com/community/LiveCDInternetKiosk

私はmkisofsを使用する最終ステップをxorrisoに置き換えようとしましたが、助けにはなりませんでした。 USBスティックが予約されず、空白のプロンプトが表示されます。ファイルシステム(VFATの代わりに非表示のNTFS/FAT)に関連している可能性があると考えられますが、cfdiskを使用して変更しても問題は解決しません。パーティションテーブルは "dos"で、見た目は美しく、/ dev/sdb1はアクティブ(別名ブート可能)です。元の.isoイメージは新しいUbuntuサーバー17.10であり、変更されたイメージはddを使用してコピーされます。システムファイルは変更されたバージョンでは変更されません。

その後、syslinxをUSBにインストールしようとすると(syslinux -i/dev/sdb)次のエラーが表示されます。「syslinux:無効なメディア署名(FAT/NTFSボリュームではない?)」

Unetbootinを使用して.isoをUSBにアップロードすると、システムは正常にロードされます。デフォルトのunetbootinのデフォルトのブートプロンプトを回避するために、isolinux-> sysline renameを実行するだけでした。

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
kometonja

わかったように、xorrisoの入力として特別に準備されたMBRが必要です。 ISO内でプログラム "isolinux.bin"を見つけて起動するという珍しい仕事をしています。

SYSLINUXプロジェクトは、「isohdpfx.bin」という名前で適切なMBRを提供します。 Debianバイナリパッケージ「isolinux」には、/usr/lib/ISOLINUX/isohdpfx.binとして含まれています。

SYSLINUXでの開発はほとんどありませんが、互換性のあるバージョンからのみisohdpfx.binとisolinux.binを組み合わせるように注意する必要があります。したがって、ISOを変更してそのファイルisolinux.binを保持する場合、そのISOから最初の432バイトを抽出し、MBR入力として使用するのが賢明です。 (最初のブロックの512バイトすべてをコピーすることは有害ではありません。xorrisoは適切な値で余分なバイトを上書きします。)

2
Thomas Schmitt

私の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
kometonja