內容目錄

RISC-V docker 安裝使用

REF: 5 秒内跨架构运行 RISC-V Ubuntu 22.04 + xfce4 桌面系统

https://gitee.com/tinylab/riscv-lab

需要安裝工具

  1. docker
  2. git

on ubuntu / WSL

sudo apt install git
sudo snap install docker
# if WSL snap have no docker:
# sudo apt install docker

on macOS

  • 若沒安裝 homebrew,執行以下 命令:
# 在終端機執行這條指令來安裝 Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 編輯 .zshrc 檔案
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc
# 重新載入設定
source ~/.zshrc
  • 用 homeebrew 安裝 docker 與 git:
brew install git
brew install --cask docker

安裝執行 cloud-lab 的 riscv-lab docker image

RISC-V Lab 的运行与登陆方式完全兼容 Linux Lab,在准备好 git 和 docker 后,仅需 3 条命令就可以运行起来:

# 安裝( 會安裝在當前用戶目錄下的 cloud-lab 目錄中)
git clone https://gitee.com/tinylab/cloud-lab.git
# 執行容器
cd cloud-lab
tools/docker/run riscv-lab

第一次執行 選擇 1. (bash 模式)

  • 由於預設沒有密碼,網路連接方式不能運行。先選 1, 用 bash 登入(用 bash 登入不必密碼):
INFO: Please choose one of the login methods:

     1  bash
     2  vnc
     3  ssh
     4  webssh
     5  webvnc
INFO: Choose the login method: 1

     1  bash

INFO: Available login methods:

     bash vnc ssh webssh webvnc

INFO: Switch to another method:

     tools/docker/login LOGIN_METHOD

INFO: Running '/home/cyue/cloud-lab/tools/docker/bash'

ubuntu@riscv-lab:/labs/riscv-lab$ 
  • 再執行 sudo passwd ubuntu 設置初始用戶ubuntu 的密碼。
sudo passwd ubuntu

會要求盲打兩次密碼。

  • 之後可以換登入方式, 比如換 ssh,進入必須打密碼。
    在主機 console中, 進入 cd cloud-lab 目錄後執行:

    tools/docker/login ssh
  • 可直接選進入法:

    ./tools/docker/bash
    ./tools/docker/vnc
    ./tools/docker/webvnc
    ...

更新容器 apt倉庫, (升級, 可能很久)安裝 nano

sudo apt update
# sudo apt upgrade
sudo apt install nano

用戶目錄位置

  • 用戶目錄位置在 configs/riscv-lab/home/ubuntu/ ,可以把要給容器的用戶資料直接放到此位置。
  • 範例 LAB8 項目:
cp ~/FPGA/LAB8/lab8-code.zip configs/riscv-lab/home/ubuntu/
  • 在容器中解壓縮:
ubuntu@riscv-lab:/home/ubuntu$ mkdir lab8
ubuntu@riscv-lab:/home/ubuntu$ cd lab8
ubuntu@riscv-lab:/home/ubuntu/lab8$ unzip ../lab8-code.zip
Archive:  ../lab8-code.zip
  inflating: hello.s                 
  inflating: rect_step5.s            
  inflating: rect_step6.s            
  inflating: rect_step7.s            
  inflating: tri_step9.s             
  inflating: tri_4_8.s           
  inflating: tri_8_4.s           
  inflating: tri_subr.s              
  inflating: Makefile                
  inflating: test.sh                 
ubuntu@riscv-lab:/home/ubuntu/lab8$
  • 執行編譯所有案例(Makefile 管理 gcc )
make clean
make
  • 逐一運行:
./hello
./rect_step5
./rect_step6
./rect_step7
./tri_step9
./tri_4_8
./tri_8_4
./tri_subr
  • 測試 tri_4_8 tri_8_4星星數:
./test.sh 

重启容器

如果出现故障,可以直接删除或重启容器:

tools/docker/rerun riscv-lab

開機恢復容器

在关机以后可以直接恢复容器,通常在 1-2s 内能恢复:

$ tools/docker/run riscv-lab

3.3 选择登陆方式

运行起来后,会提醒选择登陆方式,比较建议选择 vnc。具体的 vnc client,在 Ubuntu 下推荐 vinagre,执行日志如下:

INFO: Please choose one of the login methods:     1 bash     2  vnc     3   ssh     4   webssh     5    webvncINFO: Choose the login method: 2     2    vnc...INFO: Available VNC Clients:     1    vinagre     2   xtightvncviewerINFO: Choose the vnc client: 1     1 vinagreINFO: Running 'vinagre --vnc-scale 172.20.20.12'

