riscv-arch-env

如何搭建riscv架构的用户开发环境

host环境

先在PC Host机器上安装VMware,以及ArchLinux。

安装archlinux

Arch Linux下载地址:http://mirrors.163.com/archlinux/iso/latest/

参考:https://www.linuxprobe.com/vm-install-archlinux.html

安装vmtools

https://www.cnblogs.com/Chary/p/13920407.html#:~:text=In%20Arch%20Linux%2C%20VMware%20Tools%20does%20not%20install,official%20Arch%20Linux%20website%20and%20a%20github%20vmware-tools-patches.

riscv环境

这套环境的原理是:

  • nspawn维护一套独立的rootfs
  • 而这套rootfs里的systemd是riscv架构的elf,系统会调用binfmt解析出是riscv,从而调用qemu-riscv64
  • 然后容器内的都是systemd启动的,都是riscv架构的,就都会调qemu-riscv64

https://github.com/felixonmars/archriscv-packages/wiki/%E4%BD%BF%E7%94%A8Qemu%E5%92%8Csystemd-nspawn%E6%90%AD%E5%BB%BARISC-V%E8%BD%BB%E9%87%8F%E7%BA%A7%E7%94%A8%E6%88%B7%E6%A8%A1%E5%BC%8F%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83

一、准备工作

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

###

二、需要安装的软件

安装 QEMU

####

Deban

安装qemu-user-binfmt,qemu-user-static,systemd-container

1
$ sudo apt-get install qemu-user-binfmt qemu-user-static systemd-container

apt-get 命令会自动帮你将依赖的软件包装好

####

Arch Linux

安装binfmt-qemu-static,qemu-user-static

1
$ sudo pacman -S qemu-user-static binfmt-qemu-static

Arch Linux 用户不用安装systemd-container

注意: 两个软件包在 archlinuxcn 源里面,如果没有添加 archlinuxcn 仓库的话,请看Arch Linux 中文社区仓库,添加 archlinuxcn 仓库,然后在安装软件包。

###

三、配置你的 RISC-V 环境

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

1
$ wget -c http://mirrors.wsyu.edu.cn/archriscv/images/archriscv-20210601.tar.zst

将下载的根文件系统解压缩

  • arch linux 用户

    1
    2
    $ mkdir archriscv
    $ sudo bsdtar -xvf archriscv-20210601.tar.zst -C archriscv
  • 非 arch linux 用户

    1
    2
    $ mkdir archriscv
    $ sudo tar -I zstd -xvf archriscv-20210601.tar.zst -C archriscv

    如果没有 zstd,则需要安装,安装命令如下

    1
    $ sudo apt-get install zstd

###

四、启动虚拟机

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

###

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

检查是否运行运行在 riscv64 模式

1
2
# uname -m
riscv64

安装 vim

1
# sudo pacman -S vim

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

1
# vim hello.c

输入

1
2
3
4
5
6
7
#include <stdio.h>

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

编译

1
# gcc hello.c -o hello

检查编译后的文件格式

1
2
# 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

1
2
# ./hello
Hello RISC-V!

到此,轻量级的 RISC-V 开发环境就搭建好了

Others

升级下系统环境

1
$ pacman -Syyu

安装vim

1
$ pacman -S vim