Linux 开机流程简介


了解 Linux 的开机流程, 对于系统管理员十分重要, 当系统发生问题时, 可以更有效除错, 以下文章会简单介绍 Linux 开机的流程, 而 Linux 开机的流程主要会经过以下 6 个步骤:

1 .BIOS
2. MBR
3. GRUB
4. Kernel
5. Init
6. Runlevel Scripts

1. BIOS
当按下电源按钮后, 最先加载的是 BIOS, BIOS 会加载 CMOS 资料, 并进行自行检测。
然后 BIOS 会从 硬盘, CD-ROM, USB 随身碟等搜寻 boot loader, 当 BIOS 从开机启动装置顺序找到 boot loader 后, 会将控制权交给 MBR.

2. MBR

MBR 全写是 Master Boot Record, 储存在启动装置的第一个磁区, 里面包含了 GRUB (以前旧系统用 LILO) 的资讯, MBR 会载及入执行 GRUB boot loader.

3. GRUB

GRUB 全写是 Grand Unified Bootloader, 进入 GRUB 后, 会出现 splash screen, 如果没有按任何按钮, 几秒后 GRUB 会自动加载默认的 kernel, 如果有安装多个 kernel, 可以在这时选择想要启动的 kernel, 在 Redhat 7 及 CentOS 7 下, GRUB 的设定档在 /boot/grub2/grub.cfg

4. Kernel

Kernel 会立即加载硬件的设定以及加载所有需要的驱动程式, 然后会执行 /sbin/init, 这是第一个透过 Kernel 执行的程式, 接着 Kernel 根据 initrd 映像档加载核心模组, 完成后会 unmount initrd 映像档, 最后 Kernel 会根据 grub.cfg 的设定以 read-only root 分割区 (/),

5. Init

init 从档案 /etc/inittab 的 “initdefault” 参数读取默认 run level, 以下是 Linux 的 6 个 run level:

0 – halt (关机)
1 – Single user mode
2 – Multiuser, without NFS (The same as 3, if you do not have networking)
3 – Full multiuser mode
4 – unused
5 – X11
6 – reboot (重新开机)

一般上除了除错, 图形接口会用 run level 5, 而多数主机使用的 CLI, run level 会使用 3.

下一步是重新挂载 root 分割区 (/) 成 read-write 模式 (之前是以 read-only 挂载), 及根据 /etc/fstab 的内容挂载分割区.

6. Runlevel Scripts

根据不同的 runlevel, 系统会在不同的目录读取初始化 scripts 启动, 储存它们的目录 run level 区分, 分别是:

0 -> /etc/rc.d/rc0.d
1 -> /etc/rc.d/rc1.d
2 -> /etc/rc.d/rc2.d
3 -> /etc/rc.d/rc3.d
4 -> /etc/rc.d/rc4.d
5 -> /etc/rc.d/rc5.d
6 -> /etc/rc.d/rc6.d

一般上储存在上面目录的 scripts 只是 symlink, 连结到 /etc/rc.d/init.d 里面真实的 scripts 档案.

完成启动 runlevel scripts 后, Linux 便启动完成了.

Leave a Reply