mkisofsでisoを「起動可能(dos / MBRセクタ)」に設定します。

mkisofsでisoを「起動可能(dos / MBRセクタ)」に設定します。

isoファイル「archlinux-2022.06.01-x86_64.iso」を抽出しました。 "airootfs.sfs"ファイルを変更しました。

次に、抽出した元のisoファイルと同様に、「ブータブル(dos / MBRセクタ)」isoイメージを再生成します。

sudo xorriso -as  mkisofs -d -l -r  -no-emul-boot 
-o archlinux.iso .
-append_partition 2 0xef ../compile-linux/efi_part.img -e  "--interval:appended_partition_2:all::" -no-emul-boot ../compile-linux/bios_boot.img
-G ../compile-linux/mbr_code.img 
-b syslinux/isolinux.bin 
-c syslinux/boot.cat

出力file archlinux.iso

archlinux.iso: ISO 9660 CD-ROM filesystem data (DOS/MBR boot sector) 'ISOIMAGE' (bootable)

出力コマンドxorriso -indev archlinux.iso -report-el-torito plain -report-system-area plain

xorriso 1.5.4 : RockRidge filesystem manipulator, libburnia project.

xorriso : NOTE : Loading ISO image tree from LBA 0
xorriso : UPDATE :     114 nodes read in 1 seconds
xorriso : NOTE : Detected El-Torito boot information which currently is set to be discarded
Drive current: -indev 'archlinux.iso'
Media current: stdio file, overwriteable
Media status : is written , is appendable
Boot record  : El Torito , MBR cyl-align-off
Media summary: 1 session, 445804 data blocks,  871m data,  178g free
Volume id    : 'ISOIMAGE'
El Torito catalog  : 42  1
El Torito cat path : /syslinux/boot.cat
El Torito images   :   N  Pltf  B   Emul  Ld_seg  Hdpt  Ldsiz         LBA
El Torito boot img :   1  BIOS  y   none  0x0000  0x00     76          43
El Torito img path :   1  /syslinux/isolinux.bin
System area options: 0x00000a00
System area summary: MBR cyl-align-off
ISO image size/512 : 1783216
Partition offset   : 0
MBR heads per cyl  : 64
MBR secs per head  : 32
MBR partition table:   N Status  Type        Start       Blocks
MBR partition      :   1   0x00  0x83            0      1783216
MBR partition      :   2   0x00  0xef      1783216         1600

上記の出力は私が自分で作成したisoファイルです。

仮想マシン「Efiオプションが無効になっています」でisoファイルを使用しようとすると、このエラーが発生します。

ここに画像の説明を入力してください。

私は初心者であり、これについてはよくわかりません。

それで、RAW ISO出力から画像を作成する正しい方法を見つけようとしましたが、成功しませんでした。

xorriso 1.5.4 : RockRidge filesystem manipulator, libburnia project.

xorriso : NOTE : ISO image bears MBR with  -boot_image any partition_offset=16
xorriso : NOTE : Loading ISO image tree from LBA 0
xorriso : UPDATE :     113 nodes read in 1 seconds
libisofs: NOTE : Found hidden El-Torito image for EFI.
libisofs: NOTE : EFI image start and size: 396800 * 2048 , 0 * 512
xorriso : NOTE : Detected El-Torito boot information which currently is set to be discarded
Drive current: -indev '../archlinux-2022.06.01-x86_64.iso'
Media current: stdio file, overwriteable
Media status : is written , is appendable
Boot record  : El Torito , MBR isohybrid cyl-align-all GPT
Media summary: 1 session, 440998 data blocks,  861m data,  178g free
Volume id    : 'ARCH_202206'
El Torito catalog  : 118  1
El Torito cat path : /syslinux/boot.cat
El Torito images   :   N  Pltf  B   Emul  Ld_seg  Hdpt  Ldsiz         LBA
El Torito boot img :   1  BIOS  y   none  0x0000  0x00      4         119
El Torito boot img :   2  UEFI  y   none  0x0000  0x00      0      396800
El Torito img path :   1  /syslinux/isolinux.bin
El Torito img opts :   1  boot-info-table isohybrid-suitable
El Torito img blks :   2  44032
System area options: 0x00000302
System area summary: MBR isohybrid cyl-align-all GPT
ISO image size/512 : 1763992
Partition offset   : 16
MBR heads per cyl  : 64
MBR secs per head  : 32
MBR partition table:   N Status  Type        Start       Blocks
MBR partition      :   1   0x80  0x00           64      1587136
MBR partition      :   2   0x00  0xef      1587200       176128
GPT                :   N  Info
GPT disk GUID      :      3230323230363041b130303533353232
GPT entry array    :      2  248  separated
GPT lba range      :      64  1763928  1763991
GPT partition name :   1  490053004f00480079006200720069006400
GPT partname local :   1  ISOHybrid
GPT partition GUID :   1  3230323230363041b131303533353232
GPT type GUID      :   1  a2a0d0ebe5b9334487c068b6b72699c7
GPT partition flags:   1  0x1000000000000001
GPT start and size :   1  64  1587136
GPT partition name :   2  490053004f004800790062007200690064003100
GPT partname local :   2  ISOHybrid1
GPT partition GUID :   2  3230323230363041b132303533353232
GPT type GUID      :   2  a2a0d0ebe5b9334487c068b6b72699c7
GPT partition flags:   2  0x1000000000000001
GPT start and size :   2  1587200  176128

