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

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

があると仮定すると、filesystem.squashfs以下を介して接続できます。

mksquashfs somefile filesystem.squashfs

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

mksquashfs somedir/ filesystem.squashfs

その中のファイルとディレクトリはsomedir/squashfsファイルのルートディレクトリに追加されます。 squashfsツリーにディレクトリまたはファイルがある場合、mksquashfs古いファイルとディレクトリを変更せずに新しいファイルの名前が変更されます。その場合、「追加」というフレーズは意味があります。

私はunsquashfssquashfsを解凍する方法を知っていますが、解凍せずにsquashfsツリー内の既存のサブディレクトリに新しいファイルやディレクトリを追加する方法があるかどうか疑問に思います。

ベストアンサー1

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

mksquashfsの仕組みを理解する必要があります。概して、GrowthisofsがDVDに書き込むのと同様の方法でデータ圧縮ブロックを徐々に追加し、最終的に画像の表形式の内容であるTOCを更新します。もちろん、古いディレクトリを「削除」することはできません。なぜなら、増分書き込みは過去ではなく、将来にのみ関心があるからです! ! ! !

しかし、イメージ全体をdequashfsせずにsquashfsファイルを変更するための非常に簡単な方法があります(これはRAMやストレージデバイスの多くを占めることができます... dvd_iso 3-5GBイメージを考えてみてください!)。地図理念は次のとおりです。

1squashfs_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....)

説明のために、例はディレクトリの変更を示していますが、rootfsではetc usr ...を除いて、変更されたetc usrを2行目の追加メカニズムに追加できます。

ntfs raw パーティションを使用せずに 4 GB RAM "windows10 ノートブック" で完全な livecd Ubuntu を再管理する必要がある場合は、この方法を使用します。

助けてくれたら、Wang Ji。

おすすめ記事