🐧 Linux 総合学習プラットフォーム

OS内部/起動の仕組みの用語集(19語)

OS内部/起動の仕組みに関する Linux 用語を、読み・意味・補足つきでまとめました。

cgroupsリソース制限しーぐるーぷすりそーすせいげん
CPUやメモリなど、プロセスグループが使える資源の上限をカーネルが強制する仕組み。
cgroups(control groups)は階層構造を持ち、親グループの制限は子グループにも及ぶ。dockerの--memoryや--cpusといったオプションは、内部でこのcgroupsへ制限値を書き込むことで実現されている。
GRUBぐらぶ
Linuxで広く使われるブートローダ。起動メニューを表示し、カーネルや起動パラメータを選んで読み込む。
GRand Unified Bootloader の略。設定本体の /boot/grub2/grub.cfg は自動生成され、人は /etc/default/grub を編集して grub2-mkconfig で再生成するのが基本。起動時にパラメータを一時編集してレスキュー起動する用途もある。
initいにっと
カーネルが最初に起動するユーザ空間プロセス(PID 1)。他のすべてのプロセスの起点となる。
古くはSysVinitやUpstartが担っていたが、現在の多くのディストリビューションでは systemd がその役割を果たす。サービスの起動順序や依存関係を管理し、システムを利用可能な状態へ導く。
initramfsいにっとらむえふえす
起動初期にメモリ上へ展開される一時的なルートファイルシステム。本来のルートをマウントするための橋渡し。
ブートローダがカーネルと一緒に読み込む。実ディスクのドライバや暗号化・LVMなどの解決に必要なモジュールを含み、本来のルートファイルシステムをマウントできる状態を整えてから処理を引き継ぐ。
namespace分離ねーむすぺーすぶんり
PID・NET・MNTなど種類ごとに、プロセスへ見せる世界をカーネルレベルで分離する仕組み。
同じ種類のnamespaceを共有するプロセス同士は同じ視界(プロセスID体系やネットワーク構成など)を見るが、異なるnamespaceに属するプロセスからは互いが見えない。コンテナ技術の視界分離を担う基盤機能。
procfs (/proc)ぷろっくえふえす
ディスクに実体を持たない疑似ファイルシステム。カーネルやプロセスの情報をファイルとして見せる。
/proc/cpuinfo や /proc/meminfo でハードウェアやメモリの状態を、/proc/version でカーネル情報を読める。数字のディレクトリは各プロセスに対応し、cat で読むだけでカーネル内部を観察できる。
sysfs (/sys)しすえふえす
カーネルが認識するデバイスやドライバの構造を階層的に公開する疑似ファイルシステム。
/sys/block 以下にブロックデバイス、/sys/devices 以下にハードウェア属性が並ぶ。項目によっては書き込みで挙動を変えられる。lsblk などのツールも内部でこの情報を読み取って表示を組み立てている。
systemdしすてむでぃー
現代Linuxの標準的なinitシステム兼サービス管理基盤。unit単位で管理し、サービスを並列に起動する。
PID 1 として動作し、.service や .target などの unit を扱う。systemctl で状態確認・起動・停止・自動起動設定を一貫して行え、systemd-analyze で起動時間を分析できる。依存解決による並列起動で起動が速い。
targetたーげっと
systemdで複数のunitをまとめた起動状態の単位。かつてのランレベルに相当する。
multi-user.target は文字コンソール環境、graphical.target はGUI環境を表す。現在の既定は systemctl get-default で確認し、systemctl set-default で変更する。ランレベル3/5の概念を置き換えるもの。
UEFI / BIOSゆーいーえふあい/ばいおす
電源投入直後に動くファームウェア。ハードウェアを初期化してブートローダを起動する。
BIOSは古くからの方式、UEFIはその後継で大容量ディスクや高速起動、セキュアブートに対応する。いずれもPOST(自己診断)後に起動デバイスからブートローダを読み込み、OS起動の最初の橋渡しを行う。
カーネルかーねる
OSの中核。ハードウェアとソフトウェアの間に立ち、メモリ・プロセス・デバイスを管理する。
ユーザ空間のプログラムはシステムコールを通じてカーネルに処理を依頼する。動作中のバージョンは uname -r や /proc/version で確認でき、脆弱性対応やドライバ互換性の判断の起点になる。
カーネルオブジェクトかーねるおぶじぇくと
拡張子 .ko を持つ、カーネルモジュールの実体となるバイナリファイル。
対象のカーネルバージョンに合わせてビルドされたバイナリで、多くのディストリビューションでは /lib/modules/カーネルバージョン/ 以下に格納される。lsmod が表示する一覧はこのファイルがメモリ上に読み込まれた結果を指している。
カーネルコマンドラインかーねるこまんどらいん
起動時にブートローダからカーネルへ渡されるパラメータ列。起動挙動を制御する。
ルートデバイスの指定(root=)やログレベル、各種機能の有効/無効などを渡す。現在の値は /proc/cmdline で確認でき、GRUBの起動メニューで一時的に編集してレスキューやデバッグに使うこともできる。
デマンドページングでまんどぺーじんぐ
メモリを要求された時点ではなく、実際に使われる瞬間まで物理メモリの割り当てを遅らせる戦略。
プロセスがメモリ確保を要求しても、カーネルはすぐには物理メモリを割り当てず、実際にそのページへアクセスがあってページフォルトが発生した時点で初めて割り当てる。無駄な物理メモリ消費を避けるための基本戦略。
ブートローダぶーとろーだ
ファームウェアの後にカーネルを読み込んで起動させる小さなプログラム。Linuxでは主にGRUBが使われる。
電源投入後、BIOS/UEFIによる初期化が終わると制御を受け取り、ディスク上のカーネルとinitramfsをメモリへ読み込んでカーネルへ処理を引き渡す。複数OSや複数カーネルから起動対象を選ぶ役割も担う。
ページフォルトぺーじふぉると
まだ物理メモリと対応付けられていないページへアクセスした際にCPUが発生させる例外。
ページフォルトが起きるとカーネルが処理を引き取り、必要であればそのタイミングで物理メモリを割り当てる。デマンドページングの中核となる仕組みで、頻発自体は異常ではないが、過度な頻発は物理メモリ不足のサインになりうる。
モジュールブラックリストもじゅーるぶらっくりすと
特定のカーネルモジュールを自動読み込みの対象から外す設定。
/etc/modprobe.d/ 以下の設定ファイルに blacklist モジュール名 と記述して指定する。ただし他のモジュールから依存として明示的にmodprobeされた場合は、ブラックリストに載っていても読み込まれる点に注意が必要。
モジュール自動読み込みもじゅーるじどうよみこみ
起動時やデバイス接続時に、必要なカーネルモジュールを人手を介さず読み込む仕組み。
/etc/modules-load.d/ への明示的な指定と、udevによるハードウェア検出に応じた動的なmodprobeの2系統がある。前者は「必ず載せたいもの」を、後者は「挿したときだけ必要になるもの」を扱う点で役割が異なる。
仮想アドレス空間かそうあどれすくうかん
各プロセスに割り当てられる、自分専用に見えるメモリ番地の集合。
実際の物理メモリとは別に、プロセスごとにカーネルとMMUが用意する見かけ上のアドレス空間。複数のプロセスが同じような番地を使っていても、実体は別々の物理メモリへ対応付けられるため互いに干渉しない。

▶ 学習アプリで「引く」を使う