xorrisoはVirtualBoxでISOブートを生成しますが、実際のノートブックでは生成しません。

xorrisoはVirtualBoxでISOブートを生成しますが、実際のノートブックでは生成しません。

修正されたUbuntu 22.04 ISOイメージを作成しました。最新のデスクトップISOイメージ。新しいVirtualBox VMからISOとして正しく起動してインストールされます(UEFIを有効にしていない場合)。ただし、比較的新しいノートブックは、修正されたISOでフォーマットされたUSBスティックから起動できません。認識してインストールされます。私はxorrisoを誤用していると思いますが、私の間違いを見つけるのに十分な理解はありません。私は何が間違っていましたか?

xorrisoは、元のUbuntu 22.04デスクトップISOについて次の詳細を報告します。

$  xorriso -indev jammy-desktop-amd64.iso -report_el_torito as_mkisofs
xorriso 1.5.4 : RockRidge filesystem manipulator, libburnia project.

xorriso : NOTE : Loading ISO image tree from LBA 0
xorriso : UPDATE :     963 nodes read in 1 seconds
libisofs: NOTE : Found hidden El-Torito image for EFI.
libisofs: NOTE : EFI image start and size: 2007921 * 2048 , 8496 * 512
xorriso : NOTE : Detected El-Torito boot information which currently is set to be discarded
Drive current: -indev 'jammy-desktop-amd64.iso'
Media current: stdio file, overwriteable
Media status : is written , is appendable
Boot record  : El Torito , MBR protective-msdos-label grub2-mbr cyl-align-off GPT
Media summary: 1 session, 2010211 data blocks, 3926m data, 1117g free
Volume id    : 'Ubuntu 22.04.1 LTS amd64'
-V 'Ubuntu 22.04.1 LTS amd64'
--modification-date='2022080117275700'
--grub2-mbr --interval:local_fs:0s-15s:zero_mbrpt,zero_gpt:'jammy-desktop-amd64.iso'
--protective-msdos-label
-partition_cyl_align off
-partition_offset 16
--mbr-force-bootable
-append_partition 2 28732ac11ff8d211ba4b00a0c93ec93b --interval:local_fs:8031684d-8040179d::'jammy-desktop-amd64.iso'
-appended_part_as_gpt
-iso_mbr_part_type a2a0d0ebe5b9334487c068b6b72699c7
-c '/boot.catalog'
-b '/boot/grub/i386-pc/eltorito.img'
-no-emul-boot
-boot-load-size 4
-boot-info-table
--grub2-boot-info
-eltorito-alt-boot
-e '--interval:appended_partition_2_start_2007921s_size_8496d:all::'
-no-emul-boot
-boot-load-size 8496

そして、ほとんどの同じパラメータを使用して新しいISOを作成します。

$ xorriso -as mkisofs -o my-modified-ubuntu-22.04.iso \
    -V 'Modified Ubuntu 22.04 amd64' \
    --grub2-mbr --interval:local_fs:0s-15s:zero_mbrpt,zero_gpt:'jammy-desktop-amd64.iso' \
    --protective-msdos-label \
    -partition_cyl_align off \
    -partition_offset 16 \
    --mbr-force-bootable \
    -append_partition 2 28732ac11ff8d211ba4b00a0c93ec93b \
    --interval:local_fs:7129428d-7137923d::'jammy-desktop-amd64.iso' \
    -appended_part_as_gpt -iso_mbr_part_type a2a0d0ebe5b9334487c068b6b72699c7 \
    -c '/boot.catalog' \
    -b '/boot/grub/i386-pc/eltorito.img' \
    -no-emul-boot \
    -boot-load-size 4 \
    -boot-info-table \
    --grub2-boot-info \
    -eltorito-alt-boot \
    -e '--interval:appended_partition_2_start_1782357s_size_8496d:all::' \
    -no-emul-boot \
    -boot-load-size 8496 \
    <SRC_DIR>

<SRC_DIR>は元のISOをベースにしたオーバーレイですが、ルートディレクトリで次のファイルを修正しました。

  • /casper/filesystem.squashfs
  • /casper/filesystem.manifest
  • /casper/filesystem.size
  • /md5sum.txt
  • /preseed/ubuntu.seed

他のすべてのファイルとISOの内容は元のファイルと同じです。

