条件は何ですか?
make, make bzImage, makemodules, makeinstall, makemodules_install は互いに関連しています。
私が見たカーネルチュートリアルでは、すべてのmake bzImage、makemodules、makeinstall、makemodules_installコマンドを使用して新しいカーネルをコンパイルしてインストールしました。もう1つは、make、make install、およびmake module_installコマンドのみを使用します。では、違いは何ですか?
ベストアンサー1
時間の経過とともに、Linuxカーネルのコンパイルプロセス自体がさらに進化しました。より複雑になりましたが、より簡素化されました。カーネルソースディレクトリから実行すると、make help
すべてのターゲットのリストmake
と各ターゲットの簡単な説明が表示されます。
現在の5.xカーネルシリーズでは、コマンドmake
とコマンドmake all
は同じです。両方とも、アーキテクチャ固有のデフォルトターゲットリストを実行します。
x86ハードウェアアーキテクチャでは、基本リストには次のものが含まれます。
make vmlinux
ベアカーネルのmake bzImage
構築make modules
カーネルモジュールの構築make bzImage
起動可能な圧縮カーネルイメージファイルを作成します。
上記のすべての操作は、追加の権限なしで一般ユーザーとして実行できます。
一方、存在する場合はormake install
が使用されます~/bin/installkernel
。/sbin/installkernel
お使いのシステムは、該当~/bin/installkernel
する場合はsudo
これまたは同様のものを使用できますが、システムは/sbin/installkernel
通常、既にrootアクセス権を持っていると仮定するように書かれています。
同様にmake modules_install
、新しいカーネルバージョンのモジュールが/lib/modules/<kernel_version>/
ディレクトリツリーにコピーされるため、正常に実行するにはルートアクセスが必要です。
ベストプラクティスは、特定の必要なしにルートで長く複雑なプロセス(カーネルコンパイルなど)を実行しないため、現在の最小カーネルコンパイルプロセスは次のとおりです。
- カーネルを一般ユーザーとして構成
- 一般ユーザーとして実行
make
または実行make all
sudo make modules_install
カーネルモジュールをインストールするには実行してください。sudo make install
実際のカーネルをインストールするには実行してください。/sbin/installkernel
initramfsファイルの自動ビルドなどの他の操作がトリガーされ、新しいカーネルモジュールがすでにインストールされている場合は、これらの他の操作がより正常に実行される可能性があるため、最後にこれを実行することをお勧めします。
ただし、必要に応じてカスタムカーネルを構築するよりもカーネル開発を行う場合は、より細かいプロセスを使用できます。たとえば、カーネルモジュールを開発している場合は、次make modules
のように実行できます。別の手順を実行すると、間違いによって失敗したかどうかを簡単に確認し、エラーをすばやく修正できます。エラーが修正されると、make modules
前の手順が正常に完了したため、再実行に進むことができます。
同様に、以前のカーネルブートプロセスを使用している開発者は、他のシステム(巧妙なACPIテーブルセットなど)でテストするためにbzImageが必要になる可能性があり、モジュールにはまったく気にしない可能性があります。