泰晓科技 -- 聚焦 Linux - 追本溯源,见微知著!
网站地址:https://tinylab.org

基于泰晓RISC-V实验箱的Linux公开课
请稍侯

Linux Lab 新增 RISC-V RVOS 操作系统课程实验支持

Wu Zhangjin 创作于 2021/08/29

By Falcon of TinyLab.org Aug 29, 2021

今年上半年,中科院软件所下属实验室开发了一门基于 RISC-V 指令集架构的操作系统视频公开课,配套完备的实验案例:

开发该课程的汪老师授课经验非常丰富。RVOS 课程不仅讲解生动,准备的实验案例也非常完善,而且还提供了配套的实验环境+ tools 包。

不过汪老师反馈说部分同学下载 tools 包以后,存在依赖缺失,无法正常运行的情况,看能否直接协助适配 Linux Lab,然后社区就花了两天抽空进行了适配,期间解决了多个 Bug。

适配完 Linux Lab 以后,无需再从微盘或云盘下载数百 M 的 tools,也无需下额外的镜像,也不用因为环境兼容问题而烦恼了。大家直接在自己机器上安装好 Linux Lab 就好,不挑系统(三大主流桌面系统都支持),只需要 Docker(Windows 下建议用 WSL)。

安装完 Linux Lab 以后,进入到 src/examples 目录下,通过下述三条命令即可体验适配完 Linux Lab 的 RVOS 实验代码:

$ git clone https://gitee.com/tinylab/rvos-lab rvos-lab
$ cd rvos-lab/code/os
$ make run

根据提示,执行完一个按 “CTRL+A X” 即可执行下一个。也可以参照代码仓库中的文档逐个开展实验。

部分实验效果摘录如下:

ubuntu@linux-lab:/labs/linux-lab$ cd src/examples
ubuntu@linux-lab:/labs/linux-lab/src/examples$ git clone https://gitee.com/wuzhangjin/riscv-operating-system-mooc rvos-lab
Cloning into 'rvos-lab'...
remote: Enumerating objects: 493, done.
remote: Counting objects: 100% (493/493), done.
remote: Compressing objects: 100% (271/271), done.
remote: Total 493 (delta 266), reused 404 (delta 214), pack-reused 0
Receiving objects: 100% (493/493), 40.52 MiB | 3.86 MiB/s, done.
Resolving deltas: 100% (266/266), done.

ubuntu@linux-lab:/labs/linux-lab/src/examples$ cd rvos-lab/code/os/

ubuntu@linux-lab:/labs/linux-lab/src/examples/rvos-lab/code/os$ make run
begin run ALL exercises for os samples .......................
for dir in 00-bootstrap 01-helloRVOS 02-memanagement 03-contextswitch 04-multitask 05-traps 06-interrupts 07-hwtimer 08-preemptive 09-lock 10-swtimer 11-syscall ; do make -C $dir run; done
make[1]: Entering directory '/labs/linux-lab/src/examples/riscv-operating-system-mooc/code/os/00-bootstrap'
riscv64-linux-gnu-gcc -nostdlib -fno-builtin -march=rv32ima -mabi=ilp32 -g -Wall -fno-PIE -mcmodel=medany -DMEM_H -c -o start.o start.S
riscv64-linux-gnu-gcc -nostdlib -fno-builtin -march=rv32ima -mabi=ilp32 -g -Wall -fno-PIE -mcmodel=medany -DMEM_H -c -o kernel.o kernel.c
riscv64-linux-gnu-gcc -nostdlib -fno-builtin -march=rv32ima -mabi=ilp32 -g -Wall -fno-PIE -mcmodel=medany -DMEM_H -Ttext=0x80000000 -o os.elf start.o kernel.o
riscv64-linux-gnu-objcopy -O binary os.elf os.bin
Press Ctrl-A and then X to exit QEMU
------------------------------------
QEMU: Terminated
make[1]: Leaving directory '/labs/linux-lab/src/examples/riscv-operating-system-mooc/code/os/00-bootstrap'
make[1]: Entering directory '/labs/linux-lab/src/examples/riscv-operating-system-mooc/code/os/01-helloRVOS'
riscv64-linux-gnu-gcc -nostdlib -fno-builtin -march=rv32ima -mabi=ilp32 -g -Wall -fno-PIE -mcmodel=medany -DMEM_H -c -o start.o start.S
riscv64-linux-gnu-gcc -nostdlib -fno-builtin -march=rv32ima -mabi=ilp32 -g -Wall -fno-PIE -mcmodel=medany -DMEM_H -c -o kernel.o kernel.c
riscv64-linux-gnu-gcc -nostdlib -fno-builtin -march=rv32ima -mabi=ilp32 -g -Wall -fno-PIE -mcmodel=medany -DMEM_H -c -o uart.o uart.c
riscv64-linux-gnu-gcc -nostdlib -fno-builtin -march=rv32ima -mabi=ilp32 -g -Wall -fno-PIE -mcmodel=medany -DMEM_H -Ttext=0x80000000 -o os.elf start.o kernel.o uart.o
riscv64-linux-gnu-objcopy -O binary os.elf os.bin
Press Ctrl-A and then X to exit QEMU
------------------------------------
Hello, RVOS!
...

