Buildrootを使用して、組み込みLinuxハードウェア用のイメージを作成しています。主に、ブートシーケンスを高速化しようとしています(そして途中でメモリ使用量を減らしています)。そこでは、多くの手法をうまく試しました。
やりたいこと:最近、ディレクトリ内の重複ファイルを削除することについて聞いたことがあります(たとえば、それらのファイルをシンボリックリンクに置き換えることによって)。このメソッドをrootfsに適用したいと思います。
周囲:Buildrootを使用すると、make
の間に1(パック)として作成されるさまざまなタイプのrootfs形式(cramfs、cpio、ext2/3/4など)を使用できます。 )ファイル(例:rootfs.cpio
)。今、私は本当に方法がわかりません:
多分それは全く不可能ですらありません。少なくとも静的ライブラリを使用する場合、多くのファイルを置き換えることができると思います。
誰かアイデアがありますか?
私はbuildroot固有のものを手伝うことはできません(重複を削除する前にマウントまたはブートする必要があると言う以外は、newrootfsをから作成します結果のファイルシステム)が、重複を削除することはかなり可能です。単純なアプローチは、find / -type f -exec sha256sum {} + | sort > checksums.txt
、結果のファイルをwhile read -r checksum path
で1行ずつ読み取り、各チェックサムを前のチェックサムと比較し、重複を削除(または ハードリンク )することです。これは、たとえば改行を含む奇妙なファイル名を処理しませんが、あなたの場合は問題にならないはずです。
静的ライブラリがどのようにミックスに入るのかわかりません。静的ライブラリはnot Buildrootを使用してターゲットルートファイルシステムに存在します。
一般的に言って、Buildrootはターゲットに必要なものだけをインストールしようとしますが、正直なところ、そこに多くの重複ファイルが見つかるとは思えません。