カーネルとは何か、なぜカーネルを設定するのか?
Linux カーネルは、コンピュータのハードウェアと、あなたが毎日使っているソフトウェ アをつなぐ役割を果たすプログラムです。このカーネルがあるからこそ、日常的に使うプログラムに対して、様々なデバイスを使うことができるのです。
このハードウェアとソフトウェアのリンクの一例として、ALSA(Advanced Linux Sound Architecture)があります。ALSAは、Linuxカーネルに内蔵されているサウンドドライバのフレームワークです。ALSAを使うと、サウンドカードを簡単にインストールし、好きなプログラムですぐに動作するように設定することができます。
注: 自作カーネルのコンパイルを始めるには、この記事をチェックしてください。
1. ヘルプシステムを使う
Linux カーネルを設定する際に最も便利な機能のひとつが、ヘルプシステムです。これは、Kernel Configuration Menu の中にあるビルトイン機能で、アクセスすることができます。カーネルにインストールできるすべての機能とドライバの説明を見ることができます。
このシステムを使うために必要なことは、特定のカーネルオプションをハイライトしている間に
Shift
+ /
を押すことです。そこから、設定メニューがその機能が何をするものなのか、簡単なスライドを表示します。例えば、Shift
+ /
を押して “PCI Support” オプションを選択すると、それを使用するために有効にする必要があるすべてのオプションが表示されます。

これを行うには、設定メニューの中で /
を押します。すると、小さなプロンプトが表示され、そこで特定のオプションの名前を入力することができます。例えば、/
を押してから “PCI “と入力すると、PCIフラグを使用するオプションが検索されます。

2. 不要な HID サポートを無効にする
Linux Kernel はしばしば、ほぼすべてのハードウェアをサポートするソフトウェアであると 自らを宣伝しています。Linux カーネルは、ほぼすべてのハードウェアをサポートしているソフトウェアであ ると自負していますが、接続したデバイスを駆動できることは間違いないでしょう。


これを使って、
Shift
+ /
と /
で、このセクションにリストアップされた各オプションを検索することもできます。例えば、「ELECOM devices」を選択して、Shift
+ /
を押すと、そのオプションが何をするものなのかを見ることができます。
次に、必要なデバイスを選択して
N
を押すと、その機能を無効にすることができます。私の場合、これらのデバイスを使用しないので、すべてのSpecial HIDサポートを無効にすることにします。

3. 不要なファイルシステムのサポートを無効にする
カーネルのサイズを小さくするもう一つの手っ取り早い方法は、使わないファイルシステムのサ ポートを削除することです。デフォルトでは、Linux カーネルは、ほとんどの種類のファイルシステムをオプションで サポートしてビルドされています。これには、古い BSD FFS や、BTRFS のような高性能なシステムも含まれます。

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

4. 不要なグラフィックドライバを無効化する
Special HID と Filesystems のサポートの両方を無効にする以外に、Configuration Menu を使って、使用しないグラフィックドライバを削除することもできます。これは、Linux カーネルが、ほとんどの最新のグラフィックデバイスのサポートをバンドルしているためです。つまり、あなたのマシンがグラフィックカードを使用していなくても、カーネルはあたかもグラフィックカードがあるかのように動作するのです。

一度選択すると、カーネルはドライバを提供するすべてのグラフィックスハードウェアのリストを表示します。ここから、あなたは
Y
か N
を押して、特定のドライバを有効にしたり無効にしたりすることができます。

5. 5. ドライバをモジュールとしてインストールする
最後に、Linux カーネルの最も優れた特徴の一つは、それ自体の一部を削除し、モジュールと して再ロードすることができることです。この方法は、カーネルのサイズを小さくするだけでなく、カーネル の機能を柔軟に利用することができます。
例えば、ワイヤレスドライバをモジュール化することで、カーネルを再コンパイルすることなく更新することができます。このように、モジュールは、高速なカーネルを持ちながら、Linux の優れたハードウェア互換性を維持したいユーザにとって、特に有用なものです。
そこから “cfg80211” ドライバで
M
を押して、カーネルモジュールに変換します。
これができたら、
Esc
を6回押して設定メニューを終了します。これで、あなたが行った変更を保存するかどうかを尋ねるプロンプトが表示されるようになります。私の場合は、“Yes “を選択します。

make && make modules_install
make install
Frequently Asked Questions (よくある質問)
私の Linux カーネルが必要とするデバイスドライバを知ることはできますか?
はい! 自分のカーネルをコンパイルし始めたばかりのユーザにとって、ハードルの一つ は、使っているハードウェアの種類を正確に把握することです。これは難しい作業のように思えるかもしれませんが、現在ではこの作業を容易にするために使えるプログラムがたくさんあります。
例えば、lspci
と lsusb
の両方を使えば、あなたのマシンに接続されているすべての ハードウェア周辺機器を調べることができます。さらに、sudo dmesg
コマンドを実行して、カーネルが正しくデバイスを読み込 んでいるかどうかをチェックすることもできます。
Linux カーネルから削除した機能を復活させることはできますか?
はい!一度 Linux カーネルから削除した機能を再インストールすることは可能です。これを行うには、設定メニューに戻って、再有効化したい機能の上で Y
か M
のどちらかを押す必要があります。こうすることで、カーネルにその機能をビルトインかモジュールとして組み込むように指示します。
これが終わったら、カーネルを再コンパイルして、すべての新機能を含むバイナリを作成する必要があります。これを行うには、Esc
を6回押して設定メニューを保存して終了する必要があります。そこから make
を実行することで、カーネルの再コンパイルを開始できま す。
Linux カーネルの機能はいつモジュールとしてインストールすべきですか?
モジュールとして機能をインストールするのは、あなたがカーネルから何を必要とし ているかに大きく依存します。それを知った上で、経験則として、ブートプロセスに重要でない機能についてのみモジュー ルを作成するのがよいでしょう。
なぜなら、Linux カーネルはその中核で、単一のイメージとしてブートできることに依存 しているからです。例えば、マルチプロセッサのサポートのような重要な部分を削除すると、カーネルがブートできなくなる事態を招きます。 そのため、一般的にモジュールとなるカーネルコンポーネントは、グラフィックスなどのハードウェアドライバか、ネットワークインターフェイスのどちらかです。 画像引用元:Unsplash