web-dev-qa-db-ja.com

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

システムルートからsquashfsイメージを作成しました。いくつかのLive ISOのUSBドライブにそれを置き、GRUB2を使用してブートメニューを作成します。

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

これをgrub構成として使用しましたが、Dracut fails でルートを見つけてマウントしました。

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
}
4

私の意見では、まだinitramfsを使用する必要があります。ほとんど何でもできますが、squashfsファイルシステムカーネルモジュールが必要です(まだカーネルにコンパイルされていない場合)initramfsイメージ。

ほとんどのinitramfsシステムはfstabを尊重します-そしてもちろんDracutは尊重します。そして、2つの/etc/fstabファイルを構成するだけです。1つは.sfsイメージに、もう1つはinitramfsイメージに設定します。

{   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

正直言って、私はdracut initramfsビルドシステムに完全に精通しているわけではないので、そのコマンドを正常に完了するにはさらに何かが必要になる可能性があります。ほとんどのinitramfsマウントがどのように設定されているか、およびmanページでdracuthere に記載されている情報の一般的な知識を使用しています。さらに組み立てが必要かもしれませんが、これでかなりうまくいくはずです。

Initramfsに適切な/etc/fstabをインストールしたら、次のルートデバイス関連パラメーターを使用してoverlayfs rootfsを取得できるはずです。

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

これは、/persistという名前のUSBドライブにディレクトリがあり、/tmpという名前の空のディレクトリが1つあり、squashfsイメージが/img.sfsとしてUSBファイルシステムのルートにあることを前提としています。

2
mikeserv