Menu Close

没有 RISC-V 开发板,也能运行 RISC-V Linux

QEMU 安装与实战教程

没有 RISC-V 开发板,也能运行 RISC-V Linux

前面几期视频,我们介绍了 Linux 与 RISC-V 为什么非常适合结合,也分析了 2026 年 RISC-V Linux 的生态现状。

但很多朋友可能还有一个更实际的问题:

RISC-V Linux 现在究竟能拿来做什么?

普通人有必要购买一块 RISC-V 开发板吗?

如果手里没有 RISC-V 硬件,能不能先在自己的电脑上体验一下?

答案是可以。

我们可以使用一个非常重要的开源工具:QEMU。

通过 QEMU,你可以在普通的 x86 电脑上模拟 RISC-V 处理器,编译并运行 RISC-V 程序。

如果进一步准备 Linux 内核和根文件系统,甚至可以模拟一台完整的 RISC-V 计算机。

今天这期视频,我们先讲 RISC-V Linux 目前最适合的应用方向,然后一步一步安装 QEMU,完成第一个 RISC-V Linux 实验。


第一章:RISC-V Linux 目前最适合做什么?

第一,计算机和处理器教学

RISC-V Linux 目前最有价值的应用之一,就是计算机教学。

学生通常先学习 C 语言。

但是很多人学完 C 语言以后,仍然不知道一行代码究竟是怎样进入 CPU,最后被处理器执行的。

RISC-V 提供了一条非常清晰的学习路线:


例如,我们在 C 程序中写下:


编译器会把它翻译成 RISC-V 指令。

程序运行时,又会通过 Linux 系统调用,请求内核把文字写到终端。

这样,学生不仅可以学习编程,还可以把编译器、汇编语言、操作系统和处理器架构连接起来。

这比只背诵几条机器指令,更容易理解计算机的完整工作过程。


第二,嵌入式 Linux

RISC-V 也非常适合定制嵌入式系统。

厂商可以设计一颗 RISC-V SoC。

在标准 RISC-V CPU 旁边,再加入不同的专用模块。

例如:


RISC-V CPU 负责控制系统和运行通用程序。

专用模块负责处理计算量特别大的任务。

Linux 则负责设备驱动、内存管理、文件系统、网络通信和应用程序。

这种组合很适合工业控制、网络设备、机器人、智能摄像头和边缘计算设备。


第三,边缘人工智能

AI 推理不一定要全部交给 CPU

在很多边缘设备中,CPU 主要负责:


真正的矩阵计算,则交给 NPU、GPU、向量单元或者其他专用加速器。

RISC-V 可以承担控制和通用计算。

Linux 则负责驱动、容器、模型部署、网络服务和远程更新。

所以 RISC-V 加 Linux,并不是简单地用 RISC-V CPU 完成所有计算。

它更像是整个 AI 系统的控制中心。


第四,编译器和系统软件研究

RISC-V 的指令集扩展仍然在不断发展。

例如向量扩展、虚拟化扩展、安全扩展,以及各种性能优化扩展。

这为研究人员提供了很多机会。

编译器开发者可以研究:

如何生成更高效的 RISC-V 指令?

Linux 内核工程师可以研究:

如何支持新的内存管理、中断和虚拟化功能?

处理器研究人员也可以比较:

不同流水线、缓存和分支预测设计,会对 Linux 性能产生什么影响?

所以对于编译器、操作系统、虚拟化和体系结构研究来说,RISC-V 是一个非常有吸引力的平台。


第五,供应链多样化

RISC-V 允许不同企业、大学和研究机构实现兼容处理器。

这可以降低整个产业只依赖少数指令集授权方的风险。

但是这里必须强调:

开放指令集,不等于自动获得高性能处理器。

RISC-V 并不会自动解决:


RISC-V 开放的是软件与处理器之间的关键接口。

至于处理器性能有多高,仍然取决于设计能力、制造工艺、缓存、流水线和编译器优化。


