Linux で特定のカーネルコンパイルオプションが有効かどうかを確認する方法

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Linux システムで特定のカーネルコンパイルオプションが有効になっているかどうかを判断する方法を学びます。これを達成するための一般的な 3 つの方法を探ります。

まず、zcat コマンドを使用して、カーネルコンパイル時に使用されたオプションが含まれる /proc/config.gz にある圧縮されたカーネル構成ファイルを調べます。次に、/boot ディレクトリにある構成ファイルを調べることで、これらのオプションを検証する方法を学びます。最後に、dmesg コマンドを使用してカーネルのコンパイルログを調べ、有効になっている機能についてさらに詳しく知る方法を見つけます。この実験の終わりまでに、あなたは Linux システムでカーネルコンパイルオプションを効果的に確認するスキルを身につけることができます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/CompressionandArchivingGroup(["Compression and Archiving"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/BasicFileOperationsGroup -.-> linux/less("File Paging") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/CompressionandArchivingGroup -.-> linux/gzip("Gzip") subgraph Lab Skills linux/ls -.-> lab-558758{{"Linux で特定のカーネルコンパイルオプションが有効かどうかを確認する方法"}} linux/cat -.-> lab-558758{{"Linux で特定のカーネルコンパイルオプションが有効かどうかを確認する方法"}} linux/less -.-> lab-558758{{"Linux で特定のカーネルコンパイルオプションが有効かどうかを確認する方法"}} linux/grep -.-> lab-558758{{"Linux で特定のカーネルコンパイルオプションが有効かどうかを確認する方法"}} linux/gzip -.-> lab-558758{{"Linux で特定のカーネルコンパイルオプションが有効かどうかを確認する方法"}} end

zcat /proc/config.gz でコンパイルオプションを確認する

このステップでは、Linux カーネルがコンパイルされたときに使用されたカーネル構成オプションを調べる方法を学びます。この情報は /proc ファイルシステム内の圧縮ファイルに格納されています。

/proc ファイルシステムは、プロセスに関する情報やその他のシステム情報を提供する仮想ファイルシステムです。ディスク上に実際のファイルは含まれておらず、カーネルの内部データ構造を表示するものです。

私たちが関心を持っているファイルは /proc/config.gz です。このファイルには、圧縮形式でカーネル構成オプションが含まれています。その内容を表示するには、ファイルを解凍して表示できるコマンドを使用する必要があります。

zcat コマンドはこの用途に最適です。これは、gzip 形式で圧縮されたファイルの内容を解凍して表示するために使用されます。

ターミナルが開いていない場合は開きます。デスクトップの左側にある Xfce Terminal アイコンを見つけることができます。

次に、以下のコマンドを入力して Enter キーを押します。

zcat /proc/config.gz

このコマンドは /proc/config.gz ファイルを解凍し、その内容をターミナルに表示します。CONFIG_ で始まる長い構成オプションのリストが表示されます。これらのオプションによって、カーネルに含まれる機能やドライバが決まります。

たとえば、次のような行が表示されることがあります。

CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
## CONFIG_NET_KEY is not set
CONFIG_INET=y
  • CONFIG_NET=y はネットワークサポートが有効になっていることを意味します。
  • CONFIG_NET_KEY is not set は特定のネットワーク機能が含まれていないことを意味します。

この出力をスクロールするのは大変です。less コマンドを使用して、出力をページごとに表示することができます。これを行うには、パイプ (|) を使用します。パイプは、1 つのコマンドの出力を別のコマンドの入力として送ります。

次のコマンドを入力して Enter キーを押します。

zcat /proc/config.gz | less

これで、矢印キーを使用して上下にスクロールでき、q を押して less を終了できます。

このコマンドは、カーネルがどのように構築され、どのような機能を持っているかを正確に理解するのに非常に役立ちます。

Continue をクリックして次のステップに進みます。

/boot/config-* でオプションを検証する

前のステップでは、/proc/config.gz からカーネル構成を確認しました。カーネル構成ファイルがよく保存されるもう 1 つの場所は /boot ディレクトリです。

/boot ディレクトリには、オペレーティングシステムを起動するために必要なファイルが含まれており、カーネル自体と、それを構築するために使用される構成ファイルも含まれることが多いです。

/boot 内の構成ファイルは通常、config- の後にカーネルバージョンが続く名前になっています。カーネルバージョンは異なる可能性があるため、ワイルドカード (*) を使用してファイル名を一致させることができます。

まず、/boot ディレクトリ内のファイルをリストして、そこに構成ファイルが存在するかどうかを確認しましょう。ls コマンドを使用します。

ls /boot/

ファイルのリストが表示され、その中に config- で始まり、バージョン番号が続くファイル(例:config-5.15.0-105-generic)が含まれているはずです。

次に、このファイルの内容を表示しましょう。cat コマンドを使用してファイルの内容を表示することができます。config-* を前の ls 出力で見つけた実際のファイル名に置き換えるか、ワイルドカードを使用してください。ワイルドカードを使用する方が汎用的です。

次のコマンドを入力して Enter キーを押します。

cat /boot/config-*

これにより、/boot ディレクトリ内のファイルからカーネル構成オプションが表示されます。内容は zcat /proc/config.gz の出力とほぼ同じ、あるいはまったく同じであることに気づくでしょう。これは、/proc/config.gz がしばしば /boot にある構成ファイルの圧縮されたコピーであるためです。

/boot 内のファイルに対して cat を使用することは、特に /proc/config.gz が利用できない場合や、非圧縮版を直接見たい場合に、カーネル構成にアクセスする別の方法です。

再び、出力を less にパイプすることで、より見やすくすることができます。

cat /boot/config-* | less

q を押して less を終了します。

カーネル構成をどこで見つけるかを理解することは、トラブルシューティングや高度なシステム管理にとって重要です。

Continue をクリックして次に進みます。

dmesg でコンパイルログを調べる

前のステップでは、カーネル構成を表示する方法を学びました。次に、カーネルのメッセージバッファを見てみましょう。このバッファには、起動時および実行時にカーネルが生成したメッセージが含まれています。これには、カーネルのコンパイルやモジュールの読み込みに関連する情報が含まれることがあります。

dmesg コマンドは、カーネルのリングバッファを調べたり制御したりするために使用されます。リングバッファはカーネルからのメッセージを格納しており、デバッグやシステムイベントの理解に役立つことが多いです。

ターミナルに以下のコマンドを入力して Enter キーを押します。

dmesg

これにより、大量の出力がターミナルに表示されます。これらはカーネルからのメッセージで、ハードウェア検出、デバイスドライバの読み込み、およびシステム起動以来発生したその他のシステムイベントに関する情報が含まれています。

カーネルバージョンやコンパイルに関連する情報を見つけるには、dmesg の出力を grep にパイプすることができます。grep は、正規表現に一致する行を検索するための強力なコマンドラインユーティリティです。

カーネルバージョン情報を表示するために、「Linux」という単語を含む行を検索してみましょう。

dmesg | grep "Linux"

カーネルバージョンを示す、次のような出力が表示されるはずです。

[    0.000000] Linux version 5.15.0-105-generic (...)

カーネルモジュールやコンパイルオプションに関連する可能性のある他のキーワードを検索することもできますが、直接的なコンパイルログは通常ここには見つかりません。dmesg は、実行時のカーネルメッセージに関するものが多いです。

たとえば、特定のドライバやサブシステムの名前がわかっている場合は、それに関連するメッセージを検索することができます。

再び、dmesgless を組み合わせると、出力をナビゲートするのに役立ちます。

dmesg | less

q を押して less を終了します。

dmesg はカーネルのコンパイルプロセス自体を直接表示するものではありませんが、前のステップで確認したコンパイル構成によって決まる、現在実行中のカーネルのバージョンや読み込まれたモジュールなど、カーネルに関する貴重な情報を提供します。

Continue をクリックしてこの実験を完了します。

まとめ

この実験では、Linux で特定のカーネルコンパイルオプションが有効になっているかどうかを確認する方法を学びました。/proc ファイルシステム、特にコンパイル時に使用されるカーネル構成オプションを格納している /proc/config.gz ファイルを調査しました。zcat コマンドを使用してこのファイルの内容を解凍して表示し、出力を less にパイプして見やすくする方法を学びました。このプロセスにより、さまざまな CONFIG_ オプションを調べ、実行中のカーネルに含まれる機能やドライバを判断することができます。