web-dev-qa-db-ja.com

読み書きでsquashfsファイルシステムをマウントする

USBスティックにClonezillaをインストールしていますが、オペレーティングシステムに変更を加えたいのですが。具体的には、実行可能なスクリプトを/usr/sbinに挿入して、独自のバックアップコマンドを簡単に実行してバックアップの負担を軽減したいと思います。

メインファイルシステムは、USB FAT-32パーティションの/live/filesystem.squashfsの下にあります。

ファイルを追加/削除/変更できるように、Linuxマシンにこの読み取り/書き込みをマウントするにはどうすればよいですか?私はUbuntu 12.04派生物を実行しています。

48
Naftuli Kay

Rootとして、filesystem.squashfsを空のディレクトリにコピーします。例:

cp /mnt/clonezilla/live/filesystem.squashfs /path/to/workdir
cd /path/to/workdir

ファイルを解凍して、別の場所に移動します(バックアップとして保持します)。

unsquashfs filesystem.squashfs
mv filesystem.squashfs /path/to/backup/

squashfs-rootに移動し、好みに応じて追加/変更してから、filesystem.squashfsを再作成します。

cd /path/to/workdir
mksquashfs squashfs-root filesystem.squashfs -b 1024k -comp xz -Xbcj x86 -e boot

新しく作成したfilesystem.squashfsを、USBドライブ上の既存のものにコピーします。例:

cp filesystem.squashfs /mnt/clonezilla/live/

次に、再起動してLIVE USBを使用します。

注:上記のコマンドはsquashfs-toolsの一部です。

43
don_crissti

システムがaufsまたはoverlayfsなどのuion-filesystemをサポートしている場合、元のsquashfsファイルを抽出する必要はありません。

たとえばoverlayfsが使用されます(それを有効にするカーネルオプション):squashfs.fileを/ fmにマウントできますまたはどこか最初に。 2つのディレクトリを含む書き込み可能なファイルシステムを準備します。たとえば、/ toおよび/ temp。マージされた結果のために別の書き込み可能なディレクトリ/ finを準備します。それらを一緒にoverlayfsとしてシステムにマウントします---

mount -t overlay -o lowerdir=/fm,upperdir=/to,workdir=/temp overlay /fin

/ finでファイルを追加/変更できるようになりました。すべてが完了したら、mksquashfs/ finを新しいsquashfsファイルに、

mksquashfs /fin newfile; umount /fin

次に、使用する他のすべてのディレクトリをクリアまたはマウント解除します。

squashfsおよび一部のnionfsは、一般的にlive-cdに使用されます。

5
Zhi-Ming Chen

ここ 、私は他の答えを見つけました:

bash# mount dir.sqsh /mnt/dir -t squashfs -o loop
2
User

示されているようにoverlayfsを使用することは、疑似 "squashfs rw"を持つ最良の方法です。ただし、> 4.xカーネル(またはubuntu> 14.x trusty)で実行する必要があります。

Overlayfs/aufs/unionfsなしで古いライブCDを使用している場合の代替ソリューションは、squashfs独自の機能を利用することです。

重要:unsquashfsがないため、これは低ストレージシステムで実行できます

例:

Squashfsの「usr」ディレクトリを変更する

mount squashfs_file /mnt    # 1
cp -a /mnt/usr $HOME        # 2  Modify whatever $HOME/usr as needed
mksquashfs /mnt new_squashfs_file -wildcards -e usr   # 3
mksquashfs $HOME/usr new_squashfs_file -keep-as-directory # 4
umount /mnt  # 5  Cleanup

行3はolddir_usrを除いて一時的にsquashfsfileをビルドします
4行目は、modified-usr-dirをnew_squashfsfileに追加します

ここ squashfsを追加するを参照してください

0
user3477652