4. QEMU MIPS Malta板卡启动

任务说明

本案例目标为:使用QEMU模拟MIPS Malta开发板,启动Linux内核,并通过串口输出验证系统运行状态。Malta是MIPS架构经典参考板,QEMU对其支持成熟,适合作为MIPS Linux仿真入门实验。

实现方案

采用QEMU内置的malta机器类型,搭配MIPS32或MIPS64内核。为简化流程,直接使用Debian提供的MIPS内核与initramfs(或从内核源码交叉编译)。本案例选用QEMU自带测试内核vmlinux(来自qemu-system-mips包),该内核为MIPS32 big-endian格式,可直接启动并输出到串口。

操作步骤

首先确认QEMU MIPS系统模拟器已安装:

qemu-system-mips --version

若未安装,在Debian/Ubuntu下执行:

sudo apt install qemu-system-mips

启动Malta板卡仿真,使用malta机器类型,分配128MB内存,加载内核镜像:

qemu-system-mips \
  -M malta \
  -m 128M \
  -kernel vmlinux \
  -nographic \
  -no-reboot

其中vmlinux为MIPS32内核文件。若当前目录无此文件,可从QEMU源码测试目录获取,或使用以下命令下载预编译内核:

wget https://people.debian.org/~aurel32/qemu/mips/vmlinux-2.6.32-5-4kc-malta

下载后重命名为vmlinux再执行上述启动命令。

串口输出验证

启动后,QEMU的-nographic选项将串口重定向到当前终端。预期在终端看到Linux内核启动日志,包括CPU识别、内存信息、内核版本等。最终出现init进程或Kernel panic - not syncing均属正常——前者表示完整启动,后者表示内核已成功运行但缺少根文件系统。两种结果均证明CPU、内存、串口和内核执行链路正常。

QEMU MIPS Malta 启动验证拓扑 主机终端 qemu-system-mips -M malta -nographic QEMU 仿真器 MIPS CPU (4Kc) Malta 芯片组 Malta 开发板 内存控制器 串口 (16550) 命令行 硬件仿真 vmlinux MIPS32 内核镜像 串口日志 Linux 启动信息 加载 串口重定向 (-nographic) 验证判定:终端出现 "Linux version" 或 "Kernel panic" 即表示CPU/内存/串口链路正常 若出现 "Unsupported machine" 或 "could not load kernel" 则检查命令参数与内核格式

预期输出与判定标准

执行启动命令后,终端应输出类似以下内容(节选):

Linux version 2.6.32-5-4kc-malta (buildd@) 
CPU revision is: 00018400 (MIPS 24Kc)
Determined physical RAM map:
 memory: 0000000000001000 @ 0000000000000000 (reserved)
 memory: 00000000000ef000 @ 0000000000001000 (usable)
...
console [ttyS0] enabled
...
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

判定标准:

  • 出现Linux version行——内核已成功解压并开始执行;
  • 出现console [ttyS0] enabled——串口驱动初始化成功,输出路径验证通过;
  • 出现Kernel panic(因无根文件系统)——属预期行为,证明CPU、内存、定时器、串口等核心外设均工作正常。

若终端无输出或报错,请检查:内核文件是否为MIPS格式(可用file vmlinux确认)、-M malta参数是否拼写正确、内存大小是否充足(建议≥64M)。