Skip to content

使用Qemu和systemd nspawn搭建RISC V轻量级用户模式开发环境

tsuibin edited this page Jul 26, 2021 · 17 revisions

Qemu是什么

QEMU是一套由法布里斯·贝拉(Fabrice Bellard)所编写的以GPL许可证分发源码的模拟处理器,在GNU/Linux平台上使用广泛。Bochs,PearPC等与其类似,但不具备其许多特性,比如高速度及跨平台的特性,通过KQEMU这个闭源的加速器,QEMU能模拟至接近真实电脑的速度。

systemd-nspawn是什么

systemd-nspawn 就像是 chroot 命令, 但是是 吃了类固醇的chroot(chroot on steroids). systemd-nspawn 可用于在一个轻量命名空间容器中运行命令或操作系统。它比 chroot 更强大在于它完全虚拟化了文件系统层次结构、进程树、各种 IPC 子系统以及主机和域名。

一、准备工作

需要准备一台安装有Linux操作系统的电脑,这里推荐Debian、Arch Linux

二、需要安装的软件

我们这里以Debian系统为例,安装Qemu

sudo apt-get install qemu-user-binfmt qemu-user-static systemd-container apt-get 命令会自动帮你将依赖的软件包装好

三、配置你的RISC-V环境

下载安装arch risc-v根文件系统

wget -c http://mirrors.wsyu.edu.cn/archriscv/images/archriscv-20210601.tar.zst 将下载的根文件系统解压缩

mkdir archriscv sudo tar -I zstd -xvf archriscv-20210601.tar.zst -C archriscv 如果没有zstd,则需要安装,安装命令如下

sudo apt-get install zstd

四、启动虚拟机

sudo systemd-nspawn -D /home/tsuibin/archriscv/ --machine archriscv

五、检查环境及编译一个RISC-V程序

[tsuibin@archriscv ~]$ uname -m riscv64 检查是否运行运行在riscv64模式

使用vim编写一个简单的c程序

vim hello.c 输入

#include <stdio.h>

int main(int argc, char *argv[]) { printf("Hello RISC-V! \n");

    `return 0;`

} 编译

gcc hello.c -o hello 检查编译后的文件格式

[tsuibin@archriscv ~]$ file hello hello: ELF 64-bit LSB pie executable, UCB RISC-V, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-riscv64-lp64d.so.1, BuildID[sha1]=4a75c57e4e99654dca0d6dc91689dffbbe7dc581, for GNU/Linux 4.15.0, not stripped

看到是RISC-V的elf文件就说明gcc正常

运行hello

[tsuibin@archriscv ~]$ ./hello Hello RISC-V! 到此,轻量级的RISC-V开发环境就搭建好了

Clone this wiki locally