操作系统 是如何启动的,这可能一直困扰着我们。本文将详细讲解 Linux 系统的启动过程,这将有助于大家加深入了解操作系统。

Linux 系统启动分为如下三个阶段:

  •  BIOS 阶段
  •  Boot Loader 阶段
  •  Kernel 阶段

 

图.1 Linux 系统启动流程图

1] BIOS 阶段

  • 当主机通电后,首先会调用 BIOS 程序以验证主机所有硬件是否工作正常
  • 硬件验证功能是通过执行开机自检(POST)来完成的
  • 硬件测试通过后,BIOS 会检查硬件中的主引导记录(MBR),以检查是否指明了启动加载程序(Boot Loader)的位置

 

图.2 Linux 系统启动流程 BIOS阶段

2] Boot Loader 阶段

如果系统安装了操作系统,则会安装相应的 Boot Loader 程序。

两种常见的 Boot Loader 程序为:

  • LILO(Linux Loader)
  • GRUB(Grand Unified Boot Loader)

 

  • Boot Loader 将向用户显示一个菜单条目,每个条目对应不同的操作系统
  • 然后,Boot Loader 根据菜单项内容引导操作系统启动
  • 如果选择启动 Linux 系统,则 Boot Loader 会将 Kernel 程序解压到内存中
  • 之后,Kernel 程序会显示创建 initrd(初始 Ramdisk)
  • Kernel 将 initrd 用作内存中的临时文件系统
  • initrd 包含一些工具和内核模块,它们将继续操作引导过程,这包括挂载临时虚拟根文件系统
  • 一些 Linux 系统使用 initramfs 来代替 initrd,它与initrd的功能相同
  • 成功之后,将运行 linuxrc,它是一个可执行文件,用于探测大容量存储硬件并找到合适的内核模块来驱动它们
  • 这个过程是 Kernel 挂载真正的根文件系统所必须的

 

图.3 Linux 系统启动流程 Boot Loader 阶段

3] Kernel 阶段

  • 在 Kernel 阶段,Kernel根据 linuxrc 的结果来挂载真正的文件系统
  • 实际根文件系统指的是”/”,Linux 系统的所有其它文件系统均存在于根系统之下
  • 之后,Kernel 程序将启动 init 进程,并将此进程标识符(PID)设置为1,因为它是内核启动的第一个后台守护进程,所有其它后台守护进程都是由 init 进程生成的
  • 之后,init 进程根据不同运行级别,配置和加载其它系统守护进程,
  • 全部后台进程都启动完成后,Linux 系统也就启动成功了

 

图.4 Linux 系统启动流程 Kernel 阶段

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注