# Arch boot process (简体中文)

相关文章

- Boot loaders
- Master Boot Record
- GUID Partition Table
- Unified Extensible Firmware Interface
- mkinitcpio
- systemd
- fstab
- Autostarting

翻译状态： 本文是英文页面 Arch_Boot_Process 的翻译，最后翻译时间：2012-11-04，点击这里可以查看翻译后英文页面的改动。

为了启动 Arch Linux，一个与 Linux 兼容的启动引导程序，如 GRUB, GRUB2, LILO, 或者 Syslinux 必须被安装到主引导记录(MBR), 或者GUID 分区表(GPT)。启动引导程序的任务是初始化 Arch 启动过程，然后加载内核以及初始化内存盘。

## 启动加载器

系统开机并且执行完加电自检后，BIOS会根据自身设置选择最佳的启动媒介，把控制权传递给该媒介的主引导记录（Master Boot Record）部分。在GNU/Linux系统中，MBR里通常是像GRUB、LILO这样的引导器（bootloader）。引导器通常会给用户一个菜单或者命令行之类的机制，供用户选择和设置。例如双系统的设置。一旦你选择启动Arch时，引导器就会载入`/boot` 目录下的内核镜像（比如`initramfs-linux.img`），并解压缩。

## 内核

内核是一个操作系统的核心。他作用于非常底层的硬件和控制硬件的程序之间的部分（又称之为内核空间）。由于CPU在某个时刻只能执行一个任务，为了更为高效的使用CPU，内核使用调度器，通过一定的优先级算法将 CPU 按照时间动态的分配给各个程序。给我们的感觉就像所有程序都在使用CPU一样。

## initramfs

内核在载入后会解压initramfs(初始化RAM文件系统），生成初始根文件系统。然后内核会执行 `/init`，init 成为第一个进程，早期用户空间就启动了。

initramfs 的作用是将系统启动到可以访问 根文件系统的阶段，所以需要包含没有内置进内核的 IDE、SCSI、SATA（如果从USB设备中启动的话，肯定还有USB/FW模块）等驱动。在initramfs载入了必要的模块后(通过程序和脚本显式加入或通过 udev 自动装入)，引导过程继续。因此，initrd无须包含所有模块，大部分模块将在随后的引导中通过udev载入。

## Init 进程

在早期用户空间的最后，会挂载真正的根分区，并替代初始根文件系统。执行 `/sbin/init` 以接替 `/init` 进程。

Arch 现在使用Systemd作为默认的初始化进制。Arch 过去使用 Initscripts，建议使用它的用户切换到Systemd.

## 扩展资源

- Arch Linux 早期用户空间
- 通过Grub启动到单用户模式
- 通过GRUB引导Linux
- Linux驱动过程探究
- Linux / Unix命令之sysctl.conf详解
- 论坛中的rc.local范例
- 维基百科中的启动过程解析
- Wikipedia:initrd

Categories:

- Boot process (简体中文)
- About Arch (简体中文)