BIOS 到底在哪里?——服务器、PC、嵌入式 NVR 启动链条对比

引子

做服务器和嵌入式 NVR 多年,一直有个模糊的疑问:BIOS 到底在哪?换服务器系统盘要不要动 BIOS?嵌入式 NVR 的启动又是怎么回事?

直到把服务器、PC、嵌入式三者的启动链条拆开对比,才发现它们逻辑一致,只是物理位置和可修改性不同。

可以先查看《存储系列之 Linux ext2 概述》,有讲述linux文件系统的分区。

一、先分清两个层面

启动这件事,分两个层面:

层面 组件 职责
主板层 BIOS/UEFI、Boot ROM 硬件自检,从启动设备读取第一段代码
磁盘层 MBR、Boot Block、Super Block 接力加载内核,挂载文件系统

主板层负责“找磁盘”,磁盘层负责“加载系统”。

二、服务器/PC 的启动链条

第一环:BIOS/UEFI

  • 位置:主板上一颗独立的 SPI Flash 芯片
  • 可修改? 可刷写升级(刷 BIOS)
  • 职责:上电自检,根据启动顺序,读取启动设备的第一个扇区(MBR)到内存并执行

第二环:MBR

  • 位置:磁盘第一个扇区(LBA0,512B)
  • 内容:引导代码(446B)+ 分区表(64B)
  • 职责:确定活动分区,读取该分区的第一个块(Boot Block)并执行

第三环:Boot Block

  • 位置:分区起始位置
  • 职责:存放引导程序(如 GRUB),加载内核

第四环:Super Block

  • 位置:分区内,Boot Block 之后
  • 职责:记录文件系统整体信息(inode/block 总量等),内核挂载文件系统时读取

完整链条

CPU 上电 → BIOS/UEFI(主板 SPI Flash)→ MBR(磁盘 LBA0)
→ Boot Block(分区起始)→ 内核 → Super Block(文件系统)

三、嵌入式 NVR 的启动链条

第一环:Boot ROM

  • 位置:SoC 芯片内部,出厂固化
  • 可修改? 不可改
  • 职责:上电后从固定地址取指,根据启动模式引脚,从 SPI Flash 加载 SPL

第二环:SPL + U-Boot

  • 位置:SPI Flash 分区
  • 可修改? 升级时可写
  • 职责:初始化 DDR、时钟,加载内核

第三环:内核

  • 位置:SPI Flash 分区
  • 职责:挂载根文件系统

第四环:只读根文件系统

  • 位置:SPI Flash 的 rom/rodata 分区
  • 文件系统:SquashFS(只读)+ OverlayFS(可写)
  • 职责:提供运行环境

完整链条

CPU 上电 → Boot ROM(SoC 内部)→ SPL/U-Boot(SPI Flash)
→ 内核(SPI Flash)→ 根文件系统(SPI Flash)

四、三者的对应关系

启动环节 服务器/PC 嵌入式 NVR
第一环 BIOS/UEFI(主板 SPI Flash) Boot ROM(SoC 内部)
第二环 MBR(磁盘 LBA0) SPL/U-Boot(SPI Flash 分区)
第三环 Boot Block(分区起始) 内核(SPI Flash 分区)
第四环 Super Block(文件系统) 根文件系统(SPI Flash 分区)

逻辑一致,物理位置不同。

五、几个常见误解

误解一:系统盘坏了要刷 BIOS

系统盘(SSD/HDD)和 BIOS Flash 是两块完全独立的介质。系统盘坏了,换一块重装 OS,BIOS 不用碰。BIOS 只有在主板固件损坏或需要升级时才刷。

误解二:嵌入式没有 BIOS

嵌入式 SoC 内部有 Boot ROM,角色和 BIOS 对应,只是固化在芯片内部,不可修改。

误解三:服务器必须用独立系统盘

技术上完全可以不用,系统和数据装在同一块盘上。但主流方案坚持分离,因为故障隔离、扩容灵活、备份策略独立。

六、应用开发的视角

无论服务器还是嵌入式,应用开发者都不碰第一环:

  • 服务器:装 OS、装 VMS,不碰 BIOS 和 MBR
  • 嵌入式:在 BSP 提供的系统上跑应用,不碰 Boot ROM、U-Boot、内核

应用代码运行在同一抽象层:Linux 用户态。

区别在于资源约束:

维度 服务器 嵌入式
内存/存储 可扩展 SoC 选型时绑定
系统盘可换? 可换 Flash 焊死
根文件系统 可写 只读 + OverlayFS

总结

BIOS 在主板的 SPI Flash 上,不在系统盘里。 它负责找磁盘的 MBR,MBR 负责找分区的 Boot Block,Boot Block 负责加载内核,内核挂载文件系统时读 Super Block。

服务器、PC、嵌入式 NVR,启动链条逻辑一致,只是每一环的物理位置和可修改性不同。应用开发者只需关心最后一环——操作系统之上的用户态。

posted on 2026-09-24 12:06  orange-C  阅读(8)  评论(0)    收藏  举报

导航