カスタムカーネルを構築し、それらのカーネルを使用してUbuntuを起動する方法に関する多くのチュートリアルを読み、ガイドと起動したカスタムカーネルを正常に実行しましたが、ガイドの各コマンドの機能と実際に何が起こっているのか理解できません各コマンド。
buntuのサイト で説明されている手順は、fakeroot
、dpkg
、make-kpkg
、いくつかのinitramfs、および機能するが単純に機能する他の恐ろしいもので多くの作業を行います何が起こっているのか理解するのに役立ちません。
make
の出力は何ですか?make modules
は何をしますか?make
の前または後にmake modules
を実行する必要がありますか?make
はモジュールを自動的にビルドしませんか?make install
は何をしますか?make install
を起動可能なカーネルのリストに追加して、これ以上何もする必要がないようにしますか?make modules_install
はありますか?上から...
make
はカーネルイメージをコンパイルしてリンクします。これは、vmlinuz
という名前の単一のファイルです。make modules
は、カーネル構成中にユーザーがM
に回答した質問ごとに個別のファイルをコンパイルします。オブジェクトコードは、新しく構築されたカーネルに対してリンクされます。 (Y
で回答された質問の場合、これらはすでにvmlinuz
の一部であり、N
で回答された質問はスキップされます)。make install
は、ビルドしたカーネルを/vmlinuz
にインストールします。make modules_install
は、カーネルモジュールを/lib/modules
または/lib/modules/<version>
にインストールします。利用可能なカーネルのリストにそれを追加することに関しては、それはブートローダーによって処理されます。ブートローダーごとに異なりますが、grub
はx86とAMD64で最も一般的であるため、それについて説明します。それは実際には非常に簡単です。 Grubは/
、/boot
、/lib/modules
を調べて、動作しているカーネルのように見えるものを探して追加します。そして、はい、これは過度に単純化された説明です。
Ubuntuのドキュメントにある「恐ろしいもの」は、deb
パッケージを作成するための余分なものです。あなた自身のためにそれをしているときは、それをパッケージ化する方がはるかに良いです。時間内に切り替えます。
カーネルとモジュールのビルドは、必要な人々(つまり、カーネル開発者)がモジュールのみに変更を加えることが多いため、別々に維持されます。変更を適用し、モジュールのみを再構築およびインストールできます。これにより、1日20回実行する必要がある時間を大幅に節約できます。単一のmake everything
コマンドを持つように更新されることはありません。代わりに、make && make modules && make install && make modules_install
ドキュメントに書かれているようにを実行します。ビルドプロセスでは、カーネル開発者が優先されます。そして、それは本来あるべき姿です。
実際には、カーネル開発者またはディストリビューションパッケージャー以外の誰かがカーネルをコンパイルする理由はほとんどありません。ほとんどすべての状況で、必要なカーネル機能はすでに構築されており、事前にパッケージ化されたカーネルの1つで利用できます。例外はありますが、最近では非常にまれです。
自分でカーネルを構築することはお勧めしませんが、実際にそれを行うことをお勧めします。カーネルをゼロから構築することは、そこでカーネルがどのように機能するかを学ぶ上で非常に貴重な方法だと思います。おそらく、ある日あなたがwillを必要とする例外であるためです。しかし、それはまた一般的にカーネルとブートプロセスについて多くを教えます。あなたはそれをしたことでより良い人になるでしょう。