第二章:RISC-V Linux 还缺少什么?

第一,平台仍然比较碎片化

目前很多 RISC-V 开发板仍然需要使用厂商提供的专用镜像。

一块开发板的系统镜像,通常不能直接安装到另一块开发板上。

因为不同平台使用的启动固件、设备树、网卡、GPU 和外围芯片可能完全不同。

RVA23、UEFI、ACPI 和服务器平台规范正在改善这个问题。

但距离 x86 PC 那种下载一个 ISO,就能安装到大量不同电脑上的兼容性,仍然需要时间。


第二,桌面图形生态还不成熟

有些 RISC-V 开发板已经可以启动 GNOME 或 KDE。

但是能看到桌面,不等于已经拥有成熟的桌面体验。

一台真正好用的桌面电脑还需要:


目前 RISC-V Linux 桌面比较薄弱的部分,已经不再是基本命令和普通用户空间。

真正的问题更多出现在图形加速、外围驱动和整机集成。


第三,处理器性能仍有差距

指令集开放,并不代表处理器一定更快。

CPU 性能还取决于:


一些高性能 RISC-V 核心已经取得了很大进步。

但是普通消费者目前可以买到的 RISC-V 产品,在单线程性能、GPU、功耗控制和整机体验方面,通常仍然无法全面替代最新的 x86 和 ARM 系统。


第四,闭源软件仍然是障碍

开源软件通常可以重新编译。

但是闭源软件必须由软件厂商主动发布 RISC-V 版本。

一些商业数据库、专业设计软件、云服务 Agent、视频会议软件和浏览器 DRM 模块,可能只有 x86 或 ARM 版本。

即使 Linux 本身已经支持 RISC-V,如果关键应用程序没有 RISC-V 二进制文件,用户仍然无法正常使用。


第五,服务器标准仍在建设

RISC-V 已经能够运行 Linux、容器和虚拟化软件。

但是企业服务器还需要很多额外能力。

例如:


所以 RISC-V 服务器已经从概念验证阶段,进入了建立工业标准的阶段。

但它距离 x86 服务器几十年积累起来的成熟生态,仍然有明显距离。


第三章:没有开发板,怎样体验 RISC-V?

现在进入今天最重要的实战部分。

我们使用的工具叫作 QEMU。

QEMU 是一个开源的处理器模拟器和虚拟化工具。

它有两种非常容易混淆的运行方式。

第一种叫作用户模式模拟。

第二种叫作完整系统模拟。


什么是用户模式模拟?

用户模式只运行一个特定架构的程序。

例如,我们在 x86 Linux 电脑上,运行一个为 RISC-V 编译的程序。

这时 QEMU 主要模拟 RISC-V CPU 指令。

Linux 内核仍然使用当前电脑上的 Linux 内核。

流程大概是:


这种模式启动速度快,非常适合测试程序、学习汇编和验证交叉编译器。

QEMU 官方将用户模式定义为:在一种 CPU 架构上,运行为另一种 CPU 架构编译的 Linux 或 BSD 程序。


什么是完整系统模拟?

完整系统模拟的范围更大。

它不仅模拟 CPU,还模拟:


这时我们模拟的是一台完整的 RISC-V 计算机。

流程大概是:


QEMU 官方文档明确区分了用户模式和完整系统模式;系统模式会提供 CPU、内存和虚拟设备模型,用来启动完整的客户操作系统

今天我们先完成用户模式实验,然后再安装完整系统模拟器。


第四章:在 Ubuntu 或 Debian 中安装 QEMU

第一步:更新软件包列表

打开终端,输入:


这个命令不会安装软件。

它只是更新本地的软件包索引。


第二步:安装交叉编译器和用户模式 QEMU

输入下面的命令:


这里一共安装三个工具。

第一个是:


它是 RISC-V 64 位 Linux 交叉编译器。

我们的电脑可能使用 x86 CPU,但这个编译器生成的是 RISC-V 程序。

第二个是:


它提供:


