web-dev-qa-db-ja.com

PXelinuxと圧縮カーネル/画像

それはPXELINUXとinitrdを圧縮して圧縮されたカーネルをブートすることは可能ですか?

まず、少し背景:

私たちは、ディスクレスOpenCLの計算ノードのために、カスタムLinuxディストリビューションを作成しました。私たちは、これらのノードがネットワークから自分のOSを取得したいです。私たちのディストリビューションがにロードされたカーネル(当たり前)と大型のinitrdから出て構成されてRAMとすべてがそこから実行されます。

我々は2つの理由のためにinitrdオフにすべてを実行するように選択しました:

  • NFSは、ファイルシステムの余分な内容を提供するためのオプションではなかったです
  • RAMからの高速ファイルアクセス。
  • 永続ストレージは必要ありませんんが、データや設定はSOAPサービスを通じて動的に引かれます。

今、私たちのinitrdのサイズは450Mについてです。当社のネットワーク速度では、それは単一のクライアントをロードするのに約2〜3分かかります。 1が使用されるべき、TEダウンロードスピードアップを圧縮し、そうであればだろうか? LZMAはPXELINUXによってサポートされている、あるいは我々は、BZIP2またはgzipのに固執する必要がありますか?

そのため2〜3分のロード時間を、同じネットワークリンク上で15個のノードをブートするのは時間のかなり多くを取ります。私たちは、経済的な理由のためにハードドライブまたはCD/DVDドライブを使用しないことを決め(最も安いHDDを@€30回15は、たくさんのお金が保存されている;-))

だから、私たちの質問は:圧縮オプションは、このセットアップのために利用可能ですか?そして、どのように我々はこれを行うのですか?

お時間をいただき、ありがとうございます!

イヴァン・ジャンサン

3
friedkiwi

どうやってinitrdを作りましたか?私が知っているほとんどのシステムは最後のステップでそれらを圧縮します。

> file /boot/initrd-2.6.37.1-1.2-desktop
/boot/initrd-2.6.37.1-1.2-desktop: gzip compressed data, [...]
 _

カーネルは圧縮をサポートする必要があります。

> cat /boot/config-2.6.37.1-1.2-desktop |grep CONFIG_RD_
CONFIG_RD_GZIP=y
CONFIG_RD_BZIP2=y
CONFIG_RD_LZMA=y
CONFIG_RD_LZO=y
 _

しかし、450MB RAMディスクは450MBのメモリが少ないことを意味します - そしてHDDがないと、スワップしません。

ネットワーク化されたファイルシステムを真剣に調べる必要があります. GPXE (gpxe)== iscsi、aoe、さらにはHTTPからロードできます。

1
Turbo J

キャスパーとスワッシュフを実装することについてあなたは持っていますか。そのように、initrdを最小限のサイズに保つことができます。多分約25 MB、Squashfsを別々に送信できます。 SquashfsはLZMA圧縮をサポートし、別の魔法を扱う方法を見れば、initrdにSquashfsを置きます。カーパースクリプトはそれを見つけるでしょう。

0
darkdragn

1)典型的なLinuxカーネルが圧縮されているので、そのinitrdで同じもので、建物チェーンを確認してください。

2)あなたの数字はあなたがスワッシュフを必要としないと言います

3)PXELinuxは、Kernel/INITRD圧縮方法を気にしない場合もあります。

0
Pat