LoginSignup
0
3

More than 1 year has passed since last update.

カーネルについて

Last updated at Posted at 2021-10-09

カーネルについて

LinuxはOSの名前であるが、厳密に言えばカーネルの名前となる。カーネルとは文字通りOSの核となるファイルの事で、各種コマンドは、カーネルを通して実行される。

コマンドが動く仕組みだが、コマンドがカーネルに対し実行して欲しい処理を依頼して、カーネルに実行してもらうことになる。カーネルは実行結果をコマンドに返して、コマンドはあたかも自分が実行したかように結果を表示する。このようにバックでカーネルが処理を実行しているのだ。コマンドがカーネルに処理を依頼することを、システムコールと呼ぶ。

Linuxカーネルのファイルはどこに保存されているのかといえば、/bootの中のvmlinuzというファイル名で保存されている。ls -lをしてvmlinuzファイルを見てみると、vmlinuz5.4.0.80-genericのシンボリックリンクとなっている。大元のvmlinuz5.4.0.80-genericファイルも、vmlinuzがある同じディレクトリ配下に存在している。

また、同一ディレクトリ配下に、vmlinuz.oldという名のファイルも存在している。このファイルもまた、vmlinuz5.4.0.80-genericのリンボリックリンクとなっている。oldという拡張子がついてるということは、恐らく、vmlinuzのバックアップリンクの役割だと思われる。カーネルファイルが壊れた場合、このoldファイルをリネームして、拡張子を取れば復旧できるようになっているものと思われる。

vmlinuzだが、拡張子はついていないが、fileコマンドで詳細を表示してみると、bziImageという形式のイメージファイルであることが確認できる。OSを起動したときに、ブートローダーがこのvmlinuzファイルを、メモリ上にロードすることでOSは起動される。そしてブートローダーを起動するのは、マザーボード上に組み込まれている、BIOSもしくはUEFIというファームウェア。カーネルがロードされるメモリ空間のことをカーネル空間と呼ぶ。また、vmlinuzの後についている5.4.0.80-genericは、カーネルのバージョンを指している。

ls -lhで、vmlinuzの容量を確認してみると、12Mであることが分かる。重要なファイルである割には、随分と軽いファイルになっている。実は軽い方がOSの起動が短時間で済むため、あえて軽くしているのだ。カーネルファイルを軽くできる理由は、本来、カーネルに含まれていた機能をモジュールとして別ファイルにして外部に出しているためだ。そして、モジュールはカーネルが起動されたとき、カーネルの中に一緒に組み込まれることで動作するようになっている。各種モジュールファイルは、/lib/modeulesの配下に格納されている。/lib/modeulesの配下をみると、5.4.0.80-genericという、カーネルのバージョン番号であらわされたディレクトリが1つだけ存在している。そのディレクトリの中にたくさんのモジュールが格納されていることが確認できる。カーネルのバージョンを表示するコマンドはuname -r。実行すると、5.4.0.80-genericと表示される。OSのバージョンはUbuntu20.4なので、OSのバージョンとカーネルのバージョンは全く関連性がないことになる。

ls -lでモジュールが保管されているファイルの一覧を表示するには、ls -l /lib/modeules/5.4.0.80-genericとなるが、ls -l /lib/modeules/uname -rというコマンドを使って応用することができる。これはちょっとしたテクニック。

OS起動時にカーネルに組み込まれたモジュールの一覧を表示するコマンドがある。それがlsmodコマンド。

vmlinuzは起動した後は、ディレクトリの大元である、ルート(/)のファイルシステムをマウントして、各種サービスを起動する大元のプログラム、/sbin/initを起動して、準備OKとなる。

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3