UEFI固件与系统镜像制作指南
截至2025年07月01日, 当前只支持 使用 spinor 启动的产品 搭配 UEFI 固件。
本文基于 Bianbu Minimal 2.2 环境,适用于 MUSE Pi Pro 板卡。
教你如何一步一步制作基于EDK2的 RISC-V UEFI 固件,并制作可以刷机的系统镜像(支持 Titan 固件包 + SD 卡镜像)。
文档内容概览
本指南共包含以下部分:
- 环境要求 - 工作空间配置和环境准备
- UEFI 固件制作 - 使用EDK2编译生成
edk2.itb
固件文件 - GRUB环境搭建 + ESP 分区 - 创建 ES P分区和配置 GRUB 启动器
- 重新制作文件系统 - 生成 bootfs 和 rootfs 分区镜像
- 制作 Titan 固件包 - 打包用于 Titan 工具烧录的固件包
- SD卡镜像制作 - 制作可直接写入SD卡的镜像文件
环境要求
-
准备宿主机的环境, 制作 的 ROOTFS 请参考 Bianbu 2.1/2.2 ROOTFS制作 完成 Bianbu Minimal 2.2 ROOTFS 制作。
-
设置工作目录 设置工作空间环境变量,分别管理UEFI固件编译和镜像制作:
export UEFI_WORKSPACE=/mnt/uefi-workspace
export ROOTFS_WORKSPACE=/mnt/image-workspace
mkdir -p $UEFI_WORKSPACE
mkdir -p $ROOTFS_WORKSPACE -
准备 rootfs 和 boot 内容
-
清理先前制作的分区镜像文件
rootfs.ext4
和bootfs.ext4
-
将 rootfs 和 bootfs 目录的内容整合到工作目录,后续会重新制作文件系统:
# 删除之前生成的分区镜像文件
rm -f rootfs.ext4 bootfs.ext4
# 将bootfs内容合并回rootfs的/boot目录
mv bootfs/* rootfs/boot/
# 将整合后的rootfs移动到专用工作空间
mv rootfs $ROOTFS_WORKSPACE/rootfs
-
UEFI 固件制作
在制作UEFI系统镜像之前,我们需要先制作UEFI固件。这是因为UEFI固件是系统启动的基础组件,它负责硬件初始化和引导加载程序的启动。传统的U-Boot启动方式需要特定的U-Boot镜像,而UEFI启动方式则需要符合UEFI标准的固件镜像。通过先制作UEFI固件(edk2.itb),我们才能替换掉传统的U-Boot镜像,从而实现UEFI标准的启动流程。
-
安装编译依赖
apt install -y git sudo make gcc g++ uuid-dev python3 u-boot-tools 2to3 brotli
-
获取 edk2 项目代码
edk2 是 TianoCore 项目的核心仓库,提供UEFI固件开发的基础框架和通用代码;edk2-platforms 是平台特定的代码仓库,包含各种硬件平台的支持代码和配置文件。两者配合使用来构建针对特定硬件平台的UEFI固件。
cd $UEFI_WORKSPACE
git clone https://gitee.com/bianbu-linux/edk2.git
git -C edk2 submodule update --init
git clone https://gitee.com/bianbu-linux/edk2-platforms.git
git -C edk2-platforms submodule update --init -
编译UEFI固件
cd $UEFI_WORKSPACE
export GCC5_RISCV64_PREFIX=riscv64-linux-gnu-
export PACKAGES_PATH=$UEFI_WORKSPACE/edk2:$UEFI_WORKSPACE/edk2-platforms
export PYTHON_COMMAND=python3
export WORKSPACE=$UEFI_WORKSPACE
# 初始化EDK2构建环境
cd edk2/
source edksetup.sh
cd $UEFI_WORKSPACE
ln /usr/bin/python3 /usr/bin/python
# 编译BaseTools
make -C $UEFI_WORKSPACE/edk2/BaseTools
# 编译UEFI固件
build -a RISCV64 -p Platform/Spacemit/K1/MUSE-Pi-Pro/MUSE-Pi-Pro.dsc -t GCC5 -b DEBUG
# 将生成的ITB固件文件复制到ROOTFS文件系统工作空间并重命名
cp $WORKSPACE/fitimage/MUSE-Pi-Pro/MUSE-Pi-Pro.itb $ROOTFS_WORKSPACE/edk2.itb -
验证生成的固件文件
编译完成后,可以在 ROOTFS 文件系统工作空间中找到生成的 UEFI固件文件:
ls -la $ROOTFS_WORKSPACE/edk2.itb
该文件即为用于SpacemiT K1平台的 UEFI 固件镜像。