2023 秋冬季开源操作系统训练营日志(二)

  • 2023年 10月14日
  • 读完约需 3 分钟
  • • 
  • 标签: 
  • oscamp
  • rust
  • riscv
  • 最后更新于 2023年 10月14日

吐槽

国内的运维和程序员,天生就比别人难度高。起码你得会搭梯子,然后是各种地方运用梯子,docker、k8s、github、google…建议各位通过软路由分流,这样实验环境就不用担心各种下载超时,真的很费时间和耐心,费人。

记录点

按第二阶段的官方说明,将实验源码克隆到本地。官方推荐的实验环境是 ubunt20.04 + qemu-7.0.0。我本机是 Gentoo Linux,滚动更新,目前的版本情况如下:

软件名称版本
qemu8.1.1
podman4.7.1
rust1.75-nightly

于是为做了如下的尝试:

docker还是podman?

官方的 Makefile 里,默认是用 docker 命令来执行 make docker,我修改成自动检测是否安装了 podman, 是的话用 podman,否则用 docker,

Makefile:

DOCKER_NAME ?= rcore-tutorial-v3
DOCKER_PROG := $(shell command -v podman 2> /dev/null || echo docker)

.PHONY: docker build_docker
 
docker:
 ${DOCKER_PROG} run --rm -it -v ${PWD}:/mnt -w /mnt ${DOCKER_NAME} bash

build_docker: 
 ${DOCKER_PROG} build -t ${DOCKER_NAME} .

fmt:
 cd os ; cargo fmt;  cd ..

qemu-7.2是个分水岭

测试了一堆版本:7.0.0、7.1.0、7.2.6( 版本 7 目前最新的 release )、8.0.5( 版本 8 目前最新的 release )、8.1.1。发现如下规律:

  • qemu 版本小于 7.2,官方示例 ch1 可以正常运行
  • qemu 版本从 7.2 开始到最新,直接采用官方 rustsbi 会不显示虚机的输出,这时用其他终端通过 ps 命令可以看到实际上 qemu-system-riscv64 已经在执行,ctrl+c 无法中断,只能 kill -9 杀掉。如果用 rustsbi 的 github 下载的 Prereleased 2023-03-06 版本,就能正常运行。该版本的发布记录有这么一条,个人猜测与这有关:

    Fix dtb parsing for qemu 7.2

ubuntu 20.04还是latest

我都尝试了,都可以。

docker还是实体机

个人决定后续主要在 Gentoo Linux 环境继续实验,如果踩坑再切换 docker 环境验证。

明天开始继续,希望一切顺利。