快来学习吧。

连 Linux Lab 也不想安装的同学们,可以直接陶一支免安装即插即用、1 分钟内即可开展实验的 Linux Lab Disk:某宝检索“Linux Lab真盘”即可,已适配 Deepin 20.2, Ubuntu 18.04/20.04/21.04。

Linux Lab Disk使用效果

Linux Lab Disk实展示

如果大家觉得学完 RVOS 还不过瘾,其实还可以直接用 Linux Lab 来开展 RISC-V Linux 内核实验:

$ make B=riscv64/virt
$ make kernel
$ make boot

另外,Linux Lab 其实也已经支持市面几乎所有知名的 Linux 图书所采用的 Linux 内核版本,大家看书的时候别忘了启动 Linux Lab 把实验做一做:

BooksVersionsAuthors
LDD3v2.6.10Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman
LKD3v2.6.34.9Robert Love
ULK3v2.6.11.12Marco Cesati, Daniel P. Bovet
PLKAv2.6.24.7Wolfgang Mauerer

Books’ fullname and their resources:

以上为部分知名 Linux 图书列表,实际上 Linux Lab 支持的 Linux 内核版本覆盖 Linux v0.11, v2.6.x 一直到最新的 v5.x,仅 i386/pc 这块板子已经适配的内核列表就有这么多:

v2.6.10
v2.6.11.12
v2.6.12.6
v2.6.21.5
v2.6.24.7
v2.6.34.9
v2.6.35.14
v2.6.36
v4.6.7
v5.1
v5.2

实际上,对于同一块板子,更多的版本也只要简单的用 kernel-clone 功能就可以新增。

我们还支持包括龙芯 Linux、ARM Linux 等相关图书在内的其他书籍和课程,欢迎 Linux、C、汇编 等相关图书和视频课程作者联系我们免费协助适配,也欢迎社区同学们留言提出自己希望适配的相关图书和课程,或者直接自行开展适配工作,适配以后可以联系社区的 @tinylab 微信号申请一支 Linux Lab Disk 哈。

当然,图书或课程作者们也可以在开发课程的时候就采用 Linux Lab 开发课程配套实验案例,这样就不用浪费时间去答疑跟课程主体无关的实验环境安装部分,专注于内容设计就好,学生们在实验的时候也不会被各种杂七杂八的事情干扰,直接聚焦课程知识点、专心做实验就好。采用 Linux Lab 开发课程实验过程中如果遇到任何问题,也可以联系 Linux Lab 开源项目开发人员提供协助,联系方式还是 @tinylab 微信号。

欢迎感兴趣的同学们分享 RVOS 视频课程以及上述适配好的实验案例给周边的同学们。

再次感谢软件所与汪老师的精彩课程分享,也感谢社区小伙伴的辛苦适配工作。



Read Related:

Read Latest: