私はカスタムカーネルを構築し、これらのカーネルを使ってUbuntuを起動する方法についてのチュートリアルをたくさん読んでいます.を理解していません。
上記のプロセスUbuntuのウェブサイト多くの作業fakeroot
、いくつかのinitramfs、その他の恐ろしい作業を行ってきましたが、うまくいきましたが、dpkg
何がmake-kpkg
起こっているのか理解するのにまったく役に立ちませんでした。
make
Linuxカーネルディレクトリの出力は何ですか?- 「圧縮されたカーネルイメージ」を生成しますか?
- 「圧縮されたカーネルイメージ」ファイルの名前は何ですか?どこにありますか?
make modules
効果は何ですか?- 以前に行う必要がありますか
make modules
、それとも後で実行する必要がありますかmake
? make
私のモジュールは自動的にビルドされませんか?- 新しく構築されたカーネルを起動可能なカーネルリスト(コマンドリストだけでなく英語)に追加するプロセスは何ですか?
make install
効果は何ですか?make install
何もする必要がないように、ブート可能なカーネルのリストに追加されますか?- これに対応するものはありますか
make modules_install
?
答え1
最初から...
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回実行する必要があるため、時間を節約できます。 1つのコマンドでのみ更新されませんmake everything
。代わりに、あなたは実行しますmake && make modules && make install && make modules_install
文書に記載されているように。ビルドプロセスは、あなたではなくカーネル開発者に役立ちます。そうする必要があります。
実際、カーネル開発者やディストリビューションパッケージャ以外に、誰もカーネルをコンパイルする必要はほとんどありません。ほとんどすべての場合、あなたが望むカーネル機能はあなたのために構築されており、事前パッケージされたカーネルの1つで利用可能です。例外がありますが、最近ではごくまれです。
私はあなたが自分のカーネルを構築するのを妨げるのではなく、実際にそうすることをお勧めします。私は最初からカーネルを構築することがカーネルのしくみを理解する上で非常に貴重な練習だと思います。部分的にはいつか〜する例外が必要です。しかし、カーネルとブートプロセスについても多くのことを教えてくれます。このことをしたら、あなたはより良い人になります。