私はbuildrootを使用して画像を生成していますが、さまざまな方法(LZO、LZMA、gzipなど)を使用して圧縮するオプションがあることは確かです。
これまでのところ、buildroot(v。2013.11)で次の3つの圧縮オプションを見つけました。
カーネル圧縮モード(make linux-menuconfig内)
組み込みのinitramfs圧縮モード(make linux-menuconfig内)
.cpioルートファイルシステムの圧縮方法((make menuconfig内)
私の質問は次のとおりです。
あいさつ
3つの異なるオプションは、生成されたLinuxシステムの3つの異なる側面、カーネル自体、initramfs、および結果ファイルシステム用です。
/boot/vmlinuz-3.8.0-35-generic
にあります。/boot/initrd.img-3.8.0-35-generic
になります。/
ファイルシステムです。デスクトップシステムでは、これは通常、ディスクパーティション(ext2/3/4 ...)であり、/
に読み取り/書き込みでマウントされます。組み込みシステムでは、圧縮された.cpio
アーカイブが/
に読み取り専用でマウントされます(起動が完了した後)。Linuxカーネルはブートローダーによってメモリに解凍されてから制御が与えられ、カーネルはルートfsとして 初期ramファイルシステム をマウントし、initramfsは実際のロードを含む特定のタスクを実行しますファイルシステム(.cpioルートファイルシステム)とブートプロセスの終了。
3つの異なるモードは異なる圧縮アルゴリズムを使用し、データを解凍する際の要件は異なります。メモリ使用量、解凍時間(CPU使用率)、およびライブラリ解凍ルーチンのサイズです。
したがって、ニーズとターゲットプラットフォームにより適した圧縮アルゴリズムを選択する必要があります。さまざまなライブラリ(ベンチマーク)の要件とパフォーマンスを比較する多くのチャートがあります。
buildrootは通常(私が知っているように)組み込みデバイスを対象としています。これらのデバイスではサイズ係数が非常に重要であるため、通常、initramfs、カーネル、およびルートファイルシステムを圧縮する必要があります。
実際、非組み込みデバイス(デスクトップ、サーバーなど)でも、カーネルとinitramfsは通常圧縮されています。これを行うことの長所は短所を上回ります。