私は何が間違っていましたか? ISOイメージファイルを作成してライブとして使用しようとしています。

ご協力ありがとうございます

答え1

xorriso -as mkisofs 実行には、少なくとも -e と修正オプション、-b と修正オプション -eltorito-alt-boot の間の区切り文字はありません。したがって、-e は -b にオーバーライドされるため、結果の ISO には EFI の El Torito エントリがありません。

いずれにせよ、ISOLINUXの失敗をこれらの欠点に変えることはできません。私はこれが欠けている -b 修正オプションに関連していると思います。

xorrisoに起動可能なISO再生のための起動関連オプションに関するアドバイスを依頼することができます(ISOがxorrisoで作成されている場合は最適です)。 Archlinux ISOを正しく分析するには、xorriso-1.5.4以降が必要です。以前のバージョンでは、ブートオプションの組み合わせを使用する必要がないためです。

$ xorriso -indev archlinux-2022.06.01-x86_64.iso -report_el_torito as_mkisofs
...
-V 'ARCH_202206'
--modification-date='2022060115352200'
-isohybrid-mbr --interval:local_fs:0s-15s:zero_mbrpt,zero_gpt:'archlinux-2022.06.01-x86_64.iso'
-partition_cyl_align all
-partition_offset 16
-partition_hd_cyl 64
-partition_sec_hd 32
--mbr-force-bootable
-append_partition 2 0xef --interval:local_fs:1587200d-1763327d::'archlinux-2022.06.01-x86_64.iso'
-iso_mbr_part_type 0x00
-c '/syslinux/boot.cat'
-b '/syslinux/isolinux.bin'
-no-emul-boot
-boot-load-size 4
-boot-info-table
-eltorito-alt-boot
-e '--interval:appended_partition_2_start_396800s_size_176128d:all::'
-no-emul-boot
-boot-load-size 0
-isohybrid-gpt-basdat

一部はISO固有であるため、これらすべてを提供する必要はありません(-V 'ARCH_202206' --modification-date = '2022060115352200')。 xorrisoが独自に計算できるため、一部は実際には必要ありません(-partition_cyl_align all -partition_hd_cyl 64 -partition_sec_hd 32 -boot-load-size 0)。

オプションのリストと比較すると、これは(仮想)光学メディアからBIOSを介して起動できない直接的な原因であると確信しています。

  • -b 修正オプションがありません: -no-emul-boot -boot-load-size 4 -boot-info-table (-no-emul-boot バグが適用されました)

しかし、もっと質問があります。

  • -eltorito-alt-bootが見つからないため、EFIを光学メディアから起動できません。

  • -e修正オプション-isohybrid-gpt-basdatが見つからないため、厳しいEFI実装ではUSBスティックからGPTを起動できません。

  • -isohybrid-mbrが見つからないため、USBスティックからBIOSを介して起動できません。代わりに、重複した-GとぼやけたMBRイメージmbr_code.imgがあります(これはどこで得られましたか?)。

  • 難読化された入力ファイル../compile-linux/bios_boot.imgは、ISOのルートディレクトリにマップされます。

-bと-eは逆順ですが、大丈夫です。 EFIイメージのブートロードサイズ0は大きすぎてブートディレクトリに実際のサイズをリストできないため、正しいです(32MiBに制限)。

xorriso-1.5.4を使用してArchlinux ISOを操作するより簡単な方法があります。

xorriso -indev archlinux-2022.06.01-x86_64.iso \
        -outdev archlinux.iso \
        ... xorriso manipulation commands like -map or -rm ... \
        -boot_image any replay

(xorrisoの質問とサポートリクエストは、次のアドレスに送信するのが最善です。 [Eメール保護].)

良い一日を過ごしてください:)

まな

答え2

archlinux-2022.06.01-x86_64.iso合計起動可能4つ他の方法:

  • BIOSモードで(実際または仮想)ISO9660 CD / DVD
  • UEFIモードの(実際または仮想)ISO9660 CD/DVD
  • BIOSモードからHDD画像へ
  • UEFIモードからHDD画像へ

archisoプロファイル設定に応じて、UEFIブートモードには64ビットおよび32ビットx86 UEFI実装用の2つの別々のブートローダ(UEFI用語x64としてia32)も含まれているため、スタートモード。

そのような獣を作るのは複雑で、アーチ特殊ツールarchisoこのことをするにはそのような理由があると思います。車輪を再発明しようとする代わりに、それを使ってみるのが良いようです。ソースコードをarchisoカスタマイズする必要がある場合は、Gitlabにあります。

レポートを正しく解釈すると、xorrisoISOイメージは次の2つの方法でのみ起動可能であると主張します。

  • BIOSモードで(実際または仮想)ISO9660 CD / DVD
  • UEFIモードのHDDイメージで(ただし、MBRパーティションテーブルのみ)

また、イメージ内のブートレコードの状態cyl-align-offが逆になり、isohybrid cyl-align-allISOイメージのさまざまなコンポーネントが正しく整列していない可能性があることを示します。

実際のArch ISOでは、MBRは最初のパーティション(メインIiso9660ファイルシステムコンテンツ)がBIOSモード(状態0x80)で起動可能で、パーティションタイプIDが0x00であることを示します。これはパーティションタイプではないため、ISO9660ファイルシステムには一般的です。標準MBRによって割り当てられたID。イメージでは、MBRは最初のパーティションを起動できないと宣言し、タイプIDは0x83です。これは、ext4他のLinuxまたは他のファイルシステムで予想されるものです。

関連情報