Linux 系统开机加电后发生了什么?
原创Linux 系统开机加电后出现了什么?
当Linux系统开机加电后,一系列纷乱的过程会在后台自动执行,以确保系统能够从无状态到完全运行的状态。以下是Linux系统开机加电后或许出现的一系列步骤:
### 1. 加电自检(POST)
首先,当电源接通时,计算机硬件会进行加电自检(Power-On Self-Test,POST)。这个过程由主板上的固件(通常是BIOS或UEFI)控制。POST的首要目的是检查硬件是否正常工作,包括CPU、内存、硬盘、显卡等。
### 2. 加载固件
POST完成后,固件会尝试从启动设备(如硬盘、固态硬盘、USB设备等)加载启动加载程序。在Linux系统中,这个启动加载程序通常是GRUB(GRand Unified Bootloader)。
### 3. 启动加载程序(GRUB)
GRUB是启动加载程序,它负责从多个启动设备中选择一个来启动操作系统。GRUB会显示一个菜单,用户可以从中选择启动项。
bash
# GRUB配置文件示例(/etc/grub.d/10_linux)
set default=0
set timeout=5
menuentry "Linux" {
linux /vmlinuz root=/dev/sda1 ro
initrd /initrd.img
}
### 4. 加载内核
用户选择了启动项后,GRUB会加载Linux内核(vmlinuz)和初始化RAM磁盘(initrd)。
### 5. 内核初始化
内核被加载到内存中后,它会初始化硬件设备,并设置必要的系统参数。这个过程包括:
- 设置CPU频率和性能状态
- 初始化内存管理
- 加载必要的内核模块
- 初始化设备驱动程序
### 6. 初始化系统
内核初始化完成后,它会调用初始化系统(init)程序。在传统的SysV启动过程中,init进程的PID是1,它负责启动所有其他系统进程。
bash
# init进程的启动脚本(/etc/init.d/rcS)
#!/bin/sh
# 初始化系统变量
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
# 启动所有必要的系统服务
exec /sbin/service start all
### 7. 系统服务启动
init进程会启动各种系统服务,这些服务负责执行各种任务,如网络管理、文件系统检查、守护进程等。
bash
# 系统服务示例(/etc/init.d/networking)
#!/bin/sh
# 启动网络服务
service networking start
### 8. 用户登录
在大多数系统中,init进程会启动getty进程,它负责监听终端设备并等待用户登录。
### 9. 用户交互
用户登录后,系统会提供命令行界面或图形用户界面(GUI)。用户可以执行各种命令,启动应用程序,进行文件操作等。
### 10. 系统运行
一旦系统启动完成,它就会继续运行,直到用户或系统管理员决定关闭它。
### 总结
Linux系统开机加电后,经历了一个从硬件自检到系统启动,再到用户交互的纷乱过程。这个过程涉及到固件、启动加载程序、内核、系统服务等多个组件的协同工作。了解这些过程有助于更好地管理和维护Linux系统。