web-dev-qa-db-ja.com

rootfs内の重複ファイルを削除する-起動時間を短縮し、メモリ使用量を改善する

Buildrootを使用して、組み込みLinuxハードウェア用のイメージを作成しています。主に、ブートシーケンスを高速化しようとしています(そして途中でメモリ使用量を減らしています)。そこでは、多くの手法をうまく試しました。

やりたいこと:最近、ディレクトリ内の重複ファイルを削除することについて聞いたことがあります(たとえば、それらのファイルをシンボリックリンクに置き換えることによって)。このメソッドをrootfsに適用したいと思います。

周囲:Buildrootを使用すると、makeの間に1(パック)として作成されるさまざまなタイプのrootfs形式(cramfs、cpio、ext2/3/4など)を使用できます。 )ファイル(例:rootfs.cpio)。今、私は本当に方法がわかりません:

  • 画像を開く
  • 重複ファイルを削除する(私は一般的に重複ファイルを削除する方法をよく知っています)
  • rootfsを再度パックします-それでも、ハードウェアでフラッシュして実行するために使用できます

多分それは全く不可能ですらありません。少なくとも静的ライブラリを使用する場合、多くのファイルを置き換えることができると思います。

誰かアイデアがありますか?

1
user3085931

私はbuildroot固有のものを手伝うことはできません(重複を削除する前にマウントまたはブートする必要があると言う以外は、newrootfsをから作成します結果のファイルシステム)が、重複を削除することはかなり可能です。単純なアプローチは、find / -type f -exec sha256sum {} + | sort > checksums.txt、結果のファイルをwhile read -r checksum pathで1行ずつ読み取り、各チェックサムを前のチェックサムと比較し、重複を削除(または ハードリンク )することです。これは、たとえば改行を含む奇妙なファイル名を処理しませんが、あなたの場合は問題にならないはずです。

2
l0b0

静的ライブラリがどのようにミックスに入るのかわかりません。静的ライブラリはnot Buildrootを使用してターゲットルートファイルシステムに存在します。

一般的に言って、Buildrootはターゲットに必要なものだけをインストールしようとしますが、正直なところ、そこに多くの重複ファイルが見つかるとは思えません。

1