修正されたISOイメージから起動

修正されたISOイメージから起動

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への素晴らしい答えです。問題を引き起こす裏面の複雑さを理解できるように説明します。

を使用すると、genisoimageISOファイルを(物理または仮想)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_statusxorrisoの画像を確認およびフィードバックするためのオプションで、その画像の起動構造を説明できます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 nextUEFIサポートに関連しており、使用する起動オプションによってはgenisoimage気にしないことがあります。

おすすめ記事