# Arch Boot Process (日本語)

関連記事

- ブートローダー
- Master Boot Record
- GUID Partition Table
- Unified Extensible Firmware Interface
- mkinitcpio
- systemd
- fstab
- 自動起動

Arch Linux を起動するためには、GRUB や Syslinux などの Linux 対応のブートローダを、Master Boot Record もしくは GUID Partition Table にインストールする必要があります。ブートローダは、ブートプロセスが始まる前にカーネルや初期 RAM ディスクをロードする仕事を行います。BIOS と UEFI で起動の流れはかなり異なっています。このページや関連するページに詳しい説明があります。

## ブートプロセス

### BIOS

1. システムの電源が入れられ POST が実行される
2. BIOS がブートに必要なシステムハードウェア (ディスクやキーボードコントローラなど) を初期化する
3. (BIOS のディスク順で) 最初のディスクの最初の440バイト (Master Boot Record) が BIOS によって実行される
4. BIOS から MBR ブートコードにコントロールが移り、次のステージのコードが起動する (通常はブートローダーのコード)
5. 起動した（2番目の）コード（ブートローダー）はサポートと設定ファイルを読み込む
6. 設定ファイルのデータに基づき、ブートローダーはカーネルと initramfs をシステムメモリ (RAM) にロードしてカーネルを起動する

### UEFI

次のページを参照してください: Unified Extensible Firmware Interface (日本語)#UEFI のブートプロセス

## カーネル

カーネルはオペレーティングシステムのコアです。ローレベル (カーネル空間) で、マシンのハードウェアとハードウェアを使って実行されるプログラムを橋渡しします。CPU を効率的に利用するために、カーネルはスケジューラーを使ってどのタスクが優先的に実行されるかを決定し、多くのタスクが同時に実行されるのを可能にしています。

## initramfs

カーネルがロードされた後、カーネルは initramfs (initial RAM ファイルシステム) を解凍して、initial root ファイルシステムにします。カーネルは最初のプロセスとして `/init` を起動します。初期ユーザー空間の始まりです。

initramfs の目的は root ファイルシステムにアクセスできる位置にシステムをブートストラップすることです (詳しくは FHS を見て下さい)。これは IDE, SCSI, SATA, USB/FW (外部ハードウェアから起動する場合) などのデバイスのために必要なモジュールがカーネルに入っていない場合 initramfs からモジュールをロードできなくてはならないということを意味しています; (プログラムやスクリプトから明示的に指定されるか udev を通すかして) 正しいモジュールがロードされると、ブートプロセスが再開されます。従って、initramfs に含めなくてはならないのは root ファイルシステムにアクセスするために必要なモジュールだけで、使用する全てのモジュールを入れる必要はありません。ほとんどのモジュールは後の init プロセス中に、udev によってロードされます。

## Init プロセス

初期ユーザー空間の最終段階として、本当の root がマウントされ、initial root ファイルシステムを置き換えます。`/sbin/init` が実行され、`/init` プロセスを置き換えます。Arch は init プロセスとして systemd を使っています。

## 参照

- Early Userspace in Arch Linux
- Inside the Linux boot process
- Boot with GRUB
- Wikipedia:Linux startup process
- Wikipedia:ja:initrd
- Boot Linux Grub Into Single User Mode

Categories:

- Boot process (日本語)
- About Arch (日本語)