ISOファイル、特にDebianインストーラ(debian-11.4.0-i386-netinst.iso)を修正して起動してみました。次のコードはisoファイルの内容を抽出し、新しいisoファイルを再作成します。
mkdir -p tmp_dir
bsdtar -C tmp_dir -xf debian-11.4.0-i386-netinst.iso
genisoimage -r -J -b isolinux/isolinux.bin -c isolinux/boot.cat \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-o new_image.iso tmp_dir
その後、新しいisoファイルをUSBドライブにコピーしました。
sudo dd if=new_image.iso of=/dev/sdg status=progress
これにより、lsblk
次の出力が提供されます。
$ lsblk /dev/sdg
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sdg 8:96 1 29,4G 0 disk
しかし、始めることはできません。理由をご存知ですか?
以下は、いくつかの追加情報です。
- まず、元の画像を使用してUSBスティックを作成すると、USBスティックから起動できます。
sudo dd if=debian-11.4.0-i386-netinst.iso of=/dev/sdg status=progress
その後、lsblk
次のような結果が出ます。
$ lsblk /dev/sdg
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sdg 8:96 1 29,4G 0 disk
├─sdg1 8:97 1 471M 0 part
└─sdg2 8:98 1 1,9M 0 part
2つのパーティションを見ることができます(新しいイメージにはパーティションがありません)。
- 第二に、新しいイメージはvmwareで正しく実行されます。標準のコンピュータでは動作しないことがわかりません。
どんなアイデアがありますか?
答え1
起動可能なUSBメディア作成ツールの開発者であるRufusは、次のように書きました。SuperUser.SEへの素晴らしい答えです。問題を引き起こす裏面の複雑さを理解できるように説明します。
を使用すると、genisoimage
ISOファイルを(物理または仮想)CD / DVDでのみ起動可能にすることができます。
HDDなどのデバイスから起動するには(USBスティックに書き込むときなど)、イメージの先頭にマスターブートレコードが必要で、有効なMBRパーティションテーブルを含める必要があるため、イメージも有効です。ハードディスクイメージとして解釈されます。
これは、この目標を達成するために開発された最初のツールに基づく「isomixed ISOイメージ」とも呼ばれます。 Debian 11 では、xorriso
これらのイメージファイルを作成することができます。
xorriso -indev debian-11.4.0-i386-netinst.iso -report_el_torito cmd
および/またはを使用すると、xorriso -indev debian-11.4.0-i386-netinst.iso -boot_image any show_status
元xorriso
の画像を確認およびフィードバックするためのオプションで、その画像の起動構造を説明できますxorriso
。これが私が得るものです:
$ xorriso -indev debian-11.4.0-i386-netinst.iso -report_el_torito cmd
xorriso 1.5.2 : RockRidge filesystem manipulator, libburnia project.
xorriso : NOTE : Loading ISO image tree from LBA 0
xorriso : UPDATE : 1651 nodes read in 1 seconds
xorriso : NOTE : Detected El-Torito boot information which currently is set to be discarded
Drive current: -indev 'debian-11.4.0-i386-netinst.iso'
Media current: stdio file, overwriteable
Media status : is written , is appendable
Boot record : El Torito , MBR isohybrid cyl-align-on GPT APM
Media summary: 1 session, 241152 data blocks, 471m data, 1781g free
Volume id : 'Debian 11.4.0 i386 n'
-volid 'Debian 11.4.0 i386 n'
-volume_date uuid '2022070910381400'
-boot_image isolinux system_area=--interval:imported_iso:0s-15s:zero_mbrpt,zero_gpt,zero_apm:'debian-11.4.0-i386-netinst.iso'
-boot_image any partition_cyl_align=on
-boot_image any partition_offset=0
-boot_image any partition_hd_cyl=64
-boot_image any partition_sec_hd=32
-boot_image any mbr_force_bootable=on
-boot_image any apm_block_size=2048
-boot_image any iso_mbr_part_type=0x00
-boot_image any cat_path='/isolinux/boot.cat'
-boot_image isolinux bin_path='/isolinux/isolinux.bin'
-boot_image any platform_id=0x00
-boot_image any emul_type=no_emulation
-boot_image any load_size=2048
-boot_image any boot_info_table=on
-boot_image any next
-boot_image any efi_path='/boot/grub/efi.img'
-boot_image any platform_id=0xef
-boot_image any emul_type=no_emulation
-boot_image any load_size=2031616
-boot_image isolinux partition_entry=gpt_basdat
-boot_image isolinux partition_entry=apm_hfsplus
そして
$ xorriso -indev debian-11.4.0-i386-netinst.iso -boot_image any show_status
xorriso 1.5.2 : RockRidge filesystem manipulator, libburnia project.
xorriso : NOTE : Loading ISO image tree from LBA 0
xorriso : UPDATE : 1651 nodes read in 1 seconds
xorriso : NOTE : Detected El-Torito boot information which currently is set to be discarded
Drive current: -indev 'debian-11.4.0-i386-netinst.iso'
Media current: stdio file, overwriteable
Media status : is written , is appendable
Boot record : El Torito , MBR isohybrid cyl-align-on GPT APM
Media summary: 1 session, 241152 data blocks, 471m data, 1781g free
Volume id : 'Debian 11.4.0 i386 n'
------------------------------------
Status of loaded boot image :
------------------------------------
Boot record : El Torito , MBR isohybrid cyl-align-on GPT APM
Boot catalog : '/isolinux/boot.cat'
Boot image : '/isolinux/isolinux.bin' , boot_info_table=on
Boot image : '/boot/grub/efi.img' , platform_id=0xEF
------------------------------------
Boot image settings for next commit:
------------------------------------
-boot_image any discard
-boot_image any bin_path=''
-boot_image any emul_type=no_emulation
-boot_image any platform_id=0x00
-boot_image any boot_info_table=off
-boot_image grub grub2_boot_info=off
-boot_image any load_size=2048
-boot_image any sel_crit=0000000000000000000000000000000000000000
-boot_image any id_string=00000000000000000000000000000000000000000000000000000000
-boot_image isolinux partition_entry=off
-boot_image any appended_part_as=mbr
-boot_image any system_area=''
-boot_image any partition_offset=0
-boot_image any partition_sec_hd=0
-boot_image any partition_hd_cyl=0
-boot_image any partition_cyl_align=auto
-boot_image grub partition_table=off
-boot_image any mbr_force_bootable=off
-boot_image any appended_part_as=mbr
-boot_image any part_like_isohybrid=off
-boot_image any iso_mbr_part_type=default
-boot_image any gpt_disk_guid=random
-boot_image any chrp_boot_part=off
-boot_image any prep_boot_part=''
-boot_image any efi_boot_part=''
-boot_image any hfsplus_serial=0000000000000000
-boot_image any hfsplus_block_size=0
-boot_image any apm_block_size=0
------------------------------------
USBスティックに記録しても、結果のISOイメージを起動可能にするほとんどの「魔法」は-boot_image isolinux system_area=...
。
それ以降は-boot_image any next
UEFIサポートに関連しており、使用する起動オプションによってはgenisoimage
気にしないことがあります。
答え2
特に完全な答えをいただいた@telcoMに感謝します。
私はどんな場合でも(DVD、USBスティック、または...)起動可能なDebianのEFI起動可能なAMD64イメージの作成に成功しませんでした。基本に戻り、次のガイドラインを見つけました。 元の起動デバイスを使用してDebian ISOを再パッケージします。。
2023年のISO調整に基づいて、次のプロセスを作成して正常にテストできました。
たとえば、Debian 11.6 AMD64 Stable ISOを修正します。次の3つのDebianパッケージをインストールしたら、/firmware
あなたのDebianコンピュータにあるすべてのファームウェアをそのディレクトリに追加します。/usr/lib/firmware
firmware-linux
firmware-linux-free
firmware-linux-nonfree
sudo apt install firmware-linux firmware-linux-free firmware-linux-nonfree
引き続き例を使用してISOを再パッケージしてUSBフラッシュドライブにコピーし、レガシー(MBR)モードとUEFIモードで正常に起動します。画像はDVDで焼くときにも機能します。
ルートディレクトリを作成しますmkiso
。
mkdir /home/nba/mkiso
cd /home/nba/mkiso
wget https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/debian-11.6.0-amd64-DVD-1.iso
ソースISO抽出:
mkdir deb
sudo apt install xorriso
xorriso -osirrox on -indev deb11.6-nba-amd64.iso -extract / ./deb
または
sudo apt install bsdtar
bsdtar -C ./deb -xf debian-11.6.0-amd64-DVD-1.iso
ファイル/ファームウェアを追加します。 ISOイメージにファームウェアを追加したいです。
sudo apt install firmware-linux firmware-linux-free firmware-linux-nonfree
mkdir -p /home/nba/mkiso/fw
cp -rf /usr/lib/firmware /home/nba/mkiso/fw/
ソースISOからxorrisoビルドコマンドを抽出します。
cat deb/.disk/mkisofs
xorriso -as mkisofs -r -checksum_algorithm_iso sha256,sha512 -V 'Debian 11.6.0 amd64 1' -o /srv/cdbuilder.debian.org/dst/deb-cd/out/3bullseyeamd64/debian-11.6.0-amd64-DVD-1.iso -checksum-list /srv/cdbuilder.debian.org/src/deb-cd/tmp/3bullseyeamd64/bullseye/checksum-check -jigdo-checksum-algorithm md5 -jigdo-force-checksum /pool/ -jigdo-min-file-size 1024 -jigdo-exclude 'README*' -jigdo-exclude /doc/ -jigdo-exclude /md5sum.txt -jigdo-exclude /.disk/ -jigdo-exclude /pics/ -jigdo-exclude 'Release*' -jigdo-exclude 'Packages*' -jigdo-exclude 'Sources*' -jigdo-jigdo /srv/cdbuilder.debian.org/dst/deb-cd/out/3bullseyeamd64/debian-11.6.0-amd64-DVD-1.jigdo -jigdo-template /srv/cdbuilder.debian.org/dst/deb-cd/out/3bullseyeamd64/debian-11.6.0-amd64-DVD-1.template -jigdo-map Debian=/srv/cdbuilder.debian.org/src/ftp/debian/ -jigdo-exclude boot1 -J -joliet-long -cache-inodes -isohybrid-mbr syslinux/usr/lib/ISOLINUX/isohdpfx.bin -b isolinux/isolinux.bin -c isolinux/boot.cat -boot-load-size 4 -boot-info-table -no-emul-boot -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot -isohybrid-gpt-basdat -isohybrid-apm-hfsplus boot1 CD1
xorrisoビルドコマンドを修正する(-jidgoオプション+関連チェックサムを削除...):
xorriso -as mkisofs -r -V 'deb11.6-nba-amd64' -o ./deb11.6-nba-amd64.iso -J -joliet-long -cache-inodes -isohybrid-mbr ./isohdpfx.bin -b isolinux/isolinux.bin -c isolinux/boot.cat -boot-load-size 4 -boot-info-table -no-emul-boot -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot -isohybrid-gpt-basdat -isohybrid-apm-hfsplus deb fw
ソースISOから最初の432バイトを抽出してMBRを生成します。
cd /home/nba/mkiso
dd if=debian-11.6.0-amd64-DVD-1.iso of=isohdpfx.bin bs=1 count=432
新しいISOビルド(ISOに追加deb/
)fw/firmware
:
xorriso -as mkisofs -r -V 'deb11.6-nba-amd64' -o ./deb11.6-nba-amd64.iso -J -joliet-long -cache-inodes -isohybrid-mbr ./isohdpfx.bin -b isolinux/isolinux.bin -c isolinux/boot.cat -boot-load-size 4 -boot-info-table -no-emul-boot -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot -isohybrid-gpt-basdat -isohybrid-apm-hfsplus deb fw
新しく作成されたISOを抽出して確認します。
mkdir /home/nba/mkiso/deb2
cd /home/nba/mkiso/
xorriso -osirrox on -indev deb11.6-nba-amd64.iso -extract / deb2
次の場所にファームウェアがあることを確認してください/home/nba/mkiso/deb2/firmware
。
ls /home/nba/mkiso/deb2/firmware
テストブート:xorriso -report_system_area
ソースISOと新しいISOのオプションを使用して比較します。
xorriso -indev debian-11.6.0-amd64-DVD-1.iso -report_system_area as_mkisofs
xorriso -indev deb11.6-nba-amd64.iso -report_system_area as_mkisofs
次の行があることを確認してください。
-isohybrid-mbr --interval:local_fs:0s-15s:zero_mbrpt,zero_gpt,zero_apm:'deb11.6-nba-amd64.iso'
そしてライン:
-eltorito-alt-boot
-e '/boot/grub/efi.img'
-no-emul-boot
USBフラッシュドライブにコピーして起動しようとします。
sudo dd if=deb11.6-nba-amd64.iso of=/dev/sda bs=256M status=progress
ボタンを押すと再起動します!