私は最近Linuxカーネルのソースコードでカスタムビルドを実行する必要がありました。これで、カスタムカーネルが私のビルドに使用したコンピュータにインストールされ、正しく動作します。
今他の人もいます類似システム(つまり、ハードウェアの観点から)同じカーネルを実行したいと思います。あるマシンが別のマシンと同様のハードウェアを持っている場合、カーネルを再構築する必要がないことを知っている限り、私は特にすべてのマシンでカーネルを再構築したくありません。
この仮説が真であれば、既存のカーネルバージョンを同様のシステムに展開する最も効率的な方法は何ですか?
いくつかのオプションが思い浮かんだ。
/boot/
とからカスタムビルドファイルをコピーする/lib/modules/
- カスタムカーネルでrpmを作成すると、インストールされているすべてのファイルを追跡しながら簡単にデプロイできます(削除も非常に簡単です)。
他のオプション?誰でもこれの経験がありますか?
答え1
どうすればいいかわかりません。似たようなあなたのコンピュータはそうです。しかし、私は同じシステムの多くにカーネルを配布する作業をしてきました。オプション1は通常私が行う方法です。ネットワーク経由で新しいカーネルとモジュールをプッシュするだけです。ただし、システムにパッケージマネージャがある場合は、rpmパッケージも良い方法です。
システムにハードウェアの違いがある場合、カーネルに問題がある可能性があります。マシンに異なるイーサネットMACがあるように、特定のハードウェアのサポートを有効にする必要があるかもしれません。
デフォルトでは、カーネルが提供するすべてを有効にして、すべてのシステムをサポートする肥大化したカーネルを作成することも、使用しているハードウェアが何であるかを正確に見つけ、そのハードウェアに対してのみサポートを有効にして、より簡潔なカーネルを作成することもできます。
答え2
すべてのシステムが同じディストリビューションを実行していると仮定し、RPMを作成し(ディストリビューションで使用するパッケージ形式であると仮定)、デプロイします。これには多くの利点があり、基本的に欠点はありません。
- パッケージをビルドするためのディストリビューションプロセスは、カーネルだけでなく、initramfs(使用されている場合)、モジュール、ブートローダアップデートスクリプト、ドキュメント、デバッグ、モジュールビルド情報など、すべてが正しい場所にあることを確認します。
- ビルドパッケージを使用すると、バージョン追跡を実行できます。アップグレード展開中にコンピュータがシャットダウンした場合、またはディスクがいっぱいになった場合でも、現在インストールされている内容を確認できます。
- パッケージマネージャを使用すると、カーネルだけでなくすべてのソフトウェアを配布できます。展開するすべてのソフトウェアに対してホイールを再作成する必要はありません。
- ディストリビューションに独自のカーネルパッケージを作成する文書化された方法がないと、前払い費用が発生します。しかし、そうすれば、ほとんどの人はそう思うでしょうが、初期費用は必要なすべての部分を手動で集めるよりも大きくはありません。