Linux 系统启动过程
-
BIOS 自检:在计算机开机时,BIOS 会进行自检,检查硬件设备是否正常。
-
加载引导程序:BIOS 自检完成后,会加载引导程序,如 GRUB、LILO 等。引导程序会加载内核和初始化 RAM 磁盘(initrd)。
-
加载内核:引导程序加载内核后,内核会进行初始化,包括初始化硬件设备、加载驱动程序、挂载文件系统等。
-
运行 init 进程:内核初始化完成后,会运行 init 进程,init 进程是 Linux 系统中的第一个进程,其进程号为 1。init 进程会读取配置文件,如 /etc/inittab、/etc/init.d/ 等,并根据配置文件启动其他进程。
-
启动系统服务:init 进程会根据配置文件启动系统服务,如网络服务、打印服务、数据库服务等。
-
启动登录界面:系统服务启动完成后,init 进程会启动登录界面,如图形界面、字符界面等。
-
用户登录:用户输入用户名和密码后,系统会验证用户身份,如果验证通过,用户就可以登录系统,进行操作。
具体启动过程可能会因不同的 Linux 发行版和配置而有所不同。
Linux 系统关闭过程
-
用户发起关机请求:
- 通过命令行工具:用户通常会在终端中使用相应的命令来发起关机请求,例如:
sudo shutdown now
:立刻关机。sudo shutdown -h +5 "System will shut down in 5 minutes"
:将在5分钟后关机,并显示一条消息通知用户。sudo halt
或sudo poweroff
:这些命令也会导致系统关机,实际上是调用了shutdown的相关选项。
- 通过命令行工具:用户通常会在终端中使用相应的命令来发起关机请求,例如:
-
系统通知:
- 当shutdown命令被执行时,系统会广播一个关机消息给所有已登录的用户,告知他们系统即将关闭。
- 如果指定了延迟时间,系统会在这段时间内允许用户保存未保存的工作并注销。
-
终止用户进程:
- 系统开始终止非必需的用户进程和服务,首先是那些可以立即停止的进程,然后是那些需要一段时间清理工作的进程。
-
同步文件系统:
- 系统执行文件系统的同步操作 (
sync
),确保所有缓存中的数据都写入到磁盘上,保证数据完整性。
- 系统执行文件系统的同步操作 (
-
停止系统服务:
- 系统按照启动时相反的顺序关闭各种服务和守护进程,确保所有服务能够正常结束其工作。
-
断电处理:
- 当所有用户进程和服务都已经停止之后,内核会卸载文件系统并断开网络连接。
- 最终,硬件层面的电源管理命令被执行,切断对硬件的供电,使得系统完全关闭。
-
硬件关闭:
- 对于物理服务器或PC,系统最后会发送一个信号给电源管理单元(ACPI或APM),指示电源可以安全地关闭。