您好,欢迎访问宜昌市隼壹珍商贸有限公司
400 890 5375Linux启动可分六个关键控制点定位故障:先查UEFI/BIOS模式(ls /sys/firmware/efi/efivars),再依次排查GRUB加载、内核启动、initramfs、根文件系统挂载及systemd服务失败原因。
Linux 启动不是黑盒——只要分清六个关键控制点,你就能在系统卡死、进不了登录界面、甚至 kernel panic 时,快速定位是固件问题、引导损坏、内核加载失败,还是用户空间服务没起来。
这是所有分析的起点。错判模式会导致后续排查方向全偏:
BIOS 对应 MBR + grub 阶段1加载;UEFI 对应 ESP 分区 + grubx64.efi 直接执行。
ls /sys/firmware/efi/efivars:能列出大量变量 → 确认为 UEFI 模式efibootmgr -v:有输出且含 ubuntu、centos 等启动项 → UEFINo such file or directory,且 fdisk -l 显示磁盘用 dos 标签 → 极大概率是 BIOS+MBR⚠️ 容易踩的坑:有些新主板默认启用 UEFI,但安装系统时误选了 Legacy BIOS 模式(或反之),导致 /boot/efi 分区缺失、grub.cfg 不被读取、甚至 GRUB 提示 error: unknown filesystem。
这不是“没反应”,而是 GRUB 阶段2没成功加载配置或找不到内核镜像。常见于升级内核后未更新 GRUB 配置、/boot 分区满、或 initramfs 损坏。
Shift(BIOS)或 Esc(UEFI)强行呼出 GRUB 菜单;失败则说明阶段1.5或阶段2根本没跑起来ls /boot/vmlinuz-* 和 ls /boot/initramfs-*.img 是否成对存在grub2-mkconfig -o /boot/grub2/grub.cfg(RHEL/CentOS)或 update-grub(Debian/Ubuntu)/boot 或 /boot/efi 分区未满:df -h /boot*
? 注意:grub.cfg 是生成文件,**不要手动编辑它**;修改应通过 /etc/default/grub 和 /etc/grub.d/ 下脚本完成。
说明 GRUB 成功把 vmlinuz 和 initramfs 加载进内存,但内核无法挂载根文件系统——90% 是驱动缺失或设备路径错误。
e 编辑启动参数,在 linux 行末尾加 rd.debug systemd.log_level=debug,再按 Ctrl+X 启动,看卡在哪一步root= 参数指向错
误设备(如 /dev/sda2 变成 /dev/nvme0n1p2),或 LVM/RAID/LUKS 设备没在 initramfs 中包含对应模块lsinitrd /boot/initramfs-$(uname -r).img | grep -E "(lvm|raid|crypt|nvme)"
dracut -f(RHEL/CentOS)或 update-initramfs -u(Debian/Ubuntu)⚠️ 关键细节:UEFI 下若根分区是 Btrfs 或 XFS,某些旧内核 initramfs 默认不带对应驱动,必须显式启用。
此时内核已就绪、根文件系统已挂载、/sbin/init 已是 systemd(PID 1),但某个 unit 启动超时或失败,阻塞整个初始化链。
systemctl --failed 查看失败单元journalctl -b -p err(本次启动的错误)或 journalctl -b -u NetworkManager
systemd.unit=multi-user.target(绕过图形 target)或 systemd.mask=NetworkManager.service(禁用该服务)systemctl list-dependencies --reverse .service 看谁在等它? 最容易被忽略的一点:systemd 的 timeout 默认只有 90 秒,而某些存储设备(如 USB-NAS、iSCSI)初始化慢,会直接被 kill。可通过 DefaultTimeoutStartSec=300s 在 /etc/systemd/system.conf 中延长。