1. QEMU环境搭建与U-Boot编译

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命令行)。

QEMU U-Boot 启动验证拓扑 主机 (x86_64) 交叉编译工具链 arm-linux-gnueabi-gcc make vexpress_ca9x4_defconfig u-boot.bin (约200~400KB) ARM 可执行镜像 QEMU 虚拟机 -M vexpress-a9 -m 256M -nographic 编译 -kernel 串口控制台输出 U-Boot 2019.04-... CPU: Freescale... DRAM: 256 MiB VExpress EMMC: 0 UART 验证判定标准 1. 编译无错误,生成 u-boot.bin 2. QEMU 启动后 3 秒内出现 U-Boot 版本 banner 3. 最终停留在 "VExpress EMMC: 0" 命令行提示符

验证方法与判定标准

完成上述步骤后,按以下流程确认案例成功:

  1. 编译验证:make命令无报错退出,且ls -l u-boot.bin能看到文件存在(大小通常在200KB~1MB之间)。
  2. 启动验证:执行QEMU命令后,观察终端输出。若出现包含U-Boot字样的版本行、硬件初始化信息,并最终显示VExpress EMMC: 0提示符,说明镜像可启动且串口工作正常。
  3. 交互验证(可选):在提示符后输入help并回车,能看到命令列表输出,证明U-Boot控制台可用。

若启动后无输出或卡死,优先检查:交叉编译器是否安装正确(arm-linux-gnueabi-gcc -v)、QEMU是否支持vexpress-a9机器(qemu-system-arm -M help | grep vexpress)。