这个程序可以运行 RISC-V 64 位 Linux 应用。

第三个是:


它可以检查一个文件究竟是 x86 程序、ARM 程序,还是 RISC-V 程序。

UbuntuDebian 的软件仓库都提供 qemu-usergcc-riscv64-linux-gnuqemu-user 软件包包含 qemu-riscv64 用户模式模拟器。


第三步:检查是否安装成功

输入:


然后输入:


还可以运行:


正常情况下,应该看到类似:


如果三个命令都能正常执行,说明用户模式环境已经安装完成。


第五章:编写第一个 RISC-V 程序

首先建立一个实验目录:


然后建立一个 C 程序:


输入下面的代码:


保存文件。

在 nano 中,可以按:


第六章:把 C 程序编译成 RISC-V 程序

输入:


这里需要解释几个参数。


表示启用常用的编译优化。


表示静态链接。

也就是把程序需要的 C 库代码,尽量一起放进可执行文件。

为什么第一个实验要使用静态链接?

因为我们的 x86 电脑通常没有完整的 RISC-V 动态链接环境。

如果直接生成动态程序,运行时可能会找不到 RISC-V 的动态加载器。

使用静态链接,可以让第一个实验更加简单。


检查生成的程序

输入:


应该看到类似:


这里最重要的是两个信息:


这证明它不是 x86 程序。

它是一个真正的 64 位 RISC-V Linux 程序。

还可以输入:


找到类似下面的内容:


第七章:使用 QEMU 运行 RISC-V 程序

现在输入:


屏幕应该显示:


到这里,我们已经完成了第一个 RISC-V Linux 实验。

这条路径是:


虽然我们的电脑使用的是 x86 或 ARM CPU,但是程序本身使用的确实是 RISC-V 指令。

QEMU 在运行过程中,把这些 RISC-V 指令翻译成宿主机能够执行的代码。


查看 RISC-V 汇编

如果想观察程序中的 RISC-V 指令,可以输入:


你可能会看到:


这些就是程序中的 RISC-V 指令。

按下字母:


即可退出 less

这个实验特别适合教学。

因为它把 C 语言、编译器、ELF 文件、RISC-V 指令和 Linux 运行环境连接到了一起。


第八章:为什么有时会出现动态加载器错误?

如果我们去掉 -static


然后直接运行:


有些系统可能会报告:


这并不代表程序编译失败。

问题是 QEMU 找不到 RISC-V 的动态加载器和共享库。

这时可以告诉 QEMU,RISC-V 系统库位于什么位置:


其中:


表示把这个目录当作 RISC-V 程序的库文件根目录。

对于第一个实验,直接使用 -static 最简单。

以后研究动态链接和共享库时,再使用 -L 参数。


第九章:安装完整系统模式

用户模式只能运行单个 RISC-V 程序。

如果要模拟完整的 RISC-V 计算机,需要:


这里要特别注意,不同 UbuntuDebian 版本的软件包名称可能不同。

Ubuntu 24.04

可以安装:


Ubuntu 24.04 将 RISC-V 等多种系统模拟器放在 qemu-system-misc 软件包中。

Debian 13

可以安装:

Ubuntu 26.04

同样可以安装:


Debian 13 和 Ubuntu 26.04 都提供了独立的 qemu-system-riscv 软件包,其中包含 32 位和64位 RISC-V 完整系统模拟器。

安装完成后,输入:


还可以查看支持的虚拟主板:


第十章:启动 RISC-V 虚拟主板

输入:


下面逐个解释。


启动 64 位 RISC-V 完整系统模拟器。


选择 QEMU 的通用 RISC-V 虚拟主板。

这块主板不对应某一个真实产品,而是专门用于运行虚拟机。

如果目的只是运行 Linux,而不是精确模拟某块真实开发板,QEMU 官方建议使用 virt 平台。


给虚拟机分配 1 GB 内存。


模拟两个 RISC-V CPU 核心。


加载 QEMU 自带的默认 OpenSBI 固件。


