カーネルの起動
今回は、カーネルの起動について解説します。【連載コラム:Linuxシステム管理標準教科書を読む(17)】
Linuxの基本的なスキルを習得したら、Linuxサーバーをシステムとして長期に運用管理していくためのスキルを身につけるのはいかがでしょうか。このコラムでは、「Linuxシステム管理標準教科書」の全体調整を担当した筆者が改めて大切なポイントを解説していきます。
カーネルは、ブートローダーから呼び出されて起動ディスクからメモリーに読み込まれ、制御がカーネルに移るとコンピューターの各種リソースを初期化していきます。ハードウェアの初期化がすべて終わると、systemdを呼び出し、各種プロセスの起動に移ります。今回は、カーネルの起動にまつわる様々な知識について解説します。
カーネルのファイルの在処
Linuxカーネルのファイルは/bootディレクトリに保管されています。起動に関わるその他のファイルも含まれていますが、カーネルのファイル名はvmlinuzとなっているので、以下のように確認できます。
$ ls /boot/vmlinuz*
$ ls /boot/vmlinuz*
/boot/vmlinuz-0-rescue-2639c81007de48bd90006a8b3355689e
/boot/vmlinuz-5.14.0-503.14.1.el9_5.aarch64
/boot/vmlinuz-5.14.0-503.11.1.el9_5.aarch64
この環境はArmプロセッサなので、末尾にはアーキテクチャを締めるaarch64が着いています。カーネルのアップデートを行ったので、「5.14.0-503.14.1」と「5.14.0-503.11.1」が存在しています。カーネルアップデートした際にはブートローダーの書き換えが行われ、新しいカーネルで起動するようになりますが、ブートローダーを手動で操作するなどして古いカーネルで起動することもできます。
vmlinuzというファイル名について
カーネルのファイル名はなぜvmlinuzなのでしょうか。これは元々、UNIXのカーネルのファイル名がvmunixという名前でした。vmはVirtual Memoryのイニシャルで、仮想メモリーに対応したUNIXカーネルという意味です。ここから転じてvmlinuxになりましたが、さらにLinuxカーネルはgzipで圧縮されているのでvmlinuzというファイル名になっています。
現在動作しているカーネルの確認
現在動作しているカーネルのバージョン等を確認するには、unameコマンドを使用します。
$ uname -a
Linux localhost.localdomain 5.14.0-503.14.1.el9_5.aarch64 #1 SMP PREEMPT_DYNAMIC Tue Nov 19 21:12:54 EST 2024 aarch64 aarch64 aarch64 GNU/Linux
ホスト名等、様々な情報が表示されるので、カーネルのバージョンだけに絞りたい時は-rオプションを使用します。
$ uname -r
5.14.0-503.14.1.el9_5.aarch64
2つのカーネルのファイルのうち、新しい方で起動していることがわかります。
カーネルモジュールの確認
カーネルは、vmlinuz本体だけでなく、各種モジュールも必要に応じてメモリーにロードされて動作します。どのようなモジュールがロードされているのかはlsmodコマンドで確認します。
$ lsmod
Module Size Used by
snd_seq_dummy 12288 0
snd_hrtimer 12288 1
nft_fib_inet 12288 1
nft_fib_ipv4 12288 1 nft_fib_inet
(略)
非常に沢山のモジュールがロードされているのがわかります。
モジュールとカーネルのバージョン
モジュールは、カーネルのバージョンが変わると、そのバージョン用にビルドされたモジュールが必要となります。モジュールは/lib/modulesディレクトリに格納されますが、カーネルのバージョン毎のディレクトリに分かれています。
$ ls /lib/modules
5.14.0-503.11.1.el9_5.aarch64 5.14.0-503.14.1.el9_5.aarch64
ディストリビューション標準のモジュールであれば、パッケージとして一括でインストールされますが、追加で自分でインストールしたモジュールの場合には、カーネルのバージョンアップ後、あらためてビルドし直す必要があります。
GPUやストレージ、ネットワークなど、特定のハードウェアを動作させるためのデバイスドライバーがモジュールとして提供されている場合、カーネルのバージョンと密接に関係している場合がありますので、サポートされるカーネルのバージョンを確認するなどして、適切な環境を構築する必要があるでしょう。
- 筆者紹介
宮原 徹 氏
Linux標準教科書、Linuxサーバー構築標準教科書などの監修者。LinuCレベル1/レベル2 Version10.0の改訂作業にも協力。また、幅広いOSSに関する情報提供の場として「オープンソースカンファレンス(OSC)」の企画運営も。
<Linuxシステム管理標準教科書とは>
「Linuxシステム管理標準教科書」(システム管理教科書)は2015年4月にリリースされた標準教科書シリーズの1冊です。Linuxシステムの運用管理という観点で書かれており、システム管理者という業務において知っておかなければならない基本的なトピックが解説されています。「Linux標準教科書」「Linuxサーバー構築標準教科書」でコマンド操作やサーバー構築の基本を学んだら、このシステム管理教科書を読んで、単にLinuxを使うのではなく、システムとして長期的に管理運用していくためのスキルを身につけてください。
バックナンバー
第16回:新しいディストリビューションでのGRUBの取り扱い
第15回:DHCPについて
第14回:firewalldによるパケットフィルタリングの設定
第13回:パケットフィルタリングについて
第12回:各種ネットワーク設定ファイルについて(後編)