Linux启动流程怎么分析_从BIOS到系统就绪详解【指导】

发布时间 - 2026-01-02 00:00:00    点击率:
Linux启动可分六个关键控制点定位故障:先查UEFI/BIOS模式(ls /sys/firmware/efi/efivars),再依次排查GRUB加载、内核启动、initramfs、根文件系统挂载及systemd服务失败原因。

Linux 启动不是黑盒——只要分清六个关键控制点,你就能在系统卡死、进不了登录界面、甚至 kernel panic 时,快速定位是固件问题、引导损坏、内核加载失败,还是用户空间服务没起来。


怎么看当前系统走的是 BIOS 还是 UEFI?

这是所有分析的起点。错判模式会导致后续排查方向全偏:
BIOS 对应 MBR + grub 阶段1加载;UEFI 对应 ESP 分区 + grubx64.efi 直接执行。

  • 运行 ls /sys/firmware/efi/efivars:能列出大量变量 → 确认为 UEFI 模式
  • 运行 efibootmgr -v:有输出且含 ubuntucentos 等启动项 → UEFI
  • 若报错 No such file or directory,且 fdisk -l 显示磁盘用 dos 标签 → 极大概率是 BIOS+MBR

⚠️ 容易踩的坑:有些新主板默认启用 UEFI,但安装系统时误选了 Legacy BIOS 模式(或反之),导致 /boot/efi 分区缺失、grub.cfg 不被读取、甚至 GRUB 提示 error: unknown filesystem


GRUB 菜单不出现 / 卡在 black screen 怎么查?

这不是“没反应”,而是 GRUB 阶段2没成功加载配置或找不到内核镜像。常见于升级内核后未更新 GRUB 配置、/boot 分区满、或 initramfs 损坏。

  • 开机时狂按 Shift(BIOS)或 Esc(UEFI)强行呼出 GRUB 菜单;失败则说明阶段1.5或阶段2根本没跑起来
  • 进 Live 系统挂载原系统后检查:ls /boot/vmlinuz-*ls /boot/initramfs-*.img 是否成对存在
  • 重建 GRUB 配置: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/ 下脚本完成。


内核加载后黑屏 / 卡在 “Starting kernel...” 怎么办?

说明 GRUB 成功把 vmlinuzinitramfs 加载进内存,但内核无法挂载根文件系统——90% 是驱动缺失或设备路径错误。

  • 开机时在 GRUB 菜单选中条目,按 e 编辑启动参数,在 linux 行末尾加 rd.debug systemd.log_level=debug,再按 Ctrl+X 启动,看卡在哪一步
  • 常见原因:root= 参数指向错误设备(如 /dev/sda2 变成 /dev/nvme0n1p2),或 LVM/RAID/LUKS 设备没在 initramfs 中包含对应模块
  • 检查 initramfs 内容:lsinitrd /boot/initramfs-$(uname -r).img | grep -E "(lvm|raid|crypt|nvme)"
  • 重生成 initramfs:dracut -f(RHEL/CentOS)或 update-initramfs -u(Debian/Ubuntu)

⚠️ 关键细节:UEFI 下若根分区是 Btrfs 或 XFS,某些旧内核 initramfs 默认不带对应驱动,必须显式启用。


systemd 启动卡在某个 service(如 NetworkManager、dbus)怎么诊断?

此时内核已就绪、根文件系统已挂载、/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 中延长。


# linux  # centos  # 主板  # ubuntu  # usb  # ai  # ios  # bios  # nas  # Directory  # Error  # Filesystem  # default  # debian  # 加载  # 卡在  # 文件系统  # 的是  # 开机时  # 这是  # 你就  # 找不到  # 能在  # 这不是 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何打造高效商业网站?建站目的决定转化率  如何用wdcp快速搭建高效网站?  Laravel如何自定义分页视图?(Pagination示例)  高防服务器租用首荐平台,企业级优惠套餐快速部署  Laravel怎么调用外部API_Laravel Http Client客户端使用  三星、SK海力士获美批准:可向中国出口芯片制造设备  html5的keygen标签为什么废弃_替代方案说明【解答】  微信小程序 scroll-view组件实现列表页实例代码  JavaScript模板引擎Template.js使用详解  如何在搬瓦工VPS快速搭建网站?  如何实现javascript表单验证_正则表达式有哪些实用技巧  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  如何用y主机助手快速搭建网站?  如何用花生壳三步快速搭建专属网站?  javascript如何操作浏览器历史记录_怎样实现无刷新导航  Android okhttputils现在进度显示实例代码  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  如何快速查询网站的真实建站时间?  制作企业网站建设方案,怎样建设一个公司网站?  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  如何快速查询域名建站关键信息?  如何快速生成专业多端适配建站电话?  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  个人网站制作流程图片大全,个人网站如何注销?  Thinkphp 中 distinct 的用法解析  深圳网站制作平台,深圳市做网站好的公司有哪些?  网站建设保证美观性,需要考虑的几点问题!  如何快速搭建虚拟主机网站?新手必看指南  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  Laravel如何构建RESTful API_Laravel标准化API接口开发指南  Laravel如何创建自定义Facades?(详细步骤)  如何快速上传自定义模板至建站之星?  如何在Windows服务器上快速搭建网站?  动图在线制作网站有哪些,滑动动图图集怎么做?  高端建站如何打造兼具美学与转化的品牌官网?  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  Laravel怎么使用Intervention Image库处理图片上传和缩放  Laravel如何使用查询构建器?(Query Builder高级用法)  Laravel如何使用Eloquent进行子查询  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  如何快速使用云服务器搭建个人网站?  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  如何用PHP工具快速搭建高效网站?  iOS发送验证码倒计时应用  如何在云虚拟主机上快速搭建个人网站?  黑客如何通过漏洞一步步攻陷网站服务器?