Description for quiz

Signed-off-by: Chen Wang <unicorn_wang@outlook.com>
This commit is contained in:
2026-04-01 18:24:57 +08:00
parent 0c0af2cdac
commit 21070af52e

163
QUIZ4MOOC.md Normal file
View File

@@ -0,0 +1,163 @@
学习完 [《从零开始为 RISC-V 构建一个 Linux 系统》][1] 后的小测试
慕课 《从零开始为 RISC-V 构建一个 Linux 系统》(下文简称 MOOC为课程提供了配套的构建脚本代码仓库在<https://github.com/openRuyi-Tutorials/build-linux-system-from-scratch>。这套构建脚本参考了 [Buildroot][2],具体对应的是 tag 版本为 2025.08.1 的代码。
设计测验如下,供评估学习效果参考。
测验总分 100 分,分为五个任务
| 任务号 | 满分 | 前置任务 |
|--------|------|----------|
| 任务 1 | 60 | 无 |
| 任务 2 | 10 | 任务 1 |
| 任务 3 | 15 | 任务 1 |
| 任务 4 | 10 | 任务 1 |
| 任务 5 | 5 | 无 |
# 任务 1
- 任务描述:参考仓库分支 <https://git.openruyi.cn/openRuyi-tutorials/buildroot/src/branch/quiz-mooc/>, 将 MOOC 的构建脚本中涉及的软件包的版本升级到和 Buildroot 的 tag 版本 2026.02 使用的软件包版本对齐。大致需要升级如下软件包:
- 升级 coreutils 到 9.10
- 升级 e2fsprogs 到 1.47.3
- 升级 expat 到 2.7.4
- 升级 fakeroot 到 1.37.1.2
- 升级 libzlib 到 1.3.2
- 升级 libxcrypt 到 4.5.2
- 升级 linux 到 6.19.5
- 升级 m4 到 1.4.21
- 升级 ncurses 到 6.6-20251231
- 升级 python3 到 3.14.3
- 升级 util-linux 到 2.41.3
- 升级 vim 到 9.1.2148
- 新增 libopenssl 3.6.1
同时为简化任务,升级过程中做如下简化工作:
- 取消从源码自己构建交叉工具链,直接使用 Buildroot 预置的交叉工具链。
- 和 MOOC 类似,不从源码构建 QEMU而是使用本地自己安装的 QEMU建议版本在 8.2.2 及以上)
- 任务检验标准:
所有修改通过 PR 方式提交到 <https://github.com/openRuyi-Tutorials/build-linux-system-from-scratch>。提交 PR 时注意:
- 改动基于仓库的 main 分支开发,尽量复用原有逻辑和框架。如有额外改动请在 PR 描述中说明。
- 使用自己的开发分支,不要在 main 分支上直接提交 commit。
- 为了方便 review如果修改涉及不同模块不同软件包的每个修改一个 commit不要将所有改动作为一个 commit 整体提交。
- 在 commit 的描述中给出简单的修改说明,中英文皆可。简单的话一句话即可,不用重复代码的修改细节,所有的修改说明的出发点是侧重于阐述修改的原因,以及除了代码外需要额外说明的部分。
- 注意代码风格,特别是代码缩进等。代码整洁,不要合入临时代码,临时测试用代码以及无效的注释等垃圾代码。
除了代码提交外,对于结果的检验要求如下:执行 MOOC 代码仓库中的 `make` 命令后可以完整地从 0 开始构建一个系统,上述需要升级和新增的软件包都构建无误。同样执行 `start-qemu.sh` 脚本可以在 QEMU 中启动系统。登录进入系统后验证软件工作正常,包括:
- 检查 SysV 是否正常工作,检查方法:
查看 SysV 版本:
```shell
# init --version
SysV init version: 3.14
```
尝试关机:
```shell
# init 0
```
尝试重启:
```shell
# init 6
```
- 检查当前 Shell 是否是 bash检查方法
```shell
# echo $SHELL
/bin/bash
```
执行 `bash --version` 能够输出 bash 的版本信息和版权信息如下:
```shell
# bash --version
GNU bash, version 5.2.37(1)-release (riscv64-buildroot-linux-gnu)
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
```
- 检查 coreutils 工作正常,检查方法:
```shell
# ls --help
Usage: ls [OPTION]... [FILE]...
[...... 省略]
Report bugs to: bug-coreutils@gnu.org
GNU coreutils home page: <https://www.gnu.org/software/coreutils/>
General help using GNU software: <https://www.gnu.org/gethelp/>
Report any translation bugs to <https://translationproject.org/team/>
Full documentation <https://www.gnu.org/software/coreutils/ls>
or available locally via: info '(coreutils) ls invocation'
```
应该会看到输出中最后会出现 "GNU coreutils" 字样。
- 检查 vi/vim 工作正常。检查方法:
```shell
# vi
```
或者
```shell
# vim
```
应该进入 vim 欢迎界面,并看到 "VIM - Vi IMproved" 字样。并能正常使用 vi 编辑和退出。
- 检查 Python3 工作正常。检查方法:
```shell
# python3
Python 3.14.3 (main, Apr 1 2026, 14:14:37) [GCC 15.1.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
```
可以进入 Python 控制台,输入 `quit()` 可以退出 Python 控制台。
可以运行 snake 游戏。
```shell
# python3 /usr/games/snake.py
```
# 任务 2
- 任务描述:在 “任务 1” 完成的基础上为 MOOC 的文件系统添加一个软件包,软件包的范围局限于 Buildroot 已支持的软件包menuconfig 中 “Target packages” 中所列出的软件包,注意不要包括 “Package managers” 和 systemd。另外注意按照 Buildroot 的风格以及 MOOC 的风格,该软件包的构建依赖和运行依赖尽量不要对 host 的原有 native 环境有依赖,也就是说除了少部分 native 环境中的 pre-installed 软件外,所有的该软件包的构建依赖和运行依赖都需要我们自己从源码开始构建和安装到 host 和 target 中。
- 任务检验标准:代码提交要求和 “任务 1” 类似。此外请在 PR 中给出新增软件包的简单说明以及使用和运行说明。
# 任务 3
- 任务描述:在 “任务 1” 完成的基础上为 MOOC 的文件系统添加 systemd 软件包。systemd 的版本以及其构建依赖和运行依赖的软件包的版本需要和 Buildroot 的 tag 版本 2026.02 使用的软件包版本对齐。注意按照 Buildroot 的风格以及 MOOC 的风格,该软件包的构建依赖和运行依赖尽量不要对 host 的原有 native 环境有依赖,也就是说除了少部分 native 环境中的 pre-installed 软件外,所有的该软件包的构建依赖和运行依赖都需要我们自己从源码开始构建和安装到 host 和 target 中。(注:可以参考 Buildroot 的做法)。
- 任务检验标准:代码提交要求和 “任务 1” 类似。对于结果的检验要求如下:执行 MOOC 代码仓库中的 `make` 命令后可以完整地从 0 开始构建一个系统,同样执行 `start-qemu.sh` 脚本可以在 QEMU 中启动系统。登录进入系统后验证软件工作正常,其中过程中应该看到 systemd 的正常输出。
# 任务 4
- 任务描述:在 “任务 3” 完成的基础上为 MOOC 的文件系统添加 简介microdnf 软件包。注意按照 Buildroot 的风格以及 MOOC 的风格,该软件包的构建依赖和运行依赖尽量不要对 host 的原有 native 环境有依赖,也就是说除了少部分 native 环境中的 pre-installed 软件外,所有的该软件包的构建依赖和运行依赖都需要我们自己从源码开始构建和安装到 host 和 target 中。
microdnf 简介microdnf 是一个用 C 语言编写的轻量级包管理器,可以看作是 dnf 的精简版实现。它专为容器和最小化环境设计旨在以极小的开销完成基本的软件包管理任务。microdnf 的官方网站和源码托管在 GitHub 上,具体地址是:<https://github.com/rpm-software-management/microdnf>。
- 任务检验标准:代码提交要求和 “任务 1” 类似。对于结果的检验要求如下:执行 MOOC 代码仓库中的 `make` 命令后可以完整地从 0 开始构建一个系统systemd 的版本和 Buildroot 的 tag 版本 2026.02 使用的软件包版本对齐。同样执行 `start-qemu.sh` 脚本可以在 QEMU 中启动系统。登录进入系统后验证软件 microdnf 工作正常,并且可以用它从 openRuyi 的软件源(<https://boat.openruyi.cn/stable/rva23>)下载软件包 。
# 任务 5
- 任务描述:
- 任务检验标准:
[1]: https://git.openruyi.cn/openRuyi-tutorials/build-linux-system-from-scratch/src/branch/main/README.md
[2]: https://buildroot.org/