100 lines
4.0 KiB
Markdown
100 lines
4.0 KiB
Markdown
**从零开始为 RISC-V 构建一个 Linux 系统**
|
||
|
||
<!-- TOC -->
|
||
|
||
- [1. 简介](#1-简介)
|
||
- [2. 运行环境](#2-运行环境)
|
||
- [3. 构建和使用说明](#3-构建和使用说明)
|
||
- [3.1. 批量下载软件包源码压缩包](#31-批量下载软件包源码压缩包)
|
||
- [3.2. 构建](#32-构建)
|
||
- [3.3. 运行](#33-运行)
|
||
- [4. 致谢](#4-致谢)
|
||
|
||
<!-- /TOC -->
|
||
|
||
# 1. 简介
|
||
|
||
本仓库包含课程《从零开始为 RISC-V 构建一个 Linux 系统》的配套课件和构建脚本代码。该课程用于教学演示如何从零开始为 RISC-V 平台构建一个 Linux 系统。采用 GPL v2 许可证发布(具体请阅读本仓库根目录下的 [LICENSE 文件](./LICENSE))。
|
||
|
||
本仓库目录文件介绍:
|
||
|
||
- package: 目录,用于存放每个软件包的构建素材(譬如补丁文件)和构建脚本。
|
||
- slides: 目录,用于存放本课程对应的课件(pdf)。
|
||
- support:目录,用于存放构建中会用到的一些辅助脚本和素材文件。
|
||
- .gitignore: Git 配置文件,用于指定哪些文件或目录应该被 Git 忽略,不纳入版本控制。
|
||
- build.sh: 执行 `make` 时会执行的脚本文件。
|
||
- LICENSE: 本仓库的发布许可证文件。
|
||
- Makefile: make 文件。
|
||
- README.md: 本文件。
|
||
- source.sh: 执行 `make source` 时会执行的脚本文件。
|
||
|
||
执行构建过程中还会创建以下目录,但不作为本仓库的一部分。
|
||
|
||
- dl: 目录,用于存放网络下载的软件包源码压缩包。
|
||
- output: 目录,用于存放构建的输出,即本课程定义的 `${OUTPUT_DIR}`。
|
||
|
||
**注意:由于本仓库代码出于演示 Step by Step 的修改过程的目的,main 分支的 commit 仅用于演示步骤而不反应实际 git 提交历史,所以在同步本地仓库时不支持简单的 pull。建议每次同步本地时直接采用完整的 clone 方式**。
|
||
|
||
# 2. 运行环境
|
||
|
||
本仓库提供了对应课程内容的参考构建脚本,构建脚本在 Ubuntu 22.04 LTS 和 Ubuntu 24.04 LTS 上验证通过。有关运行环境的具体要求可以参考课件 “第 3 章 构建 Linux 系统之前的准备工作” 的 02 部分:“构建环境准备” 的介绍。
|
||
|
||
也欢迎大家在其他 Linux 发行版上尝试,原理上本仓库的参考构建脚本并不局限于 Ubuntu 系统。
|
||
|
||
# 3. 构建和使用说明
|
||
|
||
本节运行命令时假设都在 `${PROJECT_DIR}`,即本仓库所在路径下运行,不再赘述。
|
||
|
||
本仓库的构建命令无需 root 权限。
|
||
|
||
## 3.1. 批量下载软件包源码压缩包
|
||
|
||
批量下载软件包源码压缩包的命令如下。注意:中途可能失败,多半是因为网络超时所致,可以多试几次以下命令,直到全部成功。
|
||
|
||
```shell
|
||
$ make source
|
||
```
|
||
|
||
如果仍然无法完整下载软件包,也可以去 oerv 仓库克隆一份(确保在 `${PROJECT_DIR}` 下),执行如下命令:
|
||
|
||
```shell
|
||
$ git clone --depth 1 --branch main https://git.oerv.ac.cn/openRuyi-tutorials/packages-for-build-linux-system-from-scratch.git dl
|
||
```
|
||
|
||
## 3.2. 构建
|
||
|
||
本仓库的主分支 main 上有 6 个 commit,分别对应以下步骤:
|
||
|
||
```
|
||
Step6: add python and snake.
|
||
Step5: add vim.
|
||
Step4: enhanced shell with bash.
|
||
Step3: enhanced with coreutiles.
|
||
Step2: enhanced with sysvinit
|
||
Step1: build with busybox.
|
||
```
|
||
|
||
学习者可以 checkout 到任意一个 commit 并运行以下命令进行构建。注意:本仓库的构建脚本不支持增量构建,只支持从零开始一次性构建(实际上执行 `make` 内部也会默认先执行 `make clean`)。
|
||
|
||
```shell
|
||
$ make clean
|
||
$ make
|
||
```
|
||
|
||
## 3.3. 运行
|
||
|
||
构建成功后可以进入 `${IMAGES_DIR}` 执行脚本,运行 QEMU 模拟器并加载我们制作的 Linux 系统。
|
||
|
||
```shell
|
||
$ cd output/images/
|
||
$ ./start-qemu.sh
|
||
```
|
||
|
||
登录系统的用户名是 root,无密码。
|
||
|
||
关机可以在登录系统后在控制台中输入 poweroff 命令,或者直接 "Ctrl+A X" 强制退出 QEMU(所谓 "Ctrl+A X" 是指同时按下 Ctrl 和 A,同时松开后再按 X)。
|
||
|
||
# 4. 致谢
|
||
|
||
本仓库的构建脚本参考了 [Buildroot (2025.08.1)](https://buildroot.org/)。在此表示衷心感谢!
|