优秀的编程知识分享平台

网站首页 > 技术文章 正文

搭建RISC-V模拟环境(如何搭建虚拟环境)

nanyue 2025-05-08 20:19:43 技术文章 12 ℃


现在RISC-V在主流操作系统上基本都能模拟了,不过我还是觉得Linux下好用。

之前在Mac上想用Linux,基本就是在Virtual Box上创建一个虚拟机,从网上下一个Ubuntu的安装iso,安一个就行了(估计运行性能损失会大一些)。

最近发现Docker挺好用,据说性能损失会小。最开始用Docker是沿用VBox上的使用思路,安装openssh-server,用ssh访问(
https://www.cnblogs.com/mengw/p/11413461.html)。后来看到更方便的例子,直接把Guest机的目录映射到Host机的目录,启动起来就能用,保存在Host机目录中的内容也不会随着容器的删除而删除(当然VBox上的共享目录也能做到,没这么方便)。

docker build -t myubuntu:0.0.1 
docker run -it --mount type=bind,source=$(PWD),destination=/mnt myubuntu:0.0.1

登进去后/mnt就是Host机的当前目录$(PWD)。如果想登录多个终端就用

docker exec -it <container id> /bin/bash

这样看来,以后Mac上基本不用在Virtual Box中安装Linux了。我也试了在64位Mac的Docker中,使用32位Ubuntu,用是能用,就是运行起来的仍然是x86_64,算了,我就不深究了。

QEMU是个好东西,能够模拟多种不同架构的系统,比只能虚拟相同架构的Virtual Box强多了(有点冤枉,毕竟VBox还能在64位上虚拟32位架构)。安装qemu-user包后出现的qemu-<yyy>模拟的是用户程序执行环境。例如

apt-get install -y qemu-user gcc-riscv64-linux-gnu
riscv64-linux-gnu-gcc -static hello_world.c
qemu-riscv64 ./a.out

如果要开发自己的操作系统,貌似安装gcc-riscv64-unknown-elf和qemu-system就够了。qemu包中的qemu-system-<xxx>模拟的是操作系统(但riscv32/64所在的包是qemu-system-misc)。

gcc-riscv64-linux-gnu - GNU C compiler for the riscv64 architecture
gcc-riscv64-unknown-elf - GCC compiler for embedded RISC-V chips

啥区别?

在Mac下也可以直接安装RISC-V模拟环境。(
https://github.com/riscv/homebrew-riscv)我在Mac上用gdb调试RISC-V程序时gdb功能有点问题,在Linux下就可以,就当macOS支持不好吧。

我没找到支持RISC-V的32位gcc交叉编译器的安装包,只能自己编译一个(
https://github.com/riscv/riscv-gnu-toolchain)。如果在Mac上编译,源码需要在能区分大小写的文件系统上。我的Mac文件系统是不区分大小写的(缺省安装,Mac上Unity工程需要的文件系统只能是不区分大小写的)。使用macOS系统的磁盘管理工具可以很方便地把整个磁盘挂载成区分大小写的APFS宗卷,用的都是同一块硬盘空间,需要区分大小写就用这个挂载点。

但国内恶劣的github下载速度严重影响了我国的IT发展。

用qemu跑一个RISC-V版的linux步骤可参考(
https://risc-v-getting-started-guide.readthedocs.io/en/latest/linux-qemu.html),其中qemu用toolchain中的module就可以,不用单独clone qemu工程。

有没有RISC-V CPU的笔记本电脑可用啊?(
https://abopen.com/news/building-a-risc-v-pc/)

最近发表
标签列表