玄铁 C908X 在 QEMU 中启动 Linux 6.6 系统教程本文记录一次从零开始在 Ubuntu 主机上跑通玄铁 C908X QEMU Linux 系统的完整过程。
本文记录一次从零开始在 Ubuntu 主机上跑通玄铁 C908X QEMU Linux 系统的完整过程。
适合人群:
-
第一次接触玄铁 RISC-V SDK。
-
想在没有真实开发板的情况下先用 QEMU 跑 Linux。
-
已经拿到玄铁 Linux SDK 镜像包和玄铁 QEMU 模拟器包。
本教程最终目标:
在 XuanTie QEMU 中启动 C908X,进入 riscv64 Linux shell,并验证 CPU、内核、rootfs、网卡信息。
1. 环境说明
本次使用的主机环境:
Ubuntu 22.04 目标 CPU:C908X QEMU:玄铁定制 QEMU V5.4.1 Linux SDK:XuanTie Linux SDK V1.3.0 目标系统:64 位 RISC-V Linux 6.6
注意:这里必须使用玄铁定制 QEMU。普通 Ubuntu 自带 QEMU 大概率不支持:
-cpu c908x
如果执行普通 QEMU,可能会提示不认识 c908x 这个 CPU 类型。
2. 需要下载的文件
需要两个包。
2.1 Linux SDK 镜像包
文件名:
xuantie-linux-V1.3.0.tar.gz
作用:提供 OpenSBI、U-Boot、Linux kernel、rootfs 等预编译镜像。
解压后主要目录如下:
archived ├── fpga ├── images ├── images-rva23 ├── k230 ├── tools └── yocto-build-commits.txt
其中 C908X 主要使用 archived/images 目录。
2.2 玄铁 QEMU 模拟器包
文件名:
xuantie-qemu-x86_64-Ubuntu-20.04-V5.4.1.tar.gz
作用:提供玄铁定制版 qemu-system-riscv64。
解压后需要找到:
qemu/bin/qemu-system-riscv64
3. Windows 使用 scp 传输文件到 Ubuntu
假设下载的文件在 Windows 的:
D:\Users\hpkt\Downloads
远端 Ubuntu 用户和 IP:
用户:wangwenwen IP:192.168.6.153
3.1 创建远端目录
在 Windows PowerShell 执行:
ssh wangwenwen@192.168.6.153 "mkdir -p /home/wangwenwen/Xuantie/xuantie_sdk" ssh wangwenwen@192.168.6.153 "mkdir -p /home/wangwenwen/Xuantie/xuantie_sdk/qemu"
3.2 传输 Linux SDK
scp .\xuantie-linux-V1.3.0.tar.gz wangwenwen@192.168.6.153:/home/wangwenwen/Xuantie/xuantie_sdk/
3.3 传输 QEMU 包
scp .\xuantie-qemu-x86_64-Ubuntu-20.04-V5.4.1.tar.gz wangwenwen@192.168.6.153:/home/wangwenwen/Xuantie/xuantie_sdk/qemu/
注意:scp 远端路径前面一定要有冒号:
wangwenwen@192.168.6.153:/home/wangwenwen/Xuantie/xuantie_sdk/
如果写成下面这样就是错的:
wangwenwen@192.168.6.153 /home/wangwenwen/Xuantie/xuantie_sdk
4. Ubuntu 上解压文件
登录 Ubuntu:
ssh wangwenwen@192.168.6.153
进入 SDK 目录:
cd /home/wangwenwen/Xuantie/xuantie_sdk ls
应该能看到:
xuantie-linux-V1.3.0.tar.gz qemu
4.1 解压 Linux SDK
cd /home/wangwenwen/Xuantie/xuantie_sdk tar xzvf xuantie-linux-V1.3.0.tar.gz
解压后检查:
ls
应该看到:
archived qemu xuantie-linux-V1.3.0.tar.gz
检查镜像目录:
ls archived/images
应该看到:
kernel opensbi rootfs u-boot zsb
4.2 解压 QEMU
cd /home/wangwenwen/Xuantie/xuantie_sdk/qemu tar xzvf xuantie-qemu-x86_64-Ubuntu-20.04-V5.4.1.tar.gz
查找 QEMU 可执行文件:
find /home/wangwenwen/Xuantie/xuantie_sdk/qemu -name qemu-system-riscv64
正常结果类似:
/home/wangwenwen/Xuantie/xuantie_sdk/qemu/bin/qemu-system-riscv64
5. C908X 需要使用哪些镜像
C908X 属于 64 位 Linux 6.6 镜像组,主要使用下面这些文件:
OpenSBI: archived/images/opensbi/fw_dynamic-v1.7-rv64.bin U-Boot: archived/images/u-boot/u-boot-qemu-rv64.bin Linux Kernel: archived/images/kernel/Image-6.6-rv64-kcdefault Rootfs: archived/images/rootfs/rootfs.xuantie-image-rv64-6.6-lite.ext4
如果想使用 debug 版本内核,可以把 kernel 换成:
archived/images/kernel/Image-6.6-rv64-kcdebug
6. 安装 QEMU 运行依赖
玄铁 QEMU 包名里写的是 Ubuntu 20.04,但本次主机是 Ubuntu 22.04,所以会遇到一些动态库版本不匹配问题。
先安装常见依赖:
sudo apt update sudo apt install -y \ libcapstone4 \ libspice-server1 \ libsnappy1v5 \ libsdl2-2.0-0 \ libsdl2-image-2.0-0 \ libslirp0 \ libaio1 \ libiscsi7 \ librdmacm1 \ libibverbs1 \ libpmem1 \ libdaxctl1 \ libvdeplug2 \ libvirglrenderer1 \ libcacard0 \ libusbredirparser1 \ librbd1 \ librados2
6.1 解决 libcapstone.so.3 找不到
如果运行 QEMU 时出现:
error while loading shared libraries: libcapstone.so.3: cannot open shared object file: No such file or directory
原因是 Ubuntu 22.04 里通常只有:
libcapstone.so.4
而玄铁 QEMU 需要:
libcapstone.so.3
解决方法:给 QEMU 单独建一个本地兼容库目录,不改系统库。
mkdir -p /home/wangwenwen/Xuantie/xuantie_sdk/qemu/lib ln -sf /lib/x86_64-linux-gnu/libcapstone.so.4 \ /home/wangwenwen/Xuantie/xuantie_sdk/qemu/lib/libcapstone.so.3
6.2 解决 libbrlapi.so.0.7 找不到
如果检查依赖时看到:
libbrlapi.so.0.7 => not found
Ubuntu 22.04 一般是:
libbrlapi.so.0.8
先确认系统里有这个库:
ldconfig -p | grep brlapi
然后创建本地兼容链接:
ln -sf /lib/x86_64-linux-gnu/libbrlapi.so.0.8 \ /home/wangwenwen/Xuantie/xuantie_sdk/qemu/lib/libbrlapi.so.0.7
6.3 检查 QEMU 依赖是否都满足
执行:
LD_LIBRARY_PATH=/home/wangwenwen/Xuantie/xuantie_sdk/qemu/lib \ ldd /home/wangwenwen/Xuantie/xuantie_sdk/qemu/bin/qemu-system-riscv64 | grep "not found"
如果没有任何输出,说明依赖已经满足。
如果还有输出,根据提示继续安装对应库。
7. 启动 C908X Linux
进入镜像包目录:
cd /home/wangwenwen/Xuantie/xuantie_sdk/archived
执行启动命令:
LD_LIBRARY_PATH=/home/wangwenwen/Xuantie/xuantie_sdk/qemu/lib \ /home/wangwenwen/Xuantie/xuantie_sdk/qemu/bin/qemu-system-riscv64 \ -nographic -smp 2 -M virt \ -cpu c908x \ -m 2G \ -bios ./images/opensbi/fw_dynamic-v1.7-rv64.bin \ -kernel ./images/u-boot/u-boot-qemu-rv64.bin \ -device loader,file=./images/kernel/Image-6.6-rv64-kcdefault,addr=0x84000000 \ -drive file=./images/rootfs/rootfs.xuantie-image-rv64-6.6-lite.ext4,format=raw,id=hd0 \ -device virtio-blk-device,drive=hd0 \ -netdev user,id=net0 \ -device virtio-net-device,netdev=net0
参数解释:
| 参数 | 说明 |
|---|---|
-nographic |
不启动图形窗口,直接在终端显示串口输出 |
-smp 2 |
模拟 2 个 CPU 核心 |
-M virt |
使用 RISC-V virt 虚拟机平台 |
-cpu c908x |
模拟 C908X CPU |
-m 2G |
分配 2GB 内存 |
-bios |
指定 OpenSBI 镜像 |
-kernel |
指定 U-Boot QEMU 镜像 |
-device loader |
把 Linux kernel 加载到指定地址 |
-drive |
指定 rootfs ext4 镜像 |
virtio-blk-device |
把 rootfs 挂成 virtio 块设备 |
virtio-net-device |
添加 virtio 网卡 |
8. 登录系统
启动过程中会看到 OpenSBI、U-Boot、Linux 内核日志。
看到登录提示后:
riscv64-xuantie login:
输入:
root
如果没有设置密码,一般可以直接进入 shell。
进入后类似:
root@riscv64-xuantie:~#
9. 验证是否启动成功
9.1 查看 CPU 信息
cat /proc/cpuinfo
正常能看到两个 processor:
processor : 0 hart : 0 processor : 1 hart : 1
并且可以看到 ISA:
rv64imafdcv zicbom zicbop zicboz zfh zvfh xtheadvdot
说明 C908X 相关扩展已经被识别。
9.2 查看内核版本
uname -a
本次成功结果类似:
Linux riscv64-xuantie 6.6.36-yocto-standard+ #1 SMP Thu Apr 9 15:40:26 CST 2026 riscv64 GNU/Linux
9.3 查看启动参数
cat /proc/cmdline
正常结果:
root=/dev/vda rw console=ttyS0 earlycon=sbi
9.4 查看 rootfs 挂载
mount
正常能看到:
/dev/vda on / type ext4 (rw,relatime)
说明 rootfs 已经从 virtio 磁盘 /dev/vda 挂载为根文件系统。
9.5 查看磁盘设备
ls /dev/vd*
正常结果:
/dev/vda
9.6 查看网卡
ip addr
正常能看到:
eth0
如果 eth0 没有 IP,可以尝试:
udhcpc -i eth0 ip addr
QEMU user 网络下,宿主机网关通常是:
10.0.2.2
可以尝试:
ping 10.0.2.2
10. 如何退出 QEMU
在 -nographic 模式下,退出 QEMU:
Ctrl + A 然后按 X
也就是先按住 Ctrl 再按 A,松开后再按 X。
11. 常见问题
11.1 scp 提示目标路径失败
错误示例:
dest open "/home/wangwenwen/Xuantie/xuantie_sdk/qemu/": Failure
原因通常是远端目录不存在。
先创建目录:
ssh wangwenwen@192.168.6.153 "mkdir -p /home/wangwenwen/Xuantie/xuantie_sdk/qemu"
再重新传输:
scp .\xuantie-qemu-x86_64-Ubuntu-20.04-V5.4.1.tar.gz wangwenwen@192.168.6.153:/home/wangwenwen/Xuantie/xuantie_sdk/qemu/
11.2 找不到 qemu-system-riscv64
检查是否解压了 QEMU 包:
find /home/wangwenwen/Xuantie/xuantie_sdk/qemu -name qemu-system-riscv64
如果没有结果,说明 QEMU 包没有解压成功,或者下载错了包。
需要下载 Linux 版本:
xuantie-qemu-x86_64-Ubuntu-20.04-V5.4.1.tar.gz
不要下载 Windows 版本。
11.3 libcapstone.so.3 找不到
错误:
libcapstone.so.3: cannot open shared object file
解决:
sudo apt install -y libcapstone4 mkdir -p /home/wangwenwen/Xuantie/xuantie_sdk/qemu/lib ln -sf /lib/x86_64-linux-gnu/libcapstone.so.4 \ /home/wangwenwen/Xuantie/xuantie_sdk/qemu/lib/libcapstone.so.3
启动时要带上:
LD_LIBRARY_PATH=/home/wangwenwen/Xuantie/xuantie_sdk/qemu/lib
11.4 libbrlapi.so.0.7 找不到
错误:
libbrlapi.so.0.7 => not found
解决:
ln -sf /lib/x86_64-linux-gnu/libbrlapi.so.0.8 \ /home/wangwenwen/Xuantie/xuantie_sdk/qemu/lib/libbrlapi.so.0.7
11.5 -cpu c908x 不认识
如果提示:
unable to find CPU model 'c908x'
说明你用的不是玄铁定制 QEMU,或者 QEMU 版本不对。
需要确认执行的是:
/home/wangwenwen/Xuantie/xuantie_sdk/qemu/bin/qemu-system-riscv64
而不是系统自带的:
/usr/bin/qemu-system-riscv64
12. 最终成功标志
只要能看到下面这些信息,就说明 C908X QEMU Linux 已经跑通:
riscv64-xuantie login: root root@riscv64-xuantie:~#
并且:
cat /proc/cpuinfo uname -a mount ip addr
能够看到:
2 个 processor Linux 6.6.36-yocto-standard+ /dev/vda on / type ext4 eth0 网卡
本次实际验证结果:
CPU:2 核,hart 0 / hart 1 架构:riscv64 内核:Linux 6.6.36-yocto-standard+ rootfs:/dev/vda ext4,读写挂载 启动参数:root=/dev/vda rw console=ttyS0 earlycon=sbi 网卡:eth0 已识别
13. 总结
本次跑通 C908X QEMU 的核心步骤是:
1. 下载 XuanTie Linux SDK 镜像包 2. 下载 XuanTie QEMU 模拟器包 3. 传输到 Ubuntu 4. 解压 SDK 和 QEMU 5. 安装 QEMU 依赖库 6. 处理 Ubuntu 22.04 和 Ubuntu 20.04 库版本差异 7. 使用 c908x 参数启动 Linux 6.6 8. 登录 root 并验证系统信息
最关键的启动命令是:
LD_LIBRARY_PATH=/home/wangwenwen/Xuantie/xuantie_sdk/qemu/lib \ /home/wangwenwen/Xuantie/xuantie_sdk/qemu/bin/qemu-system-riscv64 \ -nographic -smp 2 -M virt \ -cpu c908x \ -m 2G \ -bios ./images/opensbi/fw_dynamic-v1.7-rv64.bin \ -kernel ./images/u-boot/u-boot-qemu-rv64.bin \ -device loader,file=./images/kernel/Image-6.6-rv64-kcdefault,addr=0x84000000 \ -drive file=./images/rootfs/rootfs.xuantie-image-rv64-6.6-lite.ext4,format=raw,id=hd0 \ -device virtio-blk-device,drive=hd0 \ -netdev user,id=net0 \ -device virtio-net-device,netdev=net0
以后如果经常使用,建议把这条命令保存成脚本,例如:
run_c908x_qemu.sh
这样每次只需要执行脚本即可启动系统。
更多推荐




所有评论(0)