网站首页 > 技术文章 正文
现在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/)
猜你喜欢
- 2025-05-08 DOCKER(docker安卓版下载)
- 2025-05-08 InstantID模型部署教程(insight模型)
- 2025-05-08 Dockerfile简单使用(docker-file)
- 2025-05-08 Kubernetes Linux安装指南(kubernetes安装配置)
- 2025-05-08 一个Rust小白发布生产级Rust应用的进阶之路 | 得物技术
- 2025-05-08 如何用Linux服务器搭建属于自己的云手机
- 2025-05-08 必看!WSL2 内核选项修改方法,手把手教你编译更新
- 2025-05-08 深入了解,Python 中 type 和 isinstance 的用法
- 2025-05-08 Python 开发工程师必会的 5 个系统命令操作库
- 2025-05-08 PowerDNS可视化管理工具(可视化管理ppt)
- 最近发表
- 标签列表
-
- cmd/c (64)
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- sqlset (64)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)