LPIC入門 101.2のLinuxでのシステムのブートについてまとめました。
【Linuxの起動】電源投入~スクリプト実行
コンピュータを起動し、使用可能状態になるまでのシーケンスは以下のとおりです。
- ①コンピュータの電源投入
- ②マザーボードのファームウェア(BIOS/UEFI)の起動
- POST(Power On Self Test:ハードウェア診断と初期化)を実行する。
- 起動ドライブ(SSD、HDD、CD-ROMなど)を探索し、ファーストブートドライブとして起動する。
- BIOSの場合、ブートドライブの先頭ブロック(MBR:Master Boot Record)に書き込まれた第1ステージ・ブートローダをメモリにロードし、ブートストラップローダ(MBR領域にあるプログラム)に制御を移す。
- ③第1ステージ・ブートローダが動作
- 「/boot」パーティションから第2ステージ・ブートローダーをメモリにロード。
- ④第2ステージ・ブートローダが動作
- カーネルの選択画面を表示し、選択されたカーネルのカーネルバイナリーファイル(/boot/vmlinuz-バージョン)を第2ステージ・ブートローダが「/boot」ディレクトリ内から見つけてロードする。
- ⑤カーネルの動作
- メモリの初期化など、pci情報などからハードウェアの初期設定を実施し、メモリにロードされている「initrd」をマウントする。
- ⑥initrd (カーネルプロセス)
- ルートファイルシステムを読み取り専用でマウントし、「/sbin/init」プログラムを実行。
- ⑦init (カーネルプロセス)
- Linux上で動くすべてのプログラムは、initプログラムから実行される(PIDは必ず1となる)。そのため、「initはすべてのプロセスの親である」と表現される。
- ⑧/etc/inittab (initプロセス)
- initが起動すると「/etc/inittab」を読み込むす。
- 「/etc/rc.d/rc.sysinit」スクリプトを実行。
- ⑨rcスクリプト (initプロセス)
- rcはRun Controlの略。
- initが「/etc/inittab」で指定されているrcスクリプト(/etc/rc.d/rc.sysinit、/etc/rc.d/rc)を実行し、システムの初期設定(デバイスドライバのロードなど)を行う
- 「rc.sysinit」スクリプトは「/etc/rc.d/init.d/functionsスクリプト」が実行する。
【Linuxのブートローダ】LILO、GRUB
LinuxのデフォルトのブートローダはLILO(LInux LOader)とGRUB(GRand Unified Bootloader)があります。
ブートローダはカーネル(OSの本体)をロードしますが、LILOちGRUBではロードまでの工程が異なります。
種別 | 概要 |
---|---|
LILO | カーネルの位置情報を持ち、その情報からカーネルをロードします。ただし、ファイルシステムを認識できないため、カーネルの位置をSSD/HDDのブロックリスト(物理的な位置情報)で判断します。この物理的な位置情報をブロックリストといいます。そのためLILOは「ブロックリスト参照型」のブートローダといわれます。 |
GRUB | GRand Unified Bootloaderの略で、ファイルシステムを認識できため、カーネルの位置をファイルパスで指定できる「ファイルシステム認識型」のブートローダーです。 |
LILOをブートローダとして利用する場合は、/etc/lilo.confに起動の設定を記述しliloコマンドを実行する必要があります(詳細は下記事参照)。

【Linux】lilo.conf、liloコマンドの場所、設定例
Linuxにおけるlilo.confの場所、設定例トについてまとめました。
起動時のカーネルにオプションを指定
カーネルを起動するとき、カーネルには決定できないハードウェアのパラメータをカーネルに渡したい場合に「コマンドラインオプション」あるいは「起動時パラメータ」を使います。
【起動オプションを変更する手順】
- 起動時にShiftキーを押し続けると、GRUBメニューが表示される。
- 起動したいカーネルにカーソルを合わせてEキーを押す。
- kernelで始まる行を選択してEキーを押す。
- 起動オプションを設定する。
- Returnで戻り、Bキーを押して起動する。
オプション | 説明 |
---|---|
root=デバイス | ルートファイルシステムを指定したデバイスに設定。 |
console=デバイス | コンソールを指定したデバイスに設定。 |
init=プログラム | /sbin/initの代わりに指定したプログラムを起動。 |
initcall_debug | 初期化時の関数呼び出しの情報をカーネルメッセージに出力。主にデバッグ用。 |
quiet | メッセージの出力を抑制 |
debug | ログレベルを10に設定(全てのカーネルメッセージがコンソールに出力される)。主にデバッグ用。 |
single | シングルユーザモードで起動。 |
text | テキストモードで起動。 |
emergency | 緊急モードで起動。 |
init=プログラム | 起動時に実行させるプログラムを指定。例えば、システムが破損し、起動できない場合に「init=/bin/sh」を指定すると、シェル(/bin/sh)を起動できる。 |
mem=数 | メモリーサイズを指定した値に設定。 |
disable_ipv6=1 | IPv6の設定。1だとIPv6が無効化される。 |
ip=dhcp | IPアドレスをDHCPで設定。 |
nosmp | SMPを無効化。 |
nr_cpus=数 | CPUを指定した数だけ使用。 |
nousb | USBを無効化。 |
1 | ランレベル1で起動。rootユーザのみが使用可能となり、ネットワークやNFSなどの設定は自動的には行われない。システムの管理や復旧時に使用することが多い。 |
3 | ランレベル3で起動。一般ユーザーも使用可能で、コンソールからのログインとなる。 |
5 | ランレベル5で起動。一般ユーザーも使用可能で、Xサーバが起動され、gdmなどのディスプレイマネージャが起動する。 |

【LPIC入門】Linuxの基礎と試験範囲別の解説
LPICに従って、Linuxの基礎と試験範囲別の解説についてまとめました。
コメント