第3章:Linux系统启动流程与GRUB故障排查
系统启动与GRUB修复是Linux运维面试中的高频考点,面试官通过该问题评估你对操作系统底层机制的理解深度、故障排查逻辑以及动手修复能力。本章梳理启动流程回答框架、典型故障场景及避坑要点。
面试问答卡片
面试问题:请详细描述Linux系统从开机到用户登录的完整启动流程。
面试官考察点:是否理解底层硬件→引导→内核→systemd的完整链条;能否区分传统SysV和systemd差异;是否有实际故障排查经验。
回答框架:按阶段叙述:①BIOS/UEFI自检并选择启动设备;②MBR/加载GRUB2;③GRUB2加载内核与initrd;④内核解压、初始化、加载硬件驱动,挂载根文件系统;⑤执行init进程(systemd),启动default.target。
简短示例回答:“系统通电后BIOS自检,按启动顺序加载MBR中GRUB2。GRUB2读取/boot/grub/grub.cfg,载入内核与initrd。内核初始化后挂载根分区,执行/systemd/sbin/init(PID1),根据systemd目标启动服务,最终呈现登录提示。” (约95字)
可能追问:如果挂载根分区失败怎么办?initrd的作用是什么?如何修改默认运行级别?
面试问题:Linux系统启动时出现“grub rescue>”提示符,如何修复?
面试官考察点:现场故障排除能力、GRUB结构理解、常用命令(ls, set, insmod, linux, initrd, boot)掌握程度。
回答框架:①先通过ls列出分区,找到包含/boot的分区(如hd0,msdos1);②用set prefix=(hd0,msdos1)/boot/grub设置前缀;③加载正常模块insmod normal,然后normal进入菜单;④若仍失败,手动引导:linux /vmlinuz-xxx root=/dev/sda1+initrd /initrd.img-xxx+boot;⑤进入系统后重新安装GRUB。
简短示例回答:“进入grub rescue后,先用ls查找Linux分区,例如(hd0,msdos1)。执行set prefix=(hd0,msdos1)/boot/grub,再insmod normal;normal进入菜单。若不行,手动指定vmlinuz和initrd路径并boot。进入系统后运行grub2-install重新安装。” (约95字)
可能追问:根分区是LVM或RAID时如何操作?如何通过Live CD修复?GRUB配置文件损坏怎么办?
面试问题:描述systemd的启动目标(target)与SysV运行级别(runlevel)的对应关系,以及如何修改默认启动目标。
面试官考察点:是否掌握现代Linux服务管理方式;理解systemd的单元依赖关系;能否用命令操作。
回答框架:①对应关系:runlevel3→multi-user.target,runlevel5→graphical.target;②查看当前默认:systemctl get-default;③修改:systemctl set-default multi-user.target;④临时切换到目标:systemctl isolate multi-user.target。
简短示例回答:“SysV的runlevel3对应systemd的multi-user.target,runlevel5对应graphical.target。查看默认目标用systemctl get-default,修改为字符界面用systemctl set-default multi-user.target。临时切换用systemctl isolate target名称。systemd还支持并行启动、socket激活等优势。” (约100字)
可能追问:如何自定义一个target?如何通过内核参数指定启动目标(systemd.unit=)?如何调试启动慢的服务?
知识结构表格:启动阶段与关键日志位置
| 阶段 | 关键组件 | 日志/诊断命令 | 常见故障 |
|---|---|---|---|
| BIOS/UEFI | 主板固件 | 屏幕自检信息、memtest | 开机无响应、引导顺序错误 |
| GRUB2 | /boot/grub/grub.cfg | grub rescue模式、按e编辑启动项 | missing grub.cfg、分区UUID变更 |
| 内核初始化 | vmlinuz + initrd | dmesg、/var/log/messages | 驱动缺失、根文件系统无法挂载 |
| systemd | default.target | journalctl -u *.service、systemctl list-units | 服务启动失败、依赖循环 |