概要
Linux运维经典面试题:
请简述Linux启动过程
最近刷面试题发现,网上很多关于Linux启动流程
的面试题标准答案,都是基于10年前的CentOS 6 版本的。但随着Systemd
普及后,现在的系统启动流程有比较大的变化。所以我尝试重新写一份答案,兼顾了新旧两种版本的Linux发行版本的启动流程。
Linux启动流程答案
1. 主板固件
加载硬盘
- 传统服务器用
BIOS(基本输入输出系统)
自检 - 新服务器也可能用
UEFI(统一可扩展固件接口)
自检
2. 读取引导文件
- 传统的引导文件是
MBR(Master Boot Record)
- 大于2T的硬盘只能用
GPT(GUID Pattition Table)
引导(主板固件必须是UEFI)
3. GRUB 引导菜单(Boot Loader)
4. 加载内核kernel
5. Kernerl 执行 init
- 传统版本:init 启动调用 System V init
- Systemd 版本: init 启动
systemd
, 并将PID设置为1
6. 设定运行级别
- 传统版本: 根据
inittab
文件 - Systemd版本: 根据
/lib/systemd/system/default.target
7. 根据(/etc/fstab)加载文件系统
- 传统版本:init进程执行挂载任务
- Systemd版本: init进程执行挂载任务。具体:systemd 会先启动服务,如 local-fs.target, swap.target 和 cryptsetup.target,用于挂载文件系统
8. 启动服务
- 传统版本:init调用
/etc/init.d/rcS
, 按顺序启动服务,同时间只能启动一个服务 - Systemd版本:根据服务配置文件的After和Before参数决定启动顺序,可以并发启动服务(service)
9. 执行自定义开机任务
- 传统版本:运行
/etc/rc.local
( 红帽系是/etc/rc.d/rc.local
) - Systemd版本: 调用
rc-local.service
, 如果/etc/rc.local
( 红帽系是/etc/rc.d/rc.local
)文件属性是可执行,则执行它。
10. 进入系统登录界面
- 传统版本:
/etc/init.d/xdm
运行图形界面或者登录提示符,以便用户登录和使用系统 - Systemd版本: systemd (systemd-logind.service)会运行图形界面或者登录提示符,以便用户登录和使用系统
参考资料
UEFI是什么?与BIOS的区别在哪里?
MBR VS GPT
The Difference Between System V and SystemD
CentOS8启动流程