rootfs の読み書き範囲を使用した squashfs イメージのマウント

rootfs の読み書き範囲を使用した squashfs イメージのマウント

Squashfsイメージをルートファイルシステムとしてマウントするために、カスタムinitramfs initスクリプトを更新しようとしています。私はスクイーズイメージを読み取り専用でループデバイスにマウントし、別の空のファイルを読み取り/書き込みで別のループデバイスにマウントし、デバイスマッパーを使用してroループデバイスのrwスナップショットを作成することをテストしてきました。

私はテストスクリプトを使ってこれを行いました(rootとして実行)。

mkdir /tmp/squash_rw
dev=$(losetup -f)
losetup -r $dev /mcp_fs.sqsh
ovl=/overlay
newdevname=overlay
size=$(blockdev --getsz "$dev")
loop=$(losetup -f --show -- "$ovl")
printf '%s\n' "0 $size snapshot $dev $loop P 8" | dmsetup create "$newdevname"

その後、タッチを使用して新しいデバイスがrwにマウントされているかどうかをテストしましたが、読み取り専用デバイスというエラーが発生しました。

 # touch /tmp/squash_rw/test
touch: cannot touch '/tmp/squash_rw/test': Read-only file system

私はGentooディストリビューションとデバイスマッパーとsquashfsモジュールを含むLinuxカーネル3.10.6を使用しています。多くの参考文献でdracut initramfsを使用することを提案していますが、私はベンダーから提供されたinitスクリプトが機能するようにしたいと思います。

私は数日間この問題に閉じ込められており、誰でも提供できる助けをいただきありがとうございます。

継続的な研究と実験の終わりに私が作成しているdevmapperデバイスは、最初のデバイスのファイルシステムが一緒にマージされていると仮定しているようです。 squashfsデバイスを使用するとdevmapperデバイスは読み取り専用で、rwイメージを使用するとdevmapperデバイスはrwですが、squashファイルの内容なしでマウントされます。

ベストアンサー1

おすすめ記事