自分のLinuxカーネルをコンパイルする際の5つの便利なヒント

Linuxカーネルは素晴らしいソフトウェア工学の作品です。100万行以上のコードを持ち、現在も活発に開発されている最も複雑なプログラムの1つと言えるでしょう。1990年代後半から、Linuxカーネルは計算集約型プロジェクトやベアボーンの組み込みアプリケーションの両方で使用されています。
目次
- カーネルとは何か、なぜ設定するのか?
- ヘルプシステムを使用する
- 不要なHIDサポートを無効にする
- 不要なファイルシステムサポートを無効にする
- 不要なグラフィックスドライバを無効にする
- ドライバをモジュールとしてインストールする
- よくある質問
関連記事: より良いセキュリティのための5つのベストLinux-Libreディストリビューション
カーネルとは何か、なぜ設定するのか?
それにもかかわらず、Linuxカーネルはコンピュータのハードウェアと日常的に使用するソフトウェアとの間のリンクとして機能するプログラムに過ぎません。これにより、日常的に使用するプログラムのために幅広いデバイスを使用できるようになります。
このハードウェアとソフトウェアのリンクの一例が、Advanced Linux Sound Architecture (ALSA)です。ALSAはLinuxカーネルに組み込まれたサウンドドライバフレームワークです。これにより、サウンドカードを簡単にインストールし、お気に入りのプログラムで即座に動作するように設定できます。

これを知っていると、Linuxカーネルは一般ユーザーにはほとんど知られていないプログラムであることがわかります。ほとんどの場合、ディストリビューションをインストールすると、すぐに動作するカーネルが得られます。これは、システムを動作させるだけを求めている場合には便利です。
しかし、ArchやGentooなどのディストリビューションを使用している場合、カーネルを設定できることは長期的には有益です。たとえば、必要な機能だけを有効にすることで、ブート時間を短縮できます。
この記事では、自分のLinuxカーネルをコンパイルする際の5つの便利なヒントを提供します。
注意: 自分のカーネルをコンパイルする方法については、この記事をチェックしてください。
1. ヘルプシステムを使用する
Linuxカーネルを設定する際の最も便利な機能の1つがヘルプシステムです。これは、カーネル設定メニュー内でアクセスできる組み込み機能です。これにより、カーネルにインストールできるすべての機能とドライバの説明を表示できます。

このシステムを使用するには、特定のカーネルオプションを強調表示しながらShift + /を押すだけです。そこから、設定メニューはその機能が何をするのかの簡単なスライドを印刷します。たとえば、「PCIサポート」オプションにShift + /を押すと、それを使用するために有効にする必要があるすべてのオプションを確認できます。

これにより、特定のカーネル機能に関する情報を検索するために同じヘルプシステムを使用することもできます。これは、特定の機能が必要とするすべてのオプションについてもっと知りたい場合に特に便利です。
これを行うには、設定メニュー内で/を押します。これにより、特定のオプションの名前を入力できる小さなプロンプトが表示されます。たとえば、/を押して「PCI」と入力すると、PCIフラグを使用するオプションを検索できます。

関連記事: Gentoo Linuxとは何か、そしてそのインストール方法
2. 不要なHIDサポートを無効にする
Linuxカーネルは、ほぼ普遍的なハードウェアサポートを持つソフトウェアとして自らを誇示することがよくあります。それにより、接続したデバイスを駆動できることが確実です。

しかし、このアプローチの1つの問題は、すべてのサポートを含めることでカーネルの全体的なサイズとフットプリントが増加することです。これにより、悪意のあるハッカーが簡単に悪用できる遅いバイナリが生じる可能性があります。
この問題に対処する方法の1つは、マシンで使用しないハードウェアサポートを削除することです。たとえば、Linuxカーネルはデフォルト設定にFirewireサポートを含んでいます。しかし、現在のほとんどのマシンにはデフォルトでFirewireポートが含まれていません。

これを知っていると、無効にできるハードウェアデバイスを確認する簡単な方法は、「特別HIDドライバ」セクションを確認することです。これは、設定メニューの「デバイスドライバ」と「HIDサポート」の下にアクセスできるカテゴリです。ここでは、カーネルがサポートできる珍しいデバイスがすべてリストされます。

これにより、Shift + /および/を使用してこのセクションにリストされている各オプションを検索することもできます。たとえば、「ELECOMデバイス」を選択し、Shift + /を押してそのオプションが何をするのかを確認できます。

その後、必要なデバイスを選択し、Nを押してその機能を無効にできます。私の場合、これらのデバイスを使用しないため、すべての特別HIDサポートを無効にします。

関連記事: 開発者とプログラマーのための5つのベストLinuxディストリビューション
3. 不要なファイルシステムサポートを無効にする
カーネルのサイズを減らすもう1つの簡単な方法は、使用しないファイルシステムのサポートを削除することです。デフォルトで、Linuxカーネルはほとんどのタイプのファイルシステムに対してオプションのサポートを持っています。これには、古いBSD FFSやBTRFSなどの高性能システムが含まれます。

