Linuxカーネルとは

 広義のLinuxを構成する要素を大きく分けると次のようになります.
・カーネル
 メモリ管理,プロセスの管理など
・ドライバ
 あらゆる種類のデバイスにアクセスするインターフェース
・デーモン
 バックグラウンドで動作するサービス
・シェル
 ユーザーインターフェース
・コマンド
 ユーザーが目的の処理を行うための機能

 どのようなOSにも,最初に主記憶上にロードして実行されるソフトウェアが存在します.Linuxの場合,それをカーネルと呼び,それがLinuxの本体そのものです.

 一般に,LinuxはLILOというブートローダによって主記憶上にロードされ,実行されます.筆者の環境はTurbolinux Workstation日本語版6.0ですが,LILOの設定ファイルは/etc/lilo.confに指定されています(リスト1).

〔リスト1〕LILOの設定ファイル(/etc/lilo.conf)

[root@linux kishi]# cat /etc/lilo.conf

boot=/dev/hda

map=/boot/map

install=/boot/boot.b

prompt

lba32

timeout=50

default=linux

image=/boot/vmlinuz

label=linux

root=/dev/hda6

initrd=/boot/initrd

read-only

[root@linux kishi]#


 このリストの中でimage=/boot/vmlinuzとありますが,これがカーネル,つまりはLinuxの本体です.そして,/bootの下にはカーネルの関連ファイルがあります(リスト2).この場合はvmlinuz-2.2.16がvmlinuzにリンクされています.ここからカーネルのバージョンが2.2.16であることがわかります.

〔リスト2〕/boot下のファイル群
[root@linux /]# cd /boot

[root@linux /boot]# ls -l

total 2883

lrwxrwxrwx 1 root root 19 Mar 26 2000 System.map -> System.map -2.2.16-3

-rw-r--r-- 1 root root 214147 Aug 18 2000 System.map-2.2.16-3

-rw-r--r-- 1 root root 512 Mar 26 2000 boot.0300

-rw-r--r-- 1 root root 4636 Mar 10 2000 boot.b

-rw-r--r-- 1 root root 612 Mar 10 2000 chain.b

-rw-r--r-- 1 root root 332048 Mar 26 2000 initrd

-rw-r--r-- 1 root root 237 Mar 13 01:05 kernel.h

drwxr-xr-x 2 root root 12288 Mar 26 2000 lost+found/

-rw------- 1 root root 13824 Mar 26 2000 map

lrwxrwxrwx 1 root root 20 Mar 26 2000 module-info -> module-inf o-2.2.16-3

-rw-r--r-- 1 root root 11773 Aug 18 2000 module-info-2.2.16-3

-rw-r--r-- 1 root root 644 Mar 10 2000 os2_d.b

-rwxr-xr-x 1 root root 1682855 Aug 18 2000 vmlinux-2.2.16-3*

lrwxrwxrwx 1 root root 16 Mar 26 2000 vmlinuz -> vmlinuz-2.2.16-3

-rw-r--r-- 1 root root 654436 Aug 18 2000 vmlinuz-2.2.16-3

[root@linux /boot]#

 また,カーネルのソースコードは/usr/src/linuxにあります.一般的なオプションでインストールすれば,そこにソース一式が入っているはずです.

 カーネルから見た場合,カーネルがメインルーチンならばLinux上で実行されているすべてのタスクはそこから呼び出されることになります.それぞれのタスクはお互いのタスクの資源にアクセスし,消費し,改変します.

 OSの利用者から見た場合,ps -alとコマンドを入力して表示される各プロセスは,そのままそのマシン上で動いている「プログラム」です.しかし,OSの内部から見た場合,これらはカーネルのタスクなのです.

 つまり,カーネルとはOSそのものであり,Linuxの存在そのものでもあるプログラムなのです.



Linuxカーネルとは
 ● カーネルの仕組み

カーネル構築の手順と意味
 ● カーネル構築の手順
 ● カーネルコンフィグレーションの詳細


6月号特集トップページへ戻る


Copyright 2001 岸 哲夫