web-dev-qa-db-ja.com

Buildrootを理解したい-3つの圧縮構成オプション(カーネル、initramfs、rootfs)

私はbuildrootを使用して画像を生成していますが、さまざまな方法(LZO、LZMA、gzipなど)を使用して圧縮するオプションがあることは確かです。

これまでのところ、buildroot(v。2013.11)で次の3つの圧縮オプションを見つけました。

  • カーネル圧縮モード(make linux-menuconfig内)

  • 組み込みのinitramfs圧縮モード(make linux-menuconfig内)

  • .cpioルートファイルシステムの圧縮方法((make menuconfig内)

私の質問は次のとおりです。

  1. これらのモードとの違いは何ですか
  2. カーネル圧縮を非圧縮のままにするのではなく、3つの方法から選択する必要があるのはなぜですか?

あいさつ

2
user3085931
  1. 3つの異なるオプションは、生成されたLinuxシステムの3つの異なる側面、カーネル自体、initramfs、および結果ファイルシステム用です。

    • カーネル圧縮モード:コンパイルされたカーネルイメージを圧縮します。たとえば、私のUbuntu 12.04マシンでは、カーネルは/boot/vmlinuz-3.8.0-35-genericにあります。
    • 組み込みのinitramfs圧縮モード:初期RAMファイルシステムイメージの圧縮。私のマシンでは、これは/boot/initrd.img-3.8.0-35-genericになります。
    • .cpioルートファイルシステムの圧縮方法:これはルート/ファイルシステムです。デスクトップシステムでは、これは通常、ディスクパーティション(ext2/3/4 ...)であり、/に読み取り/書き込みでマウントされます。組み込みシステムでは、圧縮された.cpioアーカイブが/に読み取り専用でマウントされます(起動が完了した後)。

    Linuxカーネルはブートローダーによってメモリに解凍されてから制御が与えられ、カーネルはルートfsとして 初期ramファイルシステム をマウントし、initramfsは実際のロードを含む特定のタスクを実行しますファイルシステム(.cpioルートファイルシステム)とブートプロセスの終了。

    3つの異なるモードは異なる圧縮アルゴリズムを使用し、データを解凍する際の要件は異なります。メモリ使用量、解凍時間(CPU使用率)、およびライブラリ解凍ルーチンのサイズです。

    したがって、ニーズとターゲットプラットフォームにより適した圧縮アルゴリズムを選択する必要があります。さまざまなライブラリ(ベンチマーク)の要件とパフォーマンスを比較する多くのチャートがあります。

  2. buildrootは通常(私が知っているように)組み込みデバイスを対象としています。これらのデバイスではサイズ係数が非常に重要であるため、通常、initramfs、カーネル、およびルートファイルシステムを圧縮する必要があります。

    実際、非組み込みデバイス(デスクトップ、サーバーなど)でも、カーネルとinitramfsは通常圧縮されています。これを行うことの長所は短所を上回ります。

3
aularon