Squashfsイメージを使用してrootfsで起動する方法

Squashfsイメージを使用してrootfsで起動する方法

USBドライブにライブISOを挿入し、GRUB2を使用して起動メニューを作成したいシステムルートからsquashfsイメージを作成しました。

Squashfsイメージをルートファイルシステムとして指定するには、どのカーネルブートパラメータを使用する必要がありますか?

私はそれをグラブ構成として使用しますが、Dracut失敗するルートの検索とマウント:

insmod gzio
insmod xzio
insmod part_msdos
insmod squash4
insmod iso9660
insmod ext2
insmod btrfs
insmod regexp
menuentry 'Fedora Workstation' {
    set imgfile=/images/fedora*.squashfs
    loopback loop0 /$imgfile
    linux16 (loop0)/boot/vmlinuz-4.1.8-200.fc22.x86_64 ro rd.fstab=0 root=$imgfile elevator=deadline enforcing=0 #rhgb quiet LANG=en_US.utf8
    initrd16 (loop0)/boot/initramfs-4.1.8-200.fc22.x86_64.img
}

答え1

私の考えでは、initramfsを使い続けるべきだと思います。ほとんどすべての操作が可能ですが、squashfsファイルシステムのカーネルモジュールが必要です。(まだカーネルにコンパイルされていない場合)initramfs画像に。

ほとんどのinitramfsシステムはfstabを尊重し、Dracutも同様です。したがって、2つの/etc/fstabファイル(.sfsイメージに1つ、initramfsイメージに1つ)を構成するだけです。

{   cd /tmp; cat >fstab
    mkdir -p sfs/sfs sfs/usb
    dracut  -i fstab /etc/fstab     \
            -i sfs sfs              \
            --add-drivers overlay   \
            --add-drivers squashfs  \
            initramfs.img 
}   <<"" #FSTAB
    UUID={USB-UUID}     /sfs/usb    $usbfs      defaults    0 0
    /sfs/usb/img.sfs    /sfs/sfs    squashfs    defaults    0 0

正直なところ、私はdracutinitramfsビルドシステムに完全に慣れていないので、このコマンドを正常に完了するにはいくつかのことが必要です。ほとんどのinitramfsインストールの設定方法と、manページで見つけた情報について全体的に慣れています。dracut ここ。追加の組み立てが必要になる場合がありますが、これはうまくいきます。

適切な/etc/fstabinitramfsをインストールしたら、次のルートデバイス関連パラメータを使用してoverridefs rootfsを取得できる必要があります。

root=overlay \
rootfstype=overlay \
rootflags=\
lowerdir=/sfs/sfs,\
upperdir=/sfs/usb/persist,\
workdir=/sfs/usb/tmp

これは、USBドライブに名前が付けられたディレクトリ/persistと名前が異なる空のディレクトリがあり/tmp、squashfsイメージが名前のあるUSBファイルシステムのルートにあると仮定します/img.sfs

関連情報