小技巧:如果要使用快捷方式 F11 启用或者退出 vinagre 的全屏模式,需要在 vinagre 的菜单中勾选 View 下面的 Keyboard shortcuts,这个设计非常奇葩,因为如果误选了 Fullscreen 而没有勾选快捷键的话只能执行 sudo pkill x11vnc 退出全屏。

上述登陆方式基本覆盖了各种需求,包括命令行、图形、本地访问、远程访问,大家可按需使用。首次选择后会记住,事后想更换,可以这样:

// 明确指定某种方式
tools/docker/bash
tools/docker/ssh
ools/docker/vnc riscv-lab$ tools/docker/webssh riscv-lab$ tools/docker/webvnc riscv-lab// 或者这样$ LOGIN=bash tools/docker/login riscv-lab// 又或者$ LOGIN=bash tools/docker/run riscv-lab

如果想用图形交互方式,相比较 vnc 而言,ssh 方式更为轻量级,可以类似这样直接启动图形软件:

$ tools/docker/ssh riscv-labubuntu@riscv-lab:/labs/riscv-lab
$ qterminal

qterminal 的窗口将直接在 X86_64 的主系统中显示,开销更低。

3.4 桌面显示效果

登陆以后,可以看到桌面有个 RISC-V Lab 图标,点击会直接启动控制台并采用 /labs/riscv-lab 作为工作目录。

之后执行了几个命令用于展示运行效果,完整截图如下:

RISC-V Lab 运行效果

如果需要与主系统交换数据,在主机侧,可以用 Cloud Lab 下的 labs/riscv-lab 目录,这个目录就对应 RISC-V Lab 中的 /labs/riscv-lab 工作目录,例如:

$ pwd~/Develop/cloud-lab$ ls labs/riscv-lab/COPYING  README.en.md  README.md

3.5 切换桌面环境

实际上,除了 xfce4,RISC-V Lab 也内置了 lxqt。

// 换成 lxqt$ DESKTOP=lxqt tools/docker/rerun riscv-lab// 换回 xfce$ DESKTOP=xfce tools/docker/rerun riscv-lab

从初步的验证来看,lxqt 启动比 xfce 略慢。

3.6 安装软件

在容器内,可以直接用 apt 安装软件:

$ tools/docker/ssh riscv-labubuntu@riscv-lab://labs/riscv-lab$ apt update -yubuntu@riscv-lab://labs/riscv-lab$ apt install -y dia

如果想重启以后还能用,可以保存一下:

$ tools/docker/savesha256:82538e418a35f5d7965f3eabf2a8830cafdc95d605b490c551c97a23ef1e5ef5INFO: new image name saved to tinylab/riscv-lab:local-20220727124605

后续即使是重启也会保留新安装的软件:

$ tools/docker/rerun riscv-lab

为方便后续升级社区的 RISC-V Lab 更新,建议本地的修改可以另外创建一个分支保存一下。

$ git checkout -b my-riscv-lab$ git commit -s -m 'my riscv lab' configs/riscv-lab/docker/name

想升级的时候切换回 master 分支即可。当然,大家也可以把新的软件需求提交到 这里 的 Issues 下面。

4 小结

RISC-V Lab 提供的这种跨架构运行 RISC-V Linux 桌面系统的方式非常方便:

  • 大多数情况下,无需购买 RISC-V 开发板等硬件
  • 当前 RISC-V 硬件的性能普遍较弱,这种跨架构运行的方式能充分发挥 X86_64 主机的性能优势,从而获得更高的开发效率
  • 无需复杂的安装过程,基础的开发环境一应俱全,安装软件也非常方便
  • 无需繁琐的交叉编译环境配置与使用,可以直接采用以往熟悉的本地开发方式
  • 在首次运行自动下载完镜像后,5 秒内就能启动,快速高效

咱们之前的 Linux Lab 完美支持了 RISC-V Linux 内核的开发,这里的 RISC-V Lab 则能进一步支持 RISC-V 系统与软件类的开发工作,比如说软件开发、软件优化与软件打包,甚至做汇编语言开发,指令架构研究和编译器开发等。

两者结合以后,大家就可以直接在现有的 X86_64 笔记本上轻松跨架构完成从内核、系统到软件的全栈技术开发。加上 Linux Lab Disk 后,可以进一步做到免安装,即插即跑。

除了 RISC-V Lab,我们也同步发布了 ARM Lab,用法完全一致,欢迎体验,如需其他架构的 Lab,欢迎联系微信号:tinylab。

最後修改日期: 2025 年 11 月 5 日

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。