操作系统的启动过程是什么?

  • Post category:Linux

来讲一讲操作系统的启动过程吧。操作系统启动过程可以分为四个阶段:BIOS阶段、引导加载程序阶段、内核加载阶段和初始化阶段。

1. BIOS阶段

在开机后,计算机首先会执行 BIOS(Basic Input/Output System,即基本输入输出系统),BIOS是计算机系统最基本的固化在主板、芯片组或 ROM 芯片上的一组程序,它最主要的作用是检查各部件是否正常、测试RAM是否可用以及查找启动设备。

BIOS程序的运行由内嵌在主板的固件芯片激活,首先会进行电源自检,在测试完毕后会按照固定的顺序(一般为硬盘、软盘、CD-ROM、USB等)查找操作系统启动盘。如果BIOS成功找到启动设备,则会读取启动设备上的引导扇区代码,把控制权转交给引导扇区代码。

BIOS是计算机启动过程中第一个运行的程序,并且很早就被写入硬件中。因此很难找到示例代码。

2. 引导加载程序阶段

引导加载程序(Boot Loader)是一段小的程序,通常被存储在硬盘第一个扇区的主引导记录(Master Boot Record,MBR)中。它的主要功能是加载操作系统的核心代码到内存中,将控制权传递给操作系统内核。引导加载程序通常在操作系统启动前被加载到内存中,因此它必须十分小而高效。

常见的引导加载程序有 GRUB 和 LILO ,这里我们以 LILO 为例。

示例

# 查看当前系统中是否安装了 LILO
$ which lilo

3. 内核加载阶段

内核加载是操作系统启动过程中最关键的一步,它需要将内核和必要的驱动程序加载到内存中,完成系统内核的初始化。内核加载通常由引导加载程序完成,内核被加载后即刻运行。

示例

# 查看当前系统中是否加载了特定内核
$ cat /proc/cmdline

4. 初始化阶段

当内核加载完成后,操作系统开始进行初始化阶段,初始化过程包括配置内核模块、启动系统服务、检查与挂载文件系统、运行用户级别程序等。操作系统的初始化过程在不同的操作系统中有所不同。

初始化过程通常是自启动脚本来完成,常见的自启动脚本有 Systemd 和 Upstart 等。

示例

# 查看当前系统的启动日志
$ sudo journalctl -xb

以上就是操作系统的启动过程,从 Bios、引导加载程序阶段、内核加载阶段到最后的初始化阶段,每个阶段的内容都有各自独特的功能和步骤,也都有各自的示例代码。