LinuCレベル1 101試験「1.01.3 ブートプロセスとsystemd」の解説をまとめました。
重要度 4 概要 UEFI/BIOSからブート完了までのブート手順について理解している。
システムにおけるsystemdのブートターゲットを管理できる。これには、シングルユーザモードへの変更と、システムのシャットダウンまたはリブート、デフォルトのsystemdのブートターゲットの設定も含まれる。詳細 デフォルトのブートターゲットを設定する。
systemd, systemctlブートターゲット(シングルユーザモードを含む)を変更する。
systemctlコマンドラインからシャットダウンおよびリブートする。
shutdown, halt, reboot, poweroff

BIOSとは
BIOSは「Basic I/O System」(I/OはInpute / Outputのこと、データの出し入れを意味)の頭文字で、コンピュータの電源を入れると最初に起動し、コンピュータに接続されているデバイスの起動の優先順位を決定するシステムとして動作します。
BIOSは決定した優先順位に従って各デバイス(HDD、SSDなど)の先頭セクタにあるMBR(マスターブートレコードのこと。起動時にコンピュータが読み込むデータであるブートローダが格納されている)を読み込み、得られたブートローダに制御を移します。
BIOSがブートローダを得ることができない場合は次のデバイスのMBRを読み込みます。
起動デバイスの優先順位は、BIOSセットアップ画面で任意の順序に設定変更できます。BIOSセットアップ画面はコンピュータの起動時に特定のキー(DEL、F2など)を押して呼び出します。
ステージ1: BIOS
コンピュータの電源をオンにすると、コンピュータはBIOS (Basic Input/Output System)を起動し、POST (Power On Self Test)を実行します。POSTは、ハードディスク、SSD、キーボード、RAM、USBポートなどのコンポーネントやその他のハードウェアの機能を検査する整合性チェックです。ハードウェアが期待どおりに動作する場合、ブートプロセスは次のステージに進みます。

UEFIとは
UEFIについてLinuC公式サイトでは以下のように紹介されています。
「UEFI」(Unified Extensible Firmware Interface)は、マザーボードに直接搭載されており、
コンピュータに電源を投入した際に最初に起動するプログラムです。「UEFI」の役割は、OSを起動する前にコンピュータに搭載されている各種機器を初期化し、OSを適切に起動することです。
この役割は、以前は「BIOS」と呼ばれるプログラムが担っていました。しかし、BIOSは古いプログラムで時代遅れとなったため、新たに開発されたのが「UEFI」です。

UEFIとBIOSの違い
LinuC公式サイトではUEFIとBIOSの違いについて以下のように記載されています。わかりやすくUEFIとBIOSの違いを表現すると、UEFIのほうがBIOSより新しく、GUIで視覚的に操作できるようになっているということです。
「UEFI」が「BIOS」と比べて進化した点は数多くありますが、誰にでもわかる違いに、設定画面の違いがあります。
BIOSではCUIベースの設定画面を利用しており、キーボードでのみ操作することが可能でしたが、UEFIでは設定にGUIベースの画面が利用でき、
マウスも操作で利用できるようになりました。BIOSのあの画面が苦手、という問題が解消されました。コンピュータでLinuxをインストールする際に、
UEFIの設定を調整して、起動させるOSが収録されている場所を指定することも多いため、比較的新しいPCにLinuxをインストールした経験がある方であれば、
UEFIの設定を行ったことがある可能性も大きいと思います。UEFI(BIOS)は、システムをインストールするときだけではなく、たとえばハードウェアに何らかの変更を加えたときなどにも設定する必要が生じるケースがありますので、覚えておきましょう。

