RISC-V docker 安裝使用
需要安裝工具
- docker
- 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 作为工作目录。
之后执行了几个命令用于展示运行效果,完整截图如下:

如果需要与主系统交换数据,在主机侧,可以用 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。
留言