@@ -6,12 +6,31 @@ Linux 是一个开源的类 Unix 操作系统内核,它是一个典型的多
66
77本次操作系统实验的最终目标也是实现一个能够和用户进行命令行交互的操作系统,因此建议你多尝试使用命令行来完成实验。
88
9+ 环境的准备工作主要包括:
10+ - 安装 Linux 系统
11+ - 需要安装和配置开发环境 (工具链)
12+ - Make: 构建脚本
13+ - Python: 构建脚本
14+ - QEMU: 提供虚拟硬件运行我们编写的 OS
15+ - gdb: 调试工具
16+ - gcc: Rust 开发环境的前置条件
17+ - Rust 开发环境及工具链
18+ - 检查工具版本,测试能否正常构建和调试
19+
20+ !!! tip "如果如下内容不足以让你完全配置好开发环境,可以参考 THU Rust 课程的 [ 环境配置] ( https://lab.cs.tsinghua.edu.cn/rust/environment/ ) "
21+
922## 安装 Linux 系统
1023
11- Linux 有许多发行版,这里出于环境一致性考虑,推荐使用 Ubuntu 24.04。
24+ Linux 有许多发行版,这里出于环境一致性考虑,推荐使用 Ubuntu 24.04 或 ** 麒麟 Linux Advanced Server V11(Kylin OS) ** 。
1225
1326其他发行版(如 Debian,Arch,Kali)也可以满足实验需求,但** 请注意内核版本、QEMU 版本都不应低于本次实验的参考标准** 。
1427
28+ !!! info "Kylin OS"
29+
30+ Kylin OS (银河麒麟高级服务器操作系统) 最初由国防科技大学主导研发,在中国 Linux 市场保持多年占有率第一名,广泛用于国内政府、企业和高校服务器环境,本实验对其提供完整支持。
31+
32+ 麒麟 Linux Advanced Server V11 既支持 x86-64,也支持 **aarch64(ARM64)** 架构。对于 aarch64 平台的麒麟 OS,通过 `qemu-system-x86_64` 进行**跨架构模拟**,即可运行本实验构建的 x86-64 操作系统镜像。
33+
1534### 使用 WSL2
1635
1736对于 Windows 10/11 的用户来说,可以使用 WSL(Windows Subsystem Linux)来安装 Linux 系统,WSL 意为面向 Windows 的 Linux 子系统,微软为其提供了很多特性方便我们使用,我们可以在 Windows 上运行 Linux 程序。
@@ -47,91 +66,143 @@ wsl --install -d Ubuntu
4766
4867你可以使用任何你喜欢的发行版,但请注意内核版本、QEMU 版本都不应低于实验的参考标准。
4968
50- ## 安装项目开发环境
51-
52- 在正确安装 Linux 系统后,需要安装和配置开发环境,包括 gcc, make, python, qemu 等。
69+ ## 使用系统包管理器安装依赖
5370
54- 为了保障 Linux 软件源的正常、快速访问,请参考 [ Ubuntu 软件仓库镜像使用帮助 ] ( https://help.mirrors.cernet.edu.cn/ubuntu/ ) 提供的文档进行软件源更换。
71+ === "Kylin OS"
5572
56- !!! note "校内镜像源"
73+ 麒麟 OS 使用基于 RPM 体系的 `yum` / `dnf` 作为包管理器,二者本质上都是 `dnf-3` 的软链接,所以选择用哪一个没有区别,但更推荐使用现代化的 `dnf` 而不是为了兼容旧版本所保留的 `yum`。
5774
58- 我们还提供有**仅供校内、不确保一定可用**的内网镜像源:[Matrix 软件源镜像服务](https://mirrors.matrix.moe)
75+ ```bash
76+ # 更新软件包缓存
77+ sudo dnf makecache
78+
79+ # 安装或更新
80+ sudo dnf install -y \
81+ gcc \
82+ gdb \
83+ make \
84+ mtools \
85+ python \
86+ qemu-system-x86_64
87+ ```
5988
60- 请注意,使用上述镜像站会让你享受到更好的下载速度,但你同时也需要**承担不可用时带来的风险,并具有自主更换到其他镜像站的能力**。
89+ === "Ubuntu"
6190
62- 1 . 使用以下命令更新 apt 源并进行软件升级:
91+ Ubuntu 属于 Debian 系,使用 ` apt` 作为包管理器。为了保障软件源的正常、快速访问,请参考 [Ubuntu 软件仓库镜像使用帮助](https://help.mirrors.cernet.edu.cn/ubuntu/) 提供的文档进行软件源更换。使用 [中山大学开源软件镜像加速服务](https://mirror.sysu.edu.cn) 可以在校内享受到更好的下载速度。
6392
6493 ```bash
94+ # 更新 apt 源
6595 sudo apt update && sudo apt upgrade
96+
97+ # 安装或更新
98+ sudo apt install -y \
99+ build-essential \
100+ gdb \
101+ qemu-system-x86
66102 ```
67103
68- 2. 安装 qemu 等工具:
104+ 在安装完成后,请使用如下命令,确保你的相关软件包** 不低于** 如下标准:
105+
106+ === "Kylin OS v11 (Swan25)"
107+
108+ 这里使用 Kylin Linux Advanced Server V11 (Swan25) x86-64 提供参考值。
69109
70110 ```bash
71- sudo apt install qemu-system-x86 build-essential gdb
111+ $ qemu-system-x86_64 --version
112+ QEMU emulator version 8.2.0 (qemu-8.2.0-27.p11.ky11)
113+
114+ $ gcc --version
115+ gcc (GCC) 12.3.1 (kylin 12.3.1-62.p03.ky11)
116+
117+ $ gdb --version
118+ GNU gdb (GDB) KylinOS 14.1-2.p03.ky11
72119 ```
73120
74- 3. 安装 rustup:
75-
76- !!! note " rustup 安装过程中存在一些可配置选项,请按照默认选项进行安装。"
121+ === "Ubuntu 24.04"
77122
78123 ```bash
79- curl --proto ' =https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
80- source " $HOME /.cargo/env"
124+ $ qemu-system-x86_64 --version
125+ QEMU emulator version 8.2.2 (Debian 1:8.2.2+ds-0ubuntu1.4)
126+
127+ $ gcc --version
128+ gcc (Ubuntu 13.2.0-23ubuntu4) 13.2.0
129+
130+ $ gdb --version
131+ GNU gdb (Ubuntu 15.0.50.20240403-0ubuntu1) 15.0.50.20240403-git
81132 ```
82133
83- !!! tip " 如果遇到了网络问题,请参考 [rsproxy.cn](https://rsproxy.cn/) 进行配置。 "
134+ === "Ubuntu 22.04 "
84135
85- 4. 按照仓库中的 ` rust-toolchain` 文件,安装对应的 Rust 工具链。
136+ ```bash
137+ $ qemu-system-x86_64 --version
138+ QEMU emulator version 6.2.0 (Debian 1:6.2+dfsg-2ubuntu6.15)
86139
87- !!! tip " 第一次在拥有 ` rust-toolchain.toml` 文件的目录下运行 ` cargo` 命令时,Rustup 会自动安装对应的工具链。"
140+ $ gcc --version
141+ gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
88142
89- 在安装完成后,请使用如下命令,确保你的相关软件包** 不低于** 如下标准:
143+ $ gdb --version
144+ GNU gdb (Ubuntu 12.1-0ubuntu1~22.04) 12.1
145+ ```
90146
91- 对于 Ubuntu 24.04:
147+ !!! warning "已知问题:aarch64 上的 GDB 调试"
92148
93- ` ` ` bash
94- $ rustc --version
95- rustc 1.92.0 (ded5c06cf 2025-12-08)
149+ 在 aarch64 平台上,`gdb` 无法直接调试 x86-64 程序。如需调试,需要安装 `gdb-multiarch`:
96150
97- $ rustc +nightly --version
98- rustc 1.94.0-nightly (1107bbac4 2025-12-26)
151+ ```bash
152+ # dnf 安装
153+ sudo dnf install gdb-multiarch
99154
100- $ qemu-system-x86_64 --version
101- QEMU emulator version 8.2.2 (Debian 1:8.2.2+ds-0ubuntu1.4)
155+ # apt 安装
156+ sudo apt install gdb-multiarch
102157
103- $ gcc --version
104- gcc (Ubuntu 13.2.0-23ubuntu4) 13.2.0
158+ # 使用
159+ gdb-multiarch target/x86_64-unknown-uefi/debug/...
160+ ```
105161
106- $ gdb --version
107- GNU gdb (Ubuntu 15.0.50.20240403-0ubuntu1) 15.0.50.20240403-git
108- ` ` `
162+ 参考 [实验调试指南](./debug.md) 使用 QEMU 的 GDB stub 进行远程调试。
109163
110- 对于 Ubuntu 22.04:
164+ ## 安装 Rust 开发环境与工具链
111165
112- ` ` ` bash
113- $ rustc --version
114- rustc 1.92.0 (ded5c06cf 2025-12-08)
166+ 1 . 安装 rustup:
115167
116- $ rustc +nightly --version
117- rustc 1.94.0-nightly (1107bbac4 2025-12-26)
168+ !!! note "rustup 安装过程中存在一些可配置选项,请按照默认选项进行安装。"
118169
119- $ qemu-system-x86_64 --version
120- QEMU emulator version 6.2.0 (Debian 1:6.2+dfsg-2ubuntu6.15)
170+ ``` bash
171+ curl --proto ' =https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
172+ source " $HOME /.cargo/env"
173+ ```
121174
122- $ gcc --version
123- gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
175+ !!! tip " 如果遇到了网络问题,请参考 [rsproxy.cn](https://rsproxy.cn/) 进行配置。"
124176
125- $ gdb --version
126- GNU gdb (Ubuntu 12.1-0ubuntu1~22.04) 12.1
127- ` ` `
177+ 2. 按照仓库中的 ` rust-toolchain` 文件,安装对应的 Rust 工具链。
128178
129- !!! tip " 如果上述内容不足以让你完全配置好开发环境,可以参考 THU Rust 课程的 [环境配置](https://lab.cs.tsinghua.edu.cn/rust/environment/)"
179+ !!! tip " 第一次在拥有 ` rust-toolchain.toml` 文件的目录下运行 ` cargo` 命令时,Rustup 会自动安装对应的工具链。"
180+
181+ 3. 检查编译器版本** 不低于** 如下标准:
182+
183+ ` ` ` bash
184+ $ rustc --version
185+ rustc 1.93.1 (01f6ddf75 2026-02-11)
186+
187+ $ rustc +nightly --version
188+ rustc 1.96.0-nightly (38c0de8dc 2026-02-28)
189+ ` ` `
130190
131191# # 验证工作
132192
133193在安装完成之后,你应该能正常使用 ` make` 和 ` python` 命令,并用它们来运行项目的编译、运行脚本。
134194
195+ ` ` ` bash
196+ cd src/0x00
197+ python3 ysos.py build # 或 make build
198+ ` ` `
199+
200+ !!! success " 预期成功输出"
201+
202+ 如果能够看到 ` cargo build` 的编译输出,并在 ` esp/` 目录下生成 ` .efi` 文件,说明环境配置成功。
203+
204+ 更完整地验证能否编译、运行、调试内核将在[实验一:操作系统的启动](../labs/0x01/tasks.md)中展开。
205+
135206# # 参考资料
136207
137208你可以通过下面的一些链接来对命令行的使用进行学习,也可以把它们作为参考文档随用随取:
0 commit comments