最初に書いておきます。Debian系とRedHat系で全然違うので、検索してたどり着いたページに何が書かれているかをしっかり確認してください。とりあえず、RedHat系の方がお手軽なのでそっちの流儀で説明しますが…mkisofs用の作業用ディレクトリをwork/とすると、その下のディレクトリ構造とファイルの配置をこうします。
work
|-- LiveOS
| `-- squashfs.img
|-- boot
| |-- initrd.img
| `-- vmlinuz
`-- isolinux
|-- isolinux.bin
|-- isolinux.cfg
`-- ldlinux.c32
|
LiveOS/squashfs.imgのディレクトリ名/ファイル名は固定されていること、ldlinux.c32をisolinux/に配置する必要がある点に注意が必要です。また、isolinux.cfgのCDLABELで指定される名称はmkisofs -Vで指定する名称と一致している必要があります(CDLABELの名称については参考にしたブータブルLinuxISOを手作りするでも触れられています)。
でも一番重要なのはvmlinuzとinitrd.imgで、RedHatの流儀で作る以上はRedHat系distroの物を使う必要がある、ということです。これを書いている時点だとCentOS-stream 9にあるものを使うのが早いです(squashfs.img以外はすべてここで揃います)。
ISOイメージの作成は mkisofs -o output.iso -R -J -V linux -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table work で。
NostrでumbrelOSのISOイメージは無いのか、という話があったので挑んでいたのですがなかなかの難問でした。提供されているのがUSBメモリ向けのディスクイメージ、しかもGPT形式のパーティションかつEFI boot専用の物しかないのです。HDDエミュレーションのEl Torito(ISO9660)を作っても起動しようがないので、インストール用データの格納された区画をsquashfsで固めてLiveCDにするしかないかなって。
umbrelOSはDebian系distroではあるんですが、CentOS-streamのvmlinuz+initrdでもインストーラを起動させてVirtualBoxの仮想マシンにインストールするところまではできています。
とはいえ、インストールした後にどうやって使うかがまったく分からないので困っています。あと、VirtualBoxはEFI boot可能なので問題にはなりませんが、EFI bootできないマシンでインストール後にどうやって起動できるようにするかという問題も解決していません。57.7kg(10:55)
07-May-2024補足:vmlinuzとinitrd.imgを拝借したCentOS 9-streamはkernel-5.14.0-437.el9、umbrelOS(Debian-12)はkernel-6.1.0-20を使用しています。カーネルのバージョンが異なるために/usr/lib/modulesにあるカーネルモジュールを使えない以上、initrd.imgに入っているモジュールだけで動いているのでしょうが…インストール用メディアに格納されたファイルをインストール先のディスクに展開する程度ならなんとなく動いていても、それを超えるような用途だと問題が発生しそうな気がします。
それ以前に、EFI boot対応のPCエミュレータならumbrelOSのインストール用USBメモリイメージを(圧縮を解いてから)仮想HDDとして接続してしまえば良いだけなので、ISO化する必要は無いはずです。随分と馬鹿なことをやったもんだ、と今更ながら思っています。
19-May-2024補足:要らない気もするのですが、ISOイメージを作るためのスクリプトを書いてみました。説明の補足として置いときます。