IT

カーネルのコンパイル、カーネルパラメータの変更、カーネルの管理と問題解決【LPIC level2】

目次

  • カーネルのコンパイル
  • カーネルのコンパイルとインストール
  • カーネルパラメータの変更
  • カーネルパラメータの設定
  • 初期RAMディスク
  • カーネルの管理と問題解決
  • /procの確認
  • デバイスファイル

カーネルのコンパイル

カーネルは、必要に応じてソースコードからコンパイルできます。

新しくカーネルをコンパイルすることをカーネルの再構築といいます。

カーネルのコンパイルとインストール

カーネルをコンパイルする手順は次の通りです。

  1. カーネルソースを用意する
  2. カーネルコンフィギュレーションを設定する
  3. カーネルをコンパイルする
  4. カーネルモジュールをコンパイルする
  5. カーネルとカーネルモジュールを配置する
  6. ブートローダの設定を変更する

カーネルソースの準備

カーネルのソースコードは通常、/usr/srcディレクトリ以下に格納されます。

/usr/srcディレクトリ以下に必要なファイルなどが配置されます。

ファイル名説明
.configカーネルの設定ファイル
MakefileカーネルのMakefile

カーネルコンフィギュレーションの反映

カーネルの設定は.configファイルに記録されています。

現在のカーネルコンフィギュレーションを新しい設定に反映させたい場合はmake oldconfigを実行します。

すると、新しいカーネルで付け加えられた機能についてのみ問い合わせを行い、従来から存在する設定については既存の設定をそのまま流用します。

カーネルの設定

カーネルの設定とは、多彩なカーネルの機能それぞれを直接カーネルに組み込むか、カーネルには組み込まずローダブルモジュールとするか、組み込まないか、といった設定です。

make config

コンソール上で、カーネルオプションごとに、質問に答える形で順に設定していきます。

make menuconfig

コンソール上で、メニュー形式で表示されているオプション項目を選択して設定していきます。

make xconfig

X上で設定することが出来ます。

make gconfig

X上で設定をすることが出来ます。

カーネルとカーネルモジュールのコンパイル

makeをターゲット指定なしで実行すると、カーネルとカーネルモジュールの両方のコンパイルが実行されます。

カーネルパラメータの変更

カーネルパラメータの設定

/procディレクトリ以下のファイルを使って、カーネル情報を取得したり、カーネルの動作を変更することが出来ます。

カーネルパラメータは、カーネルに備わった機能の有効/無効の切り替えや、システムのパフォーマンスチューニング、カーネルが認識しているシステム情報の参照などに使われます。

初期RAMディスク

Linuxでは、メモリ上にファイルっステムを作成するRAMディスクという機能や、ファイルをファイルシステムとしてマウントすることのできるループバックマウントという機能を持っています。このような仕組みを使って、ファイルとして用意されているファイルシステムをRAMディスクとしてメモリ上に展開し、それを暫定的なルートファイルシステムとしてカーネルを起動し、その後本来のルートファイルシステムをマウントすると言う起動方法をとることが出来ます。

この起動用のRAMディスクと言います。

初期RAMディスクには、ファイルシステムイメージを圧縮したinitrdcpioアーカイブを圧縮したinitramfsの2種類があります。

初期RAMディスクを作成するには、mkinitrdコマンドもしくはmkinitramfsコマンドを使います。

カーネルの管理と問題解決

カーネルまわりのトラブルとして多いのはデバイス関連です。

カーネルを通じたデバイスの確認と、カーネルがデバイスを扱うudevについて見ていきます。

/procの確認

/procは、カーネル内のデータへのインターフェースとなる特殊なファイルシステムです。

/procディレクトリ以下のファイルを通して、カーネルが認識しているハードウェア、実行中のプロセス、システムリソースなどの情報が得られます。

/procは疑似的なファイルシステムであり、ブロックデバイス上にファイルが実在するわけではありません。

ほとんどのファイルは読み出し専用ですが、中には書き込み可能なファイルもあります。

lsdevコマンド

/proc以下の情報を効率よく表示するコマンドも用意されています。

lsdevコマンドは、組み込まれているハードウェアに関する情報を一覧表示するコマンドです。

lspciコマンド

lspciコマンドとは、システムの全てのPCIバスと、接続されているPCIデバイスに関する情報を表示するコマンドです。

lsusbコマンド

USB関連の情報は/proc/bus/usbディレクトリ以下や/sys/bus/usbディレクトリ以下に格納されます。

lsusbコマンドとは、接続しているUSBデバイスの一覧表示できるコマンドです。

オプション説明
-tツリー状に表示する
-v詳細な情報も表示する

デバイスファイル

/devディレクトリ以下には、デバイスを抽象化したデバイスファイルが多数存在しています。

デバイスファイルには、ブロックデバイスとキャラクタデバイスがあります。

最後まで読んで頂き、ありがとうございました。

他の分野へ移動できる全体ページへは下記リンクから移動できます。