【LPIC入門 101.2】Linuxでのシステムのブート

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の場所、設定例トについてまとめました。

起動時のカーネルにオプションを指定

カーネルを起動するとき、カーネルには決定できないハードウェアのパラメータをカーネルに渡したい場合に「コマンドラインオプション」あるいは「起動時パラメータ」を使います。

【起動オプションを変更する手順】

  1. 起動時にShiftキーを押し続けると、GRUBメニューが表示される。
  2. 起動したいカーネルにカーソルを合わせてEキーを押す。
  3. kernelで始まる行を選択してEキーを押す。
  4. 起動オプションを設定する。
  5. 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の基礎と試験範囲別の解説についてまとめました。
コンピュータ
スポンサーリンク

コメント