web-dev-qa-db-ja.com

squashfsファイル内のサブディレクトリに追加します

filesystem.squashfsがあるとすると、次のように追加できます。

mksquashfs somefile filesystem.squashfs

squashfsファイルのルートにsomefileを追加します。追加ディレクトリ:

mksquashfs somedir/ filesystem.squashfs

somedir/内のファイルとディレクトリをsquashfsファイルのルートに追加します。 squashfsのツリーにディレクトリまたはファイルが存在する場合、mksquashfsは古いファイルとディレクトリを変更せずに、新しいファイルの名前を変更します。 「追加」という語句は理にかなっています。

私はsquashfsを解凍するunsquashfsを知っていますが、おそらく解凍せずに新しいファイルまたはディレクトリをsquashfsツリー内の既存のサブディレクトリに追加する方法があるかどうか知りたいですか?

4
2i3r

もちろん、ディレクトリやファイルをsquashfs_fileに追加することは可能です。

Mksquashfsの動作方法を理解する必要があります。大まかに言うと、growisofsがDVDに書き込むのと同じように、データの圧縮ブロックを段階的に追加しています。最後に、画像のテーブルコンテンツの種類である目次を更新します。もちろん、古いディレクトリを「クリア」することはできません。インクリメンタルな書き込みは、未来ではなく過去のみを対象とするためです!!!!

しかし、イメージ全体をunsquashfsせずにsquashfsファイルを変更する非常に簡単な方法があります(RAMまたはストレージデバイスで多くのスペースを必要とする可能性があります... dvd_iso 3-5 GBイメージを考えてください!)。ガイドのアイデアは次のように機能します。

1マウントsquashfs_file/mnt(ストレージを使用したマウントはunsquashfsよりはるかに少ない)

2変更するディレクトリを除外してsquashfs_fileを再構築し、必要な新しいディレクトリを追加します。

詳細例:

  • cp /mnt/specific_dir $home ##modify $home/specific_dir as needed
  • mksquashfs /mnt new_squashfs_file -wildcards -e specific_dir
  • mksquashfs $home/specific_dir new_squashfs_file -keep-as-directory
  • umount /mnt # cleanup

もちろん、mksquashfsの他のすべてのオプションは通常として追加できます(ブロックサイズ;圧縮スキーム....- b 1048576 -comp xz ....)

この例は、明確にするために1つのディレクトリ変更を示しています。ただし、rootfsでは、etc usrを除外できます。次に、変更されたetcusrを2行目の追加メカニズムに追加します。

これは、ntfsの元のパーティションに触れることなく、4GBのRAM「windows10ラップトップ」でlivecdubuntu全体をリマスターする必要がある場合に使用する方法です。

HopeThatHelp、ワンジ。

2
user3477652