私はISOほぼVirtualBoxで正しく実行され、必要な修正が表示されるので大丈夫です。ただし、元のUbuntu 22.04デスクトップISOから起動しても、ラップトップでそれを確認して起動することを強制することはできません。 :(

私はもともとアップストリームISOでインストールされていたのと同じノートブックにUbuntu 22.04デスクトップを使用しています。

そして、次のようにUSBキーを作成しました。

$ dd bs=4M \
    if=/home/me/my-modified-ubuntu-22.04.iso \
    of=/dev/sda \
    status=progress \
    oflag=sync

$ xorriso --version
xorriso 1.5.4 : RockRidge filesystem manipulator, libburnia project.

xorriso 1.5.4
ISO 9660 Rock Ridge filesystem manipulator and CD/DVD/BD burn program
Copyright (C) 2019, Thomas Schmitt <[email protected]>, libburnia project.
xorriso version   :  1.5.4
Version timestamp :  2021.01.30.150001
Build timestamp   :  -none-given-
libisofs   in use :  1.5.4  (min. 1.5.4)
libjte     in use :  2.0.0  (min. 2.0.0)
libburn    in use :  1.5.4  (min. 1.5.4)
libburn OS adapter:  internal GNU/Linux SG_IO adapter sg-linux
libisoburn in use :  1.5.4  (min. 1.5.4)
Provided under GNU GPL version 3 or later, due to libreadline license.
There is NO WARRANTY, to the extent permitted by law.

答え1

xorrisoはよく走っているようです。 ubuntu-22.04-desktop-amd64.isoをSRC_DIRとしてインストールし、xorrisoが起動デバイスを報告するようにしました。唯一の重要な違いは、ボリュームID(-V)と--modification-dateです。理論的には、ISOを見つけるにはGRUBまたはブートシステムの両方が必要な場合があります。ただし、GRUBがISOを見つけることができない場合は、少なくともGRUBの一部のメッセージテキストを表示できる必要があり、VirtualBoxは実際のシステムよりもうまく機能しないはずです。

セキュリティブートが問題の潜在的な原因だと思います。しかし、ラップトップのEFIで無効にすることができる以外は、実験を提案するのに十分なことを知りません。

実験できる唯一のアイデアは、ファイルシステムを上書きせずにISOを元のファイルコンテンツに再パッケージ化すると機能することを確認することです。

(ここに結果を投稿しましたが返信が届かない場合は、メールでお問い合わせください。 [Eメール保護])


Trevorが回答した後に更新されました。

したがって、VirtualBoxはEFIではなくBIOSを介して起動できます。

これらのオフセットを自動的に取り出す方法があることを願っています。

デフォルトのコマンドモードでは、xorrisoはISOをロードし、ロードされたISOモデルを操作し、古いISOのデータと変更に基づいて新しいISOを作成できます。面倒な数字は隠されています。最後に、xorrisoの実行を参照してください。 https://dev.lovelyhq.com/libburnia/libisoburn/raw/branch/master/test/merge_debian_isos または私の答えの終わり カスタムUbuntu 22.04イメージから起動可能なISOを作成するには? 重要なのは、-indev、-outdev、および-boot_image「すべて」「再生」です。

答え2

@Thomas、問題は、もともとISOで再利用されたパーティションの場所が開発中に変更されたことに気づかなかったことです。バイトオフセットを更新する必要があります。より:

@@ -144,7 +144,7 @@ Makefile
                -partition_cyl_align off \
                -partition_offset 16 \
                --mbr-force-bootable \
-               -append_partition 2 28732ac11ff8d211ba4b00a0c93ec93b --interval:local_fs:7129428d-7137923d::'jammy-desktop-amd64.iso' \
+               -append_partition 2 28732ac11ff8d211ba4b00a0c93ec93b --interval:local_fs:8031684d-8040179d::'jammy-desktop-amd64.iso' \
                -appended_part_as_gpt -iso_mbr_part_type a2a0d0ebe5b9334487c068b6b72699c7 \
                -c '/boot.catalog' \
                -b '/boot/grub/i386-pc/eltorito.img' \
@@ -152,7 +152,7 @@ Makefile
                -boot-load-size 4 \
                -boot-info-table \
                --grub2-boot-info \
-               -eltorito-alt-boot -e '--interval:appended_partition_2_start_1782357s_size_8496d:all::' \
+               -eltorito-alt-boot -e '--interval:appended_partition_2_start_2007921s_size_8496d:all::' \
                -no-emul-boot \
                -boot-load-size 8496 \
                iso/overlay

今大丈夫です。質問を投稿するとき、xorrisoが報告した出力にもっと注意を払う必要がありました。邪魔してすみません。

これらのオフセットをハードコードするのではなく、自動的に抽出する方法があることを願っています。しかし、それは別の日の問題だと思いますか? :)

関連情報