|
||||||||||
Linux技術トレーニング 基本管理コース II第1章 カーネル
Linuxにおけるカーネルとは、以下の役割を果たす、まさに「心臓部」ともいえるソフトウェアになります。
1. カーネルとカーネルモジュール1-1. カーネル・モジュール
ドライバなどカーネルに組み込まれる機能をモジュール化したもの
カーネルモジュール
カーネルモジュールとは、カーネルの機能を拡張するためのバイナリファイルです。 カーネルモジュールの代表的なものとしては、ディスク、ネットワークカード等をLinuxカーネルで使用可能にするためのデバイスドライバがあげられます。このデバイスドライバは、基本的には、各ハードウェアベンダから提供されるもので、これを使用することによって、Linuxカーネルは、多種多様なハードウェアに対応することが可能になっています。 初期のUNIX系OSでは、カーネルの機能を拡張する場合、デバイスドライバなどはすべてカーネルに組み込むという設計になっていました。つまり、新しいハードウェアを使うためには、カーネルの再構築(ソースからの再コンパイル)が必要でした。 しかし、現在のLinuxカーネルはモジュール形式で設計されています。起動時に最小限度の常駐カーネルだけがメモリにロードされ、必要に応じてモジュールのロード・アンロードできるようになっています。ユーザーがカーネルに存在しない機能を要求すると、ドライバ・モジュールが動的にメモリにロードされます。 このため、常に使用するわけではないデバイスのためにメモリを消費することを防ぐことができます。 1-2. カーネルバージョンとドライバ
特定のカーネル・ソースツリーより作成された、ドライバは他のカーネルでは使用できません
カーネルバージョンとドライバ
あらゆるデバイスで必要となるドライバは、カーネルに依存しています。たとえ同じ名前のドライバであっても作成された(ビルドされた)カーネルソースが変われば、まったく別物になってしまいます。そのためサードベンダーが提供するドライバファイルは、使用しているカーネルバージョンと合わない場合には、使用できません。基本的にサードベンダーのドライバを使用するためには、そのドライバ・ソースを入手し、ドライバを使用するOS上で再ビルドし、ドライバを作成することになります。 ドライバディスク
MIRACLE LINUXが提供しているドライバディスク(追加のドライバが含まれる)を適応できるカーネルは、弊社よりご購入いただいたインストールCDに含まれるカーネルに限定されます。 1-3. モジュール関連コマンド
モジュール関連コマンド
モジュールの確認
現在ロードさえているモジュールを確認するには、lsmodコマンドを使用します。 # lsmod Module Size Used by i915 81412 3 md5 3968 1 ipv6 232768 12 i2c_dev 11392 0 i2c_core 22400 1 i2c_dev
モジュールのロードについては、modprobeコマンド、または、insmodコマンドを使用します。其々、以下のように使用します。
この2つのコマンドの違いは、modprobeコマンドは、modules.depファイルを参照し、依存関係のあるモジュールがあれば、事前にロードを行います。それに対し、insmodコマンドは、指定されたモジュールのみをロードします。そのため、事前にロードする必要のある依存するモジュールが存在する場合には、エラーとなります。
モジュールのアンロード(削除)を行うには、rmmodコマンドを使用します。-r オプションを指定することで、依存するモジュールがあった場合、それらも同時に削除されます。 # rmmod pcmcia_core ERROR: Module pcmcia_core is in use by yenta_socket 1-4. モジュール関連ファイル
モジュール関連ファイル
/etc/modprobe.conf
殆どのモジュールについては、システム起動時、あるいは必要に応じてドライバを自動認識し、ロードします。
1-5. ドライバ関連トラブルシューティング
以下のそれぞれケースについて、例をもとにケーススタディを実施
ドライバ関連のトラブルシューティング
以下に示すドライバ関連のトラブルについて、次ページ以降に、具体的な例を示し、ケーススタディを実施していきます。
<トラブル現象>
インストール中に以下のメッセージが表示され、インストールが行えません <原因>
インストールCD-ROMにドライバが収録されていないPERC 4/Di RAIDコントローラーを利用していました <カーネル + ハードウェア>
ハードウェアが動作するかは、カーネルがそのハードウェアに対応するモジュール(ドライバ)を含んでいるかどうかに依存します <解決方法>
外部ストレージ接続
<トラブル現象>
外部ストレージをRAIDコントローラーに接続してインストールを行っているが、内蔵のディスクではなく外付けストレージがsdaになってしまう <原因>
<解決方法>
【1】modprobe.conf変更前 ストレージが接続されているmegaraid(PERC3/DC) が先頭になっています
alias scsi_hostadapter megaraid alias scsi_hostadapter1 aacraid【2】modprobe.conf変更後 内蔵のaacraid(PERC3/Di)を先頭にします alias scsi_hostadapter aacraid alias scsi_hostadapter1 megaraid【3】modprobe.confの内容をもとに、 initrdの再作成を行う # mkinitrd ?f /boot/initrd-2.4.9-e.25.50mlsmp.img \ 2.4.9-e.25.50mlsmp <トラブル現象>
Linuxのインストールと設定を行った後に、SAN環境に接続し起動すると、「kernel panic」が発生します <原因>
<解決方法>
<詳細説明>
|