资讯详情

资讯详情

OE_HP910安装双系统零---计算机启动的整个过程阶段

OEOperation and EngineeringUEFIUnified Extensible Firmware InterfaceNVRAMNon-Volatile Random Access Memory整机上电 → BIOS → 引导 → Windows / Ubuntu (GRUB) 完整启动流程以 HP Victus 16-d1、UEFIGPT 双系统场景为例先明确机器是UEFI 启动不是老式 Legacy BIOS我们平时口语说的 “BIOS”在现代电脑正式名字是UEFI 固件传统 BIOS 已经淘汰下面会区分清楚术语。硬件NVMe 固态硬盘GPT含 ESP 分区、2TB MBR 数据盘双系统Windows Ubuntu GRUB整体链路总览按时间顺序按下电源 → 主板上电复位 → UEFI 固件俗称 BIOS初始化 / POST 自检 → UEFI 读取主板 NVRAM 启动项列表 → 按优先级尝试加载 ESP 分区内的 EFI 程序 → 你的场景优先 GRUBGRUB 提供选择菜单 → 根据选择加载对应系统内核 → 内核启动、挂载分区、启动系统服务直到登录界面阶段 1上电 主板复位硬件底层微秒级按下电源键电源模组输出稳定 3.3V/5V/12V 供电给主板、CPU、内存、SSD。CPU 收到电源就绪信号自动跳转到主板固件的ROM/Flash 地址主板 SPI Flash 芯片里面存着 UEFI 固件也就是你 F10 进去设置的那个 BIOS。CPU 一开始只有最基础的微码没有内存、硬盘驱动固件先执行SEC 安全阶段初始化 CPU、缓存建立临时内存栈。✅ 这里还没有任何操作系统、没有硬盘读取。阶段 2UEFI POST 自检Power-On Self Test开机自检就是开机黑屏 / HP Logo 那一段UEFI 分为 4 个内部阶段SEC → PEI → DXE → BDSPEI预 EFI 初始化初始化内存控制器、识别内存条把内存激活如果内存报错、内存接触不良这里直接报蜂鸣 / 屏幕报错流程终止。DXE驱动执行环境核心阶段UEFI 加载内置驱动NVMe 驱动、SATA 驱动、USB 驱动、显卡初始化、键盘、网卡。✅ 到这一步固件才可以识别到你的两块固态硬盘512G NVMe、2TB NVMe✅ UEFI 原生支持读取 GPT、MBR 分区表原生支持 FAT32ESP 分区只能是 FAT32UEFI 固件不认识 NTFS、ext4这是核心关键点重点UEFI 固件本身看不懂 Windows 的 NTFS也看不懂 Ubuntu 的 ext4它只能读取 FAT32 分区里面的 efi 程序BDS启动设备选择阶段最关键UEFI 去读取主板 NVRAM主板自带一小块非易失存储独立于硬盘里面存了你在 F10 BIOS 里设置的启动顺序列表你的 NVRAM 里面会存两条核心启动项装好双系统之后Ubuntu指向 ESP 分区/EFI/ubuntu/shimx64.efiGRUB 的入口Windows Boot Manager指向 ESP 分区/EFI/Microsoft/Boot/bootmgfw.efiWindows 引导入口 NVRAM 只是记录路径引导程序文件本身全部放在硬盘上那个 100MB FAT32 的 ESP 分区里 这就是为什么之前说GRUB 只是在 ESP 新建/EFI/ubuntu文件夹不会碰微软目录。BDS 行为按顺序尝试启动项如果第一项是 Ubuntu固件读取 ESP 里的shimx64.efi→ 加载 GRUB 主程序grubx64.efi如果第一项是 Windows固件读取 ESP 里微软的bootmgfw.efi直接进 Windows 引导你开机 F9 调出的启动菜单就是直接读取 NVRAM 里这张启动项表。阶段 3分支 A — 加载 GRUBUbuntu 引导程序你双系统的中转菜单GRUB 本身就是一个EFI 应用程序运行在 UEFI 环境里不是内核它的作用给你菜单选择然后去加载对应系统内核UEFI 把grubx64.efi加载到内存交出执行权 → GRUB 启动GRUB 自带文件系统驱动这是 GRUB 和 UEFI 固件最大区别UEFI 固件只认 FAT32GRUB 内置驱动可以识别 GPT/MBR、NTFS、ext4所以 GRUB 可以扫描你的整块 512G 硬盘自动找到Ubuntu 的 ext4 根分区读取/boot/grub/grub.cfg菜单配置文件这个 cfg 不在 ESP在 Ubuntu 的 ext4 分区里扫描 ESP 里面 Windows 引导自动把Windows Boot Manager加入菜单就是update-grub命令干的事情扫描系统、生成 grub.cfg屏幕出现大家熟悉的 GRUB 菜单Ubuntu Advanced options for Ubuntu Windows Boot Manager分支 A-1你选择 UbuntuGRUB 读取你 F 盘划分出来的 ext4 分区找到 Linux 内核vmlinuz 内存盘initrd.imgGRUB 把内核、initrd 加载到内存把 CPU 执行权交给 Linux 内核 从此UEFI/GRUB 退出舞台由 Linux 内核接管整个硬件Linux 内核启动流程Ubuntu 这边内核初始化识别 CPU、内存、加载硬件驱动NVMe、显卡、网卡挂载根文件系统 /就是你 142G 的 ext4 分区启动第一个用户空间进程systemdUbuntu 用 systemdsystemd 并行拉起所有系统服务网络、udev 设备管理、显卡、gnome 桌面、ssh、ros 相关 service 等服务全部就绪启动显示管理器 GDM弹出登录界面输入密码进入桌面。swap 交换分区不会在这个阶段挂载是 systemd 后续按配置挂载。分支 A-2你在 GRUB 菜单选择 Windows Boot ManagerGRUB 的工作非常简单调用 ESP 分区里微软的 bootmgfw.efi把执行权转交回 Windows 原生引导程序 GRUB 不再插手 Windows 后续流程完全交给微软自己的引导链。阶段 3分支 B — 直接加载 Windows 引导bootmgfw.efi不经过 GRUB如果 BIOS NVRAM 优先级 Windows 在第一位或者你 F9 直接选 WindowsUEFI 固件读取 ESP 里/EFI/Microsoft/Boot/bootmgfw.efiWindows 引导管理器bootmgfw 读取同 ESP 里的 BCD启动配置数据库BCD文件Windows 的启动菜单配置bootmgfw 找到 C 盘NTFS 系统分区里的 Windows 内核ntoskrnl.exe注意bootmgfw.efi 自带 NTFS 驱动所以它可以读取 C 盘 NTFS 分区加载 Windows 内核 ntoskrnl.exe转交执行权给 Windows 内核Windows 内核启动流程Windows 内核初始化硬件、加载驱动栈NVMe、显卡等内核挂载 C 盘启动会话管理器smss.exe启动 winlogon、lsass、服务控制管理器 SCM拉起所有 Windows 服务最后启动 explorer 桌面到达 Windows 登录界面 几个高频误区结合你前面的提问重点解释误区 1BIOS 直接读取 Windows 或者 Ubuntu 系统文件❌ 错UEFI 固件只认识 FAT32只能读 ESP 里小小的 efi 引导程序NTFS、ext4 它完全看不懂。系统内核ntoskrnl /vmlinuz是由引导程序bootmgfw /grub去读取的。误区 2GRUB 修改、覆盖 Windows 的引导文件❌ 错GRUB 只在 ESP 新建/EFI/ubuntu文件夹微软引导文件在/EFI/Microsoft互相独立互不修改。Windows 更新不会删除 ubuntu 文件夹只会修改 NVRAM 里面的启动顺序把自己放到第一位所以直接进 Windows。误区 3grub.cfg 在 ESP 分区❌ 错ESP 只有 efi 小程序。grub.cfg 菜单配置文件存放在 Ubuntu 的 ext4 根分区/boot/grub/这也是为什么如果你把 Ubuntu 分区删掉GRUB 菜单直接失效主板找不到 grub.cfg。误区 42TB 那块 MBR 数据盘会干扰引导✅ 不会。引导链路全程只使用 512G 盘上的 ESP 分区2TB 的 E/G 盘只有内核启动之后才会被识别挂载引导阶段完全不参与。误区 5 那么按照这个启动顺序这里面要想执行可选择启动系统的关键就是在切换系统引导时grup 的引导的优先级要比 Windows 的引导等级更高你的理解方向大体是对的但是表述上需要做一处关键修正不是 “GRUB 本身程序优先级更高”而是主板 NVRAM 里面的 EFI 启动项排序优先级决定了 UEFI 先去找谁。1. 核心一句话主板 UEFI 上电之后只会按NVRAM 里保存的启动条目列表从上往下依次尝试如果排在第 1 位的条目是Ubuntu指向/EFI/ubuntu/shimx64.efi→ UEFI 优先加载这个 efi → 跑 GRUB → 出现选择菜单你可以选 Ubuntu 或者 Windows如果排在第 1 位的条目是Windows Boot Manager→ UEFI 直接加载微软的bootmgfw.efi直接进入 WindowsGRUB 根本不会被运行自然没有选择菜单 GRUB 只是一个 EFI 应用程序它自己没有能力强制 “优先级盖过 Windows”控制权在主板 NVRAM 的启动顺序表里。2. 区分两个层级的 “选择菜单”非常容易混淆层级一主板 F9 调出的【UEFI 固件启动菜单】主板级NVRAM 条目条目示例UbuntuWindows Boot ManagerUSB HDD这个是主板固件提供的。只要你在这里手动选 Ubuntu就一定会进 GRUB 菜单。层级二GRUB 内部的菜单GRUB 程序内部Ubuntu Advanced options Windows Boot Manager这个菜单只有成功启动 GRUB 之后才会出现。GRUB 菜单里的 Windows 选项本质功能就是让 GRUB 去调用微软那个bootmgfw.efi把接力棒交给 Windows 原生引导链。✅ 重点GRUB 菜单里的 Windows ≠ 主板 NVRAM 里的 Windows 启动项二者是两套东西。3. 你遇到的经典现象Windows 更新把 GRUB 顶没了原理Windows 大版本更新 / 功能升级的时候Windows 引导程序会自动修改主板 NVRAM把 Windows Boot Manager 挪到启动列表第一位。不是它删掉了 Ubuntu 引导文件/EFI/ubuntu文件夹还完好在 ESP 里只是排序变了UEFI 优先跑 Windows 引导跳过 GRUB。修复逻辑对应前面给你的方案开机 F9 手动选 Ubuntu 条目 → 进 Ubuntu 系统 →sudo update-grub sudo grub-install /dev/nvme0n1grub-install这个命令会重新在 NVRAM 里把 Ubuntu 启动项添加并放到靠前位置再次夺回优先启动权。4. 两种实现 “开机自动出现选择菜单” 的思路方案 A你现在要用的推荐NVRAM 顺序Ubuntu(GRUB)放在第一位 → UEFI 先跑 GRUB → GRUB 菜单二选一。方案 B不推荐很多人搞错NVRAM 第一位放 Windows想要选择菜单是做不到的。只能每次开机手动 F9再选 Ubuntu。5. 补充一个边界情况Secure Boot如果 Secure Boot 打开Ubuntu 这边依靠shimx64.efi微软签名的小程序作为桥梁再加载 grubx64.efi这只是签名校验不改变上面这套启动优先级逻辑。极简总结✅ 想要开机自动弹出 GRUB 双系统选择菜单的充要条件主板 NVRAM 启动顺序里Ubuntu 启动条目排在 Windows Boot Manager 前面。GRUB 只是被优先加载后提供二次选择的中间程序GRUB 本身没有能力抢占 UEFI 的启动优先级。 极简流程图方便记忆按下电源 ↓ 主板SPI-FLash里的 UEFI(BIOS) → POST自检、初始化硬件 ↓ UEFI读取主板NVRAM启动项列表 ├─优先Ubuntu → UEFI加载ESP:/EFI/ubuntu/shimgrubx64.efi → GRUB菜单 │ ├─选UbuntuGRUB读取ext4分区加载Linux内核 → systemd → Ubuntu桌面 │ └─选WindowsGRUB调用 bootmgfw.efi转交Windows引导链 └─优先Windows → UEFI加载ESP:/EFI/Microsoft/Boot/bootmgfw.efi → 加载ntoskrnl → Windows内核 → Windows桌面补充对比老式 Legacy BIOS你这台不用方便区分老 Legacy 模式BIOS 直接读磁盘第一个扇区 MBR446 字节引导代码没有独立 ESP 分区Legacy 不支持 GPT 大容量盘也是为什么现在新笔记本全部 UEFI。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →