本記事では、Linuxのカーネルの意味とパラメーターを調べる方法について紹介します。
Kernel(カーネル)「Linux」とは?
カーネルとは、オペレーティングシステム(OS)の中核を構成するソフトウェアの起動や終了、メモリの割り振りなどソフトウェアとハードウェアの間で仲介する役割をします。
Linuxカーネルでは、ユーザーが挙動を指定できるようにカーネルパラメータと呼ばれるものが用意されています。
カーネルは、ハードウェアとソフトウェアの間の通信を管理するソフトウェアとして働き、パソコンの「性能」、「メモリ効率」、「セキュリティ」、「プロセッサ」のアーキテクチャなどが複雑に絡んだ問題に対応してくれます。
Linuxでは、カーネル変更にともなう再起動やカーネルの再コンパイルなどは必要ありません。
パラメータの数は全体で2,000個程度とされる。
ファイルシステムに統合されており、
/proc/sys以下にテーマごとにディレクトリに分かれて仮想的なファイルとして格納されています。
最上位のディレクトリには「abi」「debug」「fs」「kernel」「net」「user」「vm」などがあり、さらに細かなサブディレクトリに分かれているものもあます。
設定値の表示や変更にはsysctlコマンドを用いるが、表示はcatコマンドなどでパスを指定することでも行うことができる。
起動中のシステムのパラメータを書き換えると即座に反映されるが、再起動すると元に戻ってしまう。
永続的に変更したい場合は /etc/sysctl.conf や /etc/sysctl.d/ 以下の.confファイル群を書き換える必要がある。
LinuxのディストリビューションとLinuxカーネルは以下の図のようになっています。
Linuxのディストリビューション
- ハードウェアには、CPUやメインメモリ、SSD/HDD、といったハードウェアがあります。
- OSには、Linuxカーネルが含まれています。シェルやデバイスドライバー、ブートローダなどがこの階層です。
- 最後にアプリケーションソフトがあります。GUIといったデスクトップ環境も一つのアプリケーションです。
Linuxのカーネルの機能
カーネルパラメータの種類には、
「クラス」と「サブクラス」が存在しています。
sysctlのパラメータは以下から変更が可能。
man sysctl
実際に、/etc/sysctl.confの中身は以下の通りです。
$ cat /etc/sysctl.conf
#
# /etc/sysctl.conf - Configuration file for setting system variables
# See /etc/sysctl.d/ for additional system variables.
# See sysctl.conf (5) for information.
#
#kernel.domainname = example.com
# Uncomment the following to stop low-level messages on console
#kernel.printk = 3 4 1 3
(略)
カーネルパラメーターを調べる方法
Linuxのカーネル内部の情報を確認する方法として、「/proc/sys」内を確認する方法があります。すると、カーネルパラメータを以下のように確認することができます。
①unameコマンド
#Ubuntu 18.04
$uname -r
4.15.0-194-generic
#Ubuntu 20.04
name -r
5.4.0-171-generic
②/proc/versionを参照
この中身をcatでみると詳細なバージョン情報が確認出来ます。
$cat /proc/version
Linux version 5.4.0-171-generic (buildd@lcy02-amd64-005) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2)) #189-Ubuntu SMP Fri Jan 5 14:23:02 UTC 2024
③カーネルパラメータは、ファイルシステムの「cd /proc/sys」以下に格納されているファイルとして見つけることができます。このディレクトリ構造を見てみると、比較的広範囲に渡っていることが分かります。
ここでkernelフォルダが確認できます。
$ cd /proc/sys
$ ls
abi debug dev fs kernel net user vm
用意する設定情報。
- abi: 実行ドメインとパーソナリティに関するパラメータ
- debug: デバッグ用パラメータ
- dev: システム上のデバイスに関するパラメータ
- fs: ファイルシステムパラメータ
- kernel:カーネルを操作するためのパラメータ
- net: ネットワーキングに関するパラメータ
- user: ユーザーネームスペースパラメータ
- vm: メモリ管理パラメータ
まとめ
✔ 本記事ではカーネルパラメーターを調べる方法ついて学びました。
コメント