UEFIとBIOSについてのより詳しい詳細は以下の記事でまとめました。
ブートローダ
ブートローダは記憶装置内(HDD、SSD)のカーネルをロードし、カーネルに制御を移すものです。LinuxではGRUBがブートローダに該当します。
ブートローダはMBRに格納されている第一段階部分と、記憶装置内(HDD、SSD)の別の場所に格納されている第二段階部分が存在します。このように分かれている理由は、MBRにサイズ制限があるためです。
ステージ2: ブートローダ
POSTが完了すると、BIOSはMBR (マスターブートレコード)に保存されているブートローダプログラムを検索してロードします。MBRは512バイトのコードで、通常はハードドライブのアーキテクチャに応じて
/dev/sdaまたは/dev/hdaに配置されています。MBRは、LinuxのライブUSBまたはDVDインストール上に配置することもできます。BIOSは、このMBRコードをロードして実行します。Linuxには、主要なブートローダとしてLILO、GRUB、およびGRUB2の3つがあります。GRUB2 (Grand Unified Bootloader)ブートローダは、最新のLinuxディストリビューションにおける最新のプライマリブートローダです。GRUB2の設定ファイルは
/boot/grub2/grub2.cfgにあります。BIOSは、GRUB2ブートローダを見つけると、GRUB2を実行してメインメモリ(RAM)にロードします。

ターゲットとランレベル
| ランレベル | ターゲット |
|---|---|
| 0 | poweroff.target |
| 1 | rescue.target |
| 2,3,4 | multi-user.target |
| 5 | graphical.target |
| 6 | reboot.target |
systemdの概要
systemdは、Linuxオペレーティングシステムのシステムおよびサービスマネージャです。サービス管理、依存関係の追跡、ログ記録、リソース管理、ソケットの有効化、システム制御などの重要な機能を担います。
systemdをわかりやすく表現すると、Linuxのシステムとサービスを管理しているデーモンです。systemdのdは「daemon(デーモン)」を意味します。デーモンは常駐プログラムのことで、常にOS上で動作して待機しているプログラムを指します。
1 systemdとは
systemdは、Linuxオペレーティングシステムのシステムおよびサービスマネージャです。主要なLinuxディストリビューションでデフォルトの初期化システムです。systemdは、ユーザが直接開始するのではなく、/sbin/initを介してインストールされ、初期ブート中に起動されます。systemdは、ブート時に最初のプロセス(PID 1)として実行されたときにユーザスペースサービスを起動および維持するinitシステムとして機能します。PID 1はinitと呼ばれ、最初に作成されるLinuxユーザモードプロセスです。その実行はシステムのシャットダウンまで継続します。
systemdはPID 1を所有し、カーネルによって直接起動されます。他のすべてのプログラムは、systemdまたはそのいずれかの子プロセスによって直接起動します。systemdは、ホストのファイルシステムをマウントし、一時ファイルを管理します。SysV initスクリプトとの下位互換性があります。SysVは、systemdよりも以前の初期化システムです。
systemdでは、ユニットとは、システムが操作および管理方法を認識しているリソースのことです。これは、systemdツールで使用されるプライマリオブジェクトです。これらのリソースは、設定ファイルであるユニットファイルで定義します。

systemctlコマンドの概要
systemctlは、サービスの起動や停止、状態確認を行うコマンドです。
systemctlは、initシステムを制御する中央管理ツールです。systemdシステムおよびサービスマネージャの状態を調べ、制御するために使用されます。

systemctlコマンドの使い方
| サブコマンド | 用途 |
|---|---|
| disable | サービスの自動起動を無効にする |
| enable | サービスの自動起動を有効にする |
| get-default | 次回起動時のターゲットを表示する |
| halt | システムを停止しhalt状態にする |
| is-active | サービスが稼働しているかを表示する |
| isolate | 他のUnitを停止して対象のUnitを起動する |
| list-unit-files | すべてのUnit定義ファイルを一覧表示する |
| reboot | システムを再起動する |
| reload | サービスの設定ファイルを再読み込みする |
| rescue | レスキューモードに移行する |
| restart | サービスを再起動する |
| set-default | 次回起動時のターゲットを設定する |
| start | サービスを起動する |
| status | サービスの状態を表示する |
| stop | サービスを停止する |
| poweroff | システムを停止し電源を切断する |
shutdownコマンドの使い方
shutdownコマンドの書式と主なオプションは以下のとおりです。
shutdown [オプション] 時間 [メッセージ]
| オプション | 説明 |
|---|---|
| -h | システム停止(デフォルト) |
| -r | システム再起動 |
| -k | シャットダウンは行わず、ログイン中の全ユーザーにメッセージを送る |
| -c | 実行中のシャットダウンをキャンセル |
「時間」は以下のように指定します。
[HH:MM]指定した時刻(HH時MM分)に実行+MM分後に実行now今すぐに実行

