1. QEMU环境搭建与U-Boot编译
任务说明
本案例目标是在x86_64主机上搭建QEMU模拟环境,编译U-Boot并生成可用于ARM虚拟机的启动镜像。最终交付物为:u-boot.bin镜像文件,以及一条可重复执行的QEMU启动命令,能够观察到U-Boot在虚拟串口上的输出。
环境准备
需要安装的依赖包(Debian/Ubuntu):
sudo apt update
sudo apt install -y build-essential flex bison bc \
libssl-dev device-tree-compiler python3 \
qemu-system-arm git
获取U-Boot源码与交叉编译
选择vexpress-a9开发板配置(QEMU原生支持该机器模型),使用ARM交叉编译器进行构建:
git clone https://github.com/u-boot/u-boot.git
cd u-boot
make vexpress_ca9x4_defconfig
make CROSS_COMPILE=arm-linux-gnueabi- -j$(nproc)
若主机未安装交叉编译器,先执行:sudo apt install gcc-arm-linux-gnueabi。编译完成后,在源码根目录生成u-boot.bin。
验证QEMU启动
使用以下命令启动模拟器,加载生成的镜像:
qemu-system-arm -M vexpress-a9 -m 256M \
-nographic -kernel u-boot.bin
预期在终端看到U-Boot版本信息、CPU/内存初始化日志,最终进入VExpress EMMC: 0提示符(即U-Boot命令行)。
验证方法与判定标准
完成上述步骤后,按以下流程确认案例成功:
- 编译验证:
make命令无报错退出,且ls -l u-boot.bin能看到文件存在(大小通常在200KB~1MB之间)。 - 启动验证:执行QEMU命令后,观察终端输出。若出现包含
U-Boot字样的版本行、硬件初始化信息,并最终显示VExpress EMMC: 0提示符,说明镜像可启动且串口工作正常。 - 交互验证(可选):在提示符后输入
help并回车,能看到命令列表输出,证明U-Boot控制台可用。
若启动后无输出或卡死,优先检查:交叉编译器是否安装正确(arm-linux-gnueabi-gcc -v)、QEMU是否支持vexpress-a9机器(qemu-system-arm -M help | grep vexpress)。