他のシステムでカーネルをコンパイルする

他のシステムでカーネルをコンパイルする

私はNimixで働いており、非常に強力なマルチコアシステムにアクセスでき、カーネルコンパイルサービスを作成する予定です。

make -j32システムは最大128個のコアを持つことができ、32個のコアを使用した初期テストでは非常に迅速にコンパイルできました。 Linux 4.8.12 の時期は次のとおりです。

real    2m16.366s
user    29m18.732s
sys     2m28.616s

Dell Precision 6500ノートブックでは、約25分後でもまだコンパイルされません。

私の最初のテストは、私のシステム(Arch Linux)用のカーネルを構築することでした。

/lib/modulesbzImageディレクトリをリモートシステムからマイシステムにコピーしました。

今すぐ実行しようとするとmkinitcpioエラーが発生します。

==> ERROR: '/lib/modules/4.8.14-2-ck-nehalem' is not a valid kernel module directory

(/proc/config.gzからデフォルトのカーネル.configファイルを取得しました - ck-nehalemカーネルバージョンがあります)

どのように機能させますか?他のシステムのモジュールをinitramfsイメージがビルドされたシステムに転送する一般的な方法は何ですか? initramfsをリモートで構築することもできますか?

少し話してみると、これらのカーネルコンパイルサービスはカーネル開発者と開発者にとって役に立ちますか?コンピューティングクラスタの使用コストは1時間あたり約3ドルなので、コンパイルコストはほとんどかかりません。

ベストアンサー1

だから他の人に役立つように私の質問に答えています。

実行している限り、リモートでinitramfsを絶対に構築できます。

make modules_install

しかし、リモートシステムでは、必要なモジュール、特にmd raido項目を含む画像を取得することはできません。 、システムを起動できるinitramfsを作成できません。しかし、mkinitcpio.confですべてのモジュールを明示的に言及することは可能です。

一部のモジュール(nvidiaなど)も必要なモジュールを構築するには、dkmsを実行する必要があります。

/lib/modules/からローカルシステムにモジュールをコピーする場合は、リンクを再生成してbuildLinuxsourceカーネルソースコードを含むディレクトリを指す必要があります。リモート側で生成されたリンクは機能しません。

おすすめ記事