私はLinuxディストリビューションを設計しており、読み取り専用ファイルシステムとマージされ、UnionFSマウントポイントを介してRAMディスクの下に積み重ねられる事前パッケージされた圧縮ファイルシステムビットを生成することを検討しています。ある意味では、これらのビットはインストールされるのではなく、RAM内のファイルシステムの一部としてインストールされ読み取られることを除いて、パッケージと同じです。まっすぐ読み取り専用ディスクから(メモリにコピーするものと比較)。
マウントポイントをたくさん作成せず、不要なアイテムをRAMにコピーせず、小さなファイルシステムを複数積み重ねて、多くのオーバーヘッドを生成せずにこれを行う方法を知りたいです。
...あるいはそれが可能であれば。
私はそれを使用していますユニオンFS-FUSEそしてクロップ。
ベストアンサー1
提案されているように、squashfs(圧縮用)とAUFS(ファイルシステムレイヤーを一緒に積み重ねてマージするため)の組み合わせを使用できます。 AUFSは別のユニオンファイルシステム(Another Union File System)を意味します。しかし、それはどのように達成されますか?ここではsquashfs / aufsを実装する簡単なサンプルスクリプトを提供します。
しかし、最初にDebianカーネルはaufsをサポートしていますが、Ubuntuはそうではありません。 :-( ディストリビューションが Debian ベースの場合は、いくつかの基本ツールをインストールできます。
apt-get install squashfs-tools aufs-tools
これでコマンドが表示されます。 mksquashfs コマンドはディレクトリを圧縮モジュールに圧縮します。そのファイルにアクセスできるように、2つのsquashfsモジュールが作成され、ここにインストールされます。次に、1つの書き込み可能ブランチと2つの読み取り専用ブランチ(つまり、squashfs)でaufsを作成します。 mountコマンドで指定されたオプションはブランチを指定します(man aufsを参照)。最後に、ファイルの変更が実際に書き込み可能なレイヤーに書き込まれるかどうかをテストするためのファイルを作成します。
それで、これが役に立つことを願っています。
#!/bin/bash
# apt-get install squashfs-tools aufs-tools
# The aim:- to create an aufs/squashfs that merges the file contents of /etc and /sbin
mkdir -p temp/{ro1,ro2,changes-dir,aufs-dir} && cd temp
# compress the files of etc and sbin into squashfs modules
# using /etc and /sbin only becos they are handy
mksquashfs /etc etc.sqsh -b 65536
mksquashfs /sbin sbin.sqsh -b 65536
# now mount the squashfs modules to make their files accessible
mount -o ro,loop etc.sqsh ro1
mount -o ro,loop sbin.sqsh ro2
# AUFS is the acronym for Another Union FileSystem
# mount aufs with 3 branches - a writable branch, and two readonly branchs
mount -t aufs -o br:$PWD/changes-dir=rw,br:$PWD/ro1=ro,br:$PWD/ro2=ro none $PWD/aufs-dir
cd aufs-dir
echo " make some file changes here, to prove the aufs filesystem is writable"
touch rofl
cd -
umount aufs-dir
umount ro1
umount ro2
# and finally we look into changes-dir, to see the stored file changes
ls changes-dir