不打开图形窗口,把虚拟串口输出直接显示在当前终端。

QEMU 的 RISC-V virt 平台可以自动加载默认 OpenSBI 固件,然后再通过 -kernel 加载 Linux 内核。

运行以后,你可能会看到 OpenSBI 的启动信息。

但系统随后停在那里。

这是正常现象。

因为我们目前只加载了 OpenSBI,还没有提供 Linux 内核。

要退出 QEMU,先按:


松开以后,再按:


-nographic 模式下,Ctrl+AX 是 QEMU 官方定义的退出组合键。


第十一章:完整 RISC-V Linux 怎样启动?

要真正启动完整 Linux,我们至少需要:


基本命令可以写成:


其中:


指定 RISC-V Linux 内核。


指定初始根文件系统。


Linux 内核传递启动参数。


Linux 把启动信息发送到虚拟串口。


告诉内核使用内存中的 initramfs 作为根文件系统。


指定系统启动后首先运行的程序。

QEMU 官方给出的 RISC-V virt 启动方法,同样使用 -kernel-initrd-append 参数加载 Linux 内核与根文件系统。

需要注意,这只是通用命令模板。

具体参数还要根据你下载或者制作的内核和根文件系统进行调整。


第十二章:Windows 11 用户怎么办?

如果你的主机运行 Windows 11,最简单的方法不是直接在 Windows 中配置整套交叉编译环境。

更方便的方法,是先安装 WSL。

用管理员身份打开 PowerShell,输入:


然后重新启动电脑。

默认情况下,这条命令会安装 WSL 和 Ubuntu

进入 Ubuntu 终端以后,就可以执行前面完全相同的 APT 命令:


微软官方说明,Windows 11 可以通过 wsl --install 安装 WSL 和默认的 Ubuntu Linux 环境。

对于今天的用户模式实验,WSL 中运行 QEMU 通常已经足够。


第十三章:常见问题

问题一:找不到 qemu-riscv64

如果出现:


检查是否安装了:


注意:


提供的是用户模式。


属于完整系统模式。

它们不是同一个程序。


问题二:出现 Exec format error

如果直接输入:


可能会看到:


这是因为当前 Linux 内核发现它不是宿主机架构的程序。

最简单的解决方法是明确使用:


问题三:找不到动态加载器

如果出现:


可以使用静态编译:


或者运行动态程序时加入:


问题四:qemu-system-riscv64 找不到

Ubuntu 24.04 尝试安装:


Debian 13 或 Ubuntu 26.04 尝试安装:


问题五:启动以后只有 OpenSBI

如果你只运行:


看到 OpenSBI 后停止,是正常现象。

因为你还没有使用:


指定 Linux 内核。

OpenSBI 不是完整操作系统

它只是 RISC-V 固件层。


问题六:QEMU 为什么比较慢?

当宿主机是 x86,而客户系统是 RISC-V 时,CPU 指令需要通过 QEMU 的动态翻译器进行模拟。

所以这种跨架构模拟通常比原生运行慢。

QEMU 的主要价值不是让 RISC-V 程序达到原生性能。

它的价值是:


结论

RISC-V Linux 目前还没有全面替代 x86 和 ARM

它在桌面图形、处理器性能、闭源软件和服务器标准方面,仍然需要继续发展。

但是对于计算机教学、嵌入式系统、边缘 AI、编译器和 Linux 内核研究来说,它已经是一个非常有价值的平台。

更重要的是,你不需要立刻购买 RISC-V 开发板。

只要一台普通 Linux 电脑,或者一台安装了 WSL 的 Windows 11 电脑,就可以使用交叉编译器和 QEMU,完成第一步实验。

今天我们完成的是:


然后,我们又安装了完整系统模拟器,了解了:


这就是学习 RISC-V Linux 最低成本、也最清晰的一条入门路线。

感谢大家观看,我们下期再见。

除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!
Posted in Linux 教程, RISC-V教程