ほとんどの場合、一般ユーザーは日常的に使用するファイルシステムをほんの数種類だけ使用します。たとえば、Linuxシステムは通常、すべてのデータストレージにEXT2、EXT4、FAT32、およびNTFSを使用します。そのため、他のファイルシステムのサポートを削除することで、カーネルから合理的なパフォーマンスを得ることができます。
カーネルで不要なファイルシステムサポートを削除するには、「ファイルシステム」カテゴリに移動するだけです。

そこから、ハイライトしてNを押すことで、システムから削除したいファイルシステムを選択できます。私の場合、EXT2、EXT3、EXT4、およびJFSのサポートだけを残します。

4. 不要なグラフィックスドライバを無効にする
特別HIDおよびファイルシステムサポートを無効にすることに加えて、設定メニューを使用して使用しないグラフィックスドライバを削除することもできます。これは、Linuxカーネルがほとんどの現代のグラフィックスデバイスのサポートをバンドルしているためです。つまり、マシンがグラフィックスカードを使用していなくても、カーネルはあたかも1つを持っているかのように動作します。

上記と同様に、これは必ずしも必要ではない機能を実行するカーネルバイナリを生じさせます。これは、古いまたは弱いハードウェアでLinuxを実行している場合に問題になる可能性があります。
不要なグラフィックスサポートを削除するには、まず設定メニューの「デバイスドライバ」セクションに移動する必要があります。そこから、下にスクロールして「グラフィックスサポート」を選択します。

完了すると、カーネルはドライバを提供するすべてのグラフィックスハードウェアのリストを表示します。ここから、特定のドライバを有効または無効にするためにYまたはNを押すことができます。
私の場合、ノートパソコンに存在する唯一のグラフィックスデバイスである「Intel 8XX Graphics」と「Intel GMA500 Framebuffer」の両方だけを有効にします。

関連記事: Windowsユーザーのための9つのベストLinuxディストリビューション
5. ドライバをモジュールとしてインストールする
最後に、Linuxカーネルの最も優れた機能の1つは、自身の一部を削除し、モジュールとして再ロードできる能力です。このアプローチは、カーネルのサイズを減らすだけでなく、カーネル機能を柔軟にすることも可能にします。
たとえば、ワイヤレスドライバをモジュールに変換することで、カーネルを再コンパイルせずに更新できるようになります。そのため、モジュールは、迅速なカーネルを持ちたいが、Linuxの優れたハードウェア互換性を保持したいユーザーにとって特に便利です。

組み込み機能をモジュールに変換するには、モジュールに変換したいセクションとオプションに移動する必要があります。たとえば、ワイヤレスドライバを変換するには、「ネットワーキングサポート」セクションに移動し、「ワイヤレス」を選択する必要があります。

そこから、「cfg80211」ドライバをMを押してカーネルモジュールに変換できます。

完了したら、設定メニューを終了するためにEscを6回押します。これにより、行った変更を保存するかどうかを尋ねるプロンプトが表示されます。私の場合、「はい」を選択します。

これで、次のコマンドを実行して、必要な機能を持つLinuxカーネルのバージョンをコンパイルできます。
make&&make modules_install
makeinstall
関連記事: カスタムLinuxディストリビューションを簡単に作成するための5つのツール
よくある質問
自分のLinuxカーネルに必要なデバイスドライバを知ることはできますか?
はい!自分のカーネルをコンパイルし始めたばかりのユーザーにとっての1つの障害は、使用しているハードウェアの正確な種類を知ることです。これは難しい作業のように思えるかもしれませんが、このプロセスを容易にするために使用できるプログラムがたくさんあります。
たとえば、lspciとlsusbを使用して、マシンに接続されているすべてのハードウェア周辺機器を確認できます。さらに、sudo dmesgコマンドを実行して、カーネルがデバイスを正しく読み取っているかどうかを確認することもできます。
Linuxカーネルから削除した機能を戻すことはできますか?
はい!Linuxカーネルから機能を削除した後に再インストールすることは可能です。これを行うには、設定メニューに戻り、再度有効にしたい機能にYまたはMを押します。これにより、カーネルにその特定の機能を組み込みまたはモジュールとして含めるよう指示します。
これが完了したら、すべての新しい機能を持つバイナリを作成するためにカーネルを再コンパイルする必要があります。これを行うには、Escを6回押して設定メニューを保存して終了します。そこから、makeを実行してカーネルの再コンパイルを開始できます。
Linuxカーネルの機能をモジュールとしてインストールするのはいつですか?
機能をモジュールとしてインストールするかどうかは、カーネルから何を必要とするかによって大きく異なります。それを考慮すると、ブートプロセスにとって重要でない機能に対してのみモジュールを作成するのが良いルールです。
これは、Linuxカーネルが単一のイメージとしてブートできることに依存しているためです。たとえば、マルチプロセッササポートなどの重要な部分を削除すると、カーネルがブートできなくなる状況が発生する可能性があります。
そのため、一般的にモジュールになるカーネルコンポーネントは、グラフィックスやその他のハードウェアドライバ、またはネットワークインターフェースです。
画像クレジット: Unsplash