mirror of
https://github.com/LearningOS/rust-based-os-comp2022.git
synced 2026-02-11 14:15:03 +08:00
deploy: a48999b466
This commit is contained in:
@@ -308,6 +308,21 @@
|
||||
<p>Windows10 用户可以通过系统内置的 <strong>WSL2</strong> 虚拟机(请不要使用 WSL1)来安装 Ubuntu 18.04 / 20.04 。读者请自行在互联网上搜索相关安装教程,或 <a class="reference external" href="https://docs.microsoft.com/zh-cn/windows/wsl/install-win10#step-4---download-the-linux-kernel-update-package">适用于 Linux 的 Windows 子系统安装指南 (Windows 10)</a> 。</p>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">注解</p>
|
||||
<p><strong>基于github classroom的开发方式</strong></p>
|
||||
<p>基于github classroom,可方便建立开发用的git repository,并可基于github的 codespace (在线版ubuntu +vscode)在线开发使用。整个开发环境仅仅需要一个网络浏览器。</p>
|
||||
<ol class="arabic simple">
|
||||
<li><p>在网络浏览器中用自己的 github id 登录 github.com</p></li>
|
||||
<li><p>接收 <a class="reference external" href="https://classroom.github.com/a/hnoWuKGF">第一个实验练习 setup-env-run-os1 的github classroom在线邀请</a> ,根据提示一路选择OK即可。</p></li>
|
||||
<li><p>完成第二步后,你的第一个实验练习 setup-env-run-os1 的 github repository 会被自动建立好,点击此github repository的链接,就可看到你要完成的第一个实验了。</p></li>
|
||||
<li><p>在你的第一个实验练习的网页的中上部可以看到一个醒目的 <cite>code</cite> 绿色按钮,点击后,可以进一步看到 <cite>codespace</cite> 标签和醒目的 <cite>create codesapce on main</cite> 绿色按钮。请点击这个绿色按钮,就可以进入到在线的ubuntu +vscode环境中</p></li>
|
||||
<li><p>再按照下面的环境安装提示在vscode的 <cite>console</cite> 中安装配置开发环境:rustc,qemu等工具。</p></li>
|
||||
<li><p><strong>重要:</strong> 在vscode的 <cite>console</cite> 中执行 <cite>make setupclassroom</cite> (该命令仅执行一次)配置githubclassroom 自动评分功能。</p></li>
|
||||
<li><p>然后就可以基于在线vscode进行开发、运行、提交等完整的实验过程了。</p></li>
|
||||
</ol>
|
||||
<p>上述的3,4,5步不是必须的,你也可以线下本地开发。</p>
|
||||
</div>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">注解</p>
|
||||
<p><strong>Docker 开发环境</strong></p>
|
||||
<p>感谢 dinghao188 和张汉东老师帮忙配置好的 Docker 开发环境,进入 Docker 开发环境之后不需要任何软件工具链的安装和配置,可以直接将 tutorial 运行起来,目前应该仅支持将 tutorial 运行在 Qemu 模拟器上。</p>
|
||||
<p>使用方法如下(以 Ubuntu18.04 为例):</p>
|
||||
@@ -441,8 +456,9 @@ qemu-riscv64 --version
|
||||
</div>
|
||||
<div class="section" id="rcore-tutorial">
|
||||
<h2>试运行 rCore-Tutorial<a class="headerlink" href="#rcore-tutorial" title="永久链接至标题">¶</a></h2>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>git clone https://github.com/LearningOS/rust-based-os-comp2022.git
|
||||
<span class="nb">cd</span> rust-based-os-comp2022
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ git clone https://github.com/LearningOS/rust-based-os-comp2022.git
|
||||
$ <span class="nb">cd</span> rust-based-os-comp2022
|
||||
$ make setupclassroom //注意:这一步很重要,是用于github classroom自动评测你的工作。这一步只需在首次克隆项目仓库时执行一次,以后一般就不用执行了,除非 .github/workflows/classroom.yml发生了变化。
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>我们先运行不需要处理用户代码的裸机操作系统 <code class="docutils literal notranslate"><span class="pre">os1</span></code> :</p>
|
||||
|
||||
@@ -23,6 +23,24 @@ OS 环境配置
|
||||
|
||||
Windows10 用户可以通过系统内置的 **WSL2** 虚拟机(请不要使用 WSL1)来安装 Ubuntu 18.04 / 20.04 。读者请自行在互联网上搜索相关安装教程,或 `适用于 Linux 的 Windows 子系统安装指南 (Windows 10) <https://docs.microsoft.com/zh-cn/windows/wsl/install-win10#step-4---download-the-linux-kernel-update-package>`_ 。
|
||||
|
||||
|
||||
.. note::
|
||||
|
||||
**基于github classroom的开发方式**
|
||||
|
||||
基于github classroom,可方便建立开发用的git repository,并可基于github的 codespace (在线版ubuntu +vscode)在线开发使用。整个开发环境仅仅需要一个网络浏览器。
|
||||
|
||||
1. 在网络浏览器中用自己的 github id 登录 github.com
|
||||
2. 接收 `第一个实验练习 setup-env-run-os1 的github classroom在线邀请 <https://classroom.github.com/a/hnoWuKGF>`_ ,根据提示一路选择OK即可。
|
||||
3. 完成第二步后,你的第一个实验练习 setup-env-run-os1 的 github repository 会被自动建立好,点击此github repository的链接,就可看到你要完成的第一个实验了。
|
||||
4. 在你的第一个实验练习的网页的中上部可以看到一个醒目的 `code` 绿色按钮,点击后,可以进一步看到 `codespace` 标签和醒目的 `create codesapce on main` 绿色按钮。请点击这个绿色按钮,就可以进入到在线的ubuntu +vscode环境中
|
||||
5. 再按照下面的环境安装提示在vscode的 `console` 中安装配置开发环境:rustc,qemu等工具。
|
||||
6. **重要:** 在vscode的 `console` 中执行 `make setupclassroom` (该命令仅执行一次)配置githubclassroom 自动评分功能。
|
||||
7. 然后就可以基于在线vscode进行开发、运行、提交等完整的实验过程了。
|
||||
|
||||
上述的3,4,5步不是必须的,你也可以线下本地开发。
|
||||
|
||||
|
||||
.. note::
|
||||
|
||||
**Docker 开发环境**
|
||||
@@ -188,8 +206,9 @@ Qemu 模拟器安装
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
git clone https://github.com/LearningOS/rust-based-os-comp2022.git
|
||||
cd rust-based-os-comp2022
|
||||
$ git clone https://github.com/LearningOS/rust-based-os-comp2022.git
|
||||
$ cd rust-based-os-comp2022
|
||||
$ make setupclassroom //注意:这一步很重要,是用于github classroom自动评测你的工作。这一步只需在首次克隆项目仓库时执行一次,以后一般就不用执行了,除非 .github/workflows/classroom.yml发生了变化。
|
||||
|
||||
我们先运行不需要处理用户代码的裸机操作系统 ``os1`` :
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
|
||||
$ git clone https://github.com/LearningOS/rust-based-os-comp2022.git
|
||||
$ cd rust-based-os-comp2022/
|
||||
$ make setupclassroom //注意:这一步很重要,是用于github classroom自动评测你的工作。这一步只需在首次克隆项目仓库时执行一次,以后一般就不用执行了,除非 .github/workflows/classroom.yml发生了编号。
|
||||
$ make setupclassroom //注意:这一步很重要,是用于github classroom自动评测你的工作。这一步只需在首次克隆项目仓库时执行一次,以后一般就不用执行了,除非 .github/workflows/classroom.yml发生了变化。
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -37,14 +37,13 @@
|
||||
上述的3,4,5步不是必须的,你也可以线下本地开发。
|
||||
|
||||
|
||||
本章我们引入了用户程序。为了将内核与应用解耦,我们将二者分成了两个仓库,分别是存放内核程序的 ``rCore-Tutorial-Code-20xxx`` (下称代码仓库,最后几位 x 表示学期)与存放用户程序的 ``rCore-Tutorial-Test-20xxx`` (下称测例仓库)。 你首先需要进入代码仓库文件夹并 clone 用户程序仓库(如果已经执行过该步骤则不需要再重复执行):
|
||||
本章我们引入了用户程序。
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ git clone https://github.com/LearningOS/rust-based-os-comp2022.git
|
||||
$ cd rust-based-os-comp2022
|
||||
|
||||
上面的指令会将测例仓库克隆到代码仓库下并命名为 ``user`` ,注意 ``/user`` 在代码仓库的 ``.gitignore`` 文件中,因此不会出现 ``.git`` 文件夹嵌套的问题,并且你在代码仓库进行 checkout 操作时也不会影响测例仓库的内容。
|
||||
$ make setupclassroom //注意:这一步很重要,是用于github classroom自动评测你的工作。这一步只需在首次克隆项目仓库时执行一次,以后一般就不用执行了,除非 .github/workflows/classroom.yml发生了变化。
|
||||
|
||||
在 qemu 模拟器上运行本章代码:
|
||||
|
||||
|
||||
@@ -36,7 +36,8 @@
|
||||
|
||||
$ git clone https://github.com/LearningOS/rust-based-os-comp2022.git
|
||||
$ cd rust-based-os-comp2022/
|
||||
|
||||
$ make setupclassroom //注意:这一步很重要,是用于github classroom自动评测你的工作。这一步只需在首次克隆项目仓库时执行一次,以后一般就不用执行了,除非 .github/workflows/classroom.yml发生了变化。
|
||||
|
||||
在 qemu 模拟器上运行 `lab1(os3)参考框架: <https://github.com/LearningOS/rust-based-os-comp2022/tree/main/os3-ref>`_ :
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
@@ -34,7 +34,9 @@
|
||||
|
||||
$ git clone https://github.com/LearningOS/rust-based-os-comp2022.git
|
||||
$ cd rust-based-os-comp2022/
|
||||
$ make setupclassroom //注意:这一步很重要,是用于github classroom自动评测你的工作。这一步只需在首次克隆项目仓库时执行一次,以后一般就不用执行了,除非 .github/workflows/classroom.yml发生了变化。
|
||||
|
||||
|
||||
在 qemu 模拟器上运行 `lab2(os4)参考框架: <https://github.com/LearningOS/rust-based-os-comp2022/tree/main/os4-ref>`_ :
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
@@ -41,10 +41,8 @@
|
||||
|
||||
$ git clone https://github.com/LearningOS/rust-based-os-comp2022.git
|
||||
$ cd rust-based-os-comp2022/
|
||||
$ make setupclassroom //注意:这一步很重要,是用于github classroom自动评测你的工作。这一步只需在首次克隆项目仓库时执行一次,以后一般就不用执行了,除非 .github/workflows/classroom.yml发生了变化。
|
||||
|
||||
请仿照ch4的做法将代码在本地更新并push到自己的实验仓库中。
|
||||
|
||||
注意:user仓库有对ch5的测例更新,请重新clone或者使用git pull等获取。
|
||||
|
||||
在 qemu 模拟器上运行`lab3(os5)参考框架: <https://github.com/LearningOS/rust-based-os-comp2022/tree/main/os5-ref>`_ :
|
||||
|
||||
|
||||
@@ -32,7 +32,9 @@
|
||||
|
||||
$ git clone https://github.com/LearningOS/rust-based-os-comp2022.git
|
||||
$ cd rust-based-os-comp2022/
|
||||
$ make setupclassroom //注意:这一步很重要,是用于github classroom自动评测你的工作。这一步只需在首次克隆项目仓库时执行一次,以后一般就不用执行了,除非 .github/workflows/classroom.yml发生了变化。
|
||||
|
||||
|
||||
在 qemu 模拟器上运行本章代码参考框架:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
@@ -16,7 +16,9 @@
|
||||
|
||||
$ git clone https://github.com/LearningOS/rust-based-os-comp2022.git
|
||||
$ cd rust-based-os-comp2022/
|
||||
$ make setupclassroom //注意:这一步很重要,是用于github classroom自动评测你的工作。这一步只需在首次克隆项目仓库时执行一次,以后一般就不用执行了,除非 .github/workflows/classroom.yml发生了变化。
|
||||
|
||||
|
||||
在 qemu 模拟器上运行 `os7参考框架: <https://github.com/LearningOS/rust-based-os-comp2022/tree/main/os7-ref>`_ :
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
@@ -107,8 +107,8 @@
|
||||
|
||||
$ git clone https://github.com/LearningOS/rust-based-os-comp2022.git
|
||||
$ cd rust-based-os-comp2022/
|
||||
$ make setupclassroom //注意:这一步很重要,是用于github classroom自动评测你的工作。这一步只需在首次克隆项目仓库时执行一次,以后一般就不用执行了,除非 .github/workflows/classroom.yml发生了变化。
|
||||
|
||||
记得更新测例仓库的代码。
|
||||
|
||||
在 qemu 模拟器上运行本章代码 `lab5(os8)参考框架: <https://github.com/LearningOS/rust-based-os-comp2022/tree/main/os8-ref>`_ :
|
||||
|
||||
|
||||
@@ -337,7 +337,7 @@ println!("Hello world!");
|
||||
<p>获取本章代码:</p>
|
||||
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>git clone https://github.com/LearningOS/rust-based-os-comp2022.git
|
||||
<span class="gp">$ </span><span class="nb">cd</span> rust-based-os-comp2022/
|
||||
<span class="gp">$ </span>make setupclassroom //注意:这一步很重要,是用于github classroom自动评测你的工作。这一步只需在首次克隆项目仓库时执行一次,以后一般就不用执行了,除非 .github/workflows/classroom.yml发生了编号。
|
||||
<span class="gp">$ </span>make setupclassroom //注意:这一步很重要,是用于github classroom自动评测你的工作。这一步只需在首次克隆项目仓库时执行一次,以后一般就不用执行了,除非 .github/workflows/classroom.yml发生了变化。
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>运行本章代码,并设置日志级别为 <code class="docutils literal notranslate"><span class="pre">TRACE</span></code>:</p>
|
||||
|
||||
@@ -318,12 +318,12 @@
|
||||
</ol>
|
||||
<p>上述的3,4,5步不是必须的,你也可以线下本地开发。</p>
|
||||
</div>
|
||||
<p>本章我们引入了用户程序。为了将内核与应用解耦,我们将二者分成了两个仓库,分别是存放内核程序的 <code class="docutils literal notranslate"><span class="pre">rCore-Tutorial-Code-20xxx</span></code> (下称代码仓库,最后几位 x 表示学期)与存放用户程序的 <code class="docutils literal notranslate"><span class="pre">rCore-Tutorial-Test-20xxx</span></code> (下称测例仓库)。 你首先需要进入代码仓库文件夹并 clone 用户程序仓库(如果已经执行过该步骤则不需要再重复执行):</p>
|
||||
<p>本章我们引入了用户程序。</p>
|
||||
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>git clone https://github.com/LearningOS/rust-based-os-comp2022.git
|
||||
<span class="gp">$ </span><span class="nb">cd</span> rust-based-os-comp2022
|
||||
<span class="gp">$ </span>make setupclassroom //注意:这一步很重要,是用于github classroom自动评测你的工作。这一步只需在首次克隆项目仓库时执行一次,以后一般就不用执行了,除非 .github/workflows/classroom.yml发生了变化。
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>上面的指令会将测例仓库克隆到代码仓库下并命名为 <code class="docutils literal notranslate"><span class="pre">user</span></code> ,注意 <code class="docutils literal notranslate"><span class="pre">/user</span></code> 在代码仓库的 <code class="docutils literal notranslate"><span class="pre">.gitignore</span></code> 文件中,因此不会出现 <code class="docutils literal notranslate"><span class="pre">.git</span></code> 文件夹嵌套的问题,并且你在代码仓库进行 checkout 操作时也不会影响测例仓库的内容。</p>
|
||||
<p>在 qemu 模拟器上运行本章代码:</p>
|
||||
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span><span class="nb">cd</span> os2
|
||||
<span class="gp">$ </span>make run <span class="nv">LOG</span><span class="o">=</span>INFO
|
||||
|
||||
@@ -319,6 +319,7 @@
|
||||
</div>
|
||||
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>git clone https://github.com/LearningOS/rust-based-os-comp2022.git
|
||||
<span class="gp">$ </span><span class="nb">cd</span> rust-based-os-comp2022/
|
||||
<span class="gp">$ </span>make setupclassroom //注意:这一步很重要,是用于github classroom自动评测你的工作。这一步只需在首次克隆项目仓库时执行一次,以后一般就不用执行了,除非 .github/workflows/classroom.yml发生了变化。
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>在 qemu 模拟器上运行 <a class="reference external" href="https://github.com/LearningOS/rust-based-os-comp2022/tree/main/os3-ref">lab1(os3)参考框架:</a> :</p>
|
||||
|
||||
@@ -315,6 +315,7 @@
|
||||
<p>获取本章代码:</p>
|
||||
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>git clone https://github.com/LearningOS/rust-based-os-comp2022.git
|
||||
<span class="gp">$ </span><span class="nb">cd</span> rust-based-os-comp2022/
|
||||
<span class="gp">$ </span>make setupclassroom //注意:这一步很重要,是用于github classroom自动评测你的工作。这一步只需在首次克隆项目仓库时执行一次,以后一般就不用执行了,除非 .github/workflows/classroom.yml发生了变化。
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>在 qemu 模拟器上运行 <a class="reference external" href="https://github.com/LearningOS/rust-based-os-comp2022/tree/main/os4-ref">lab2(os4)参考框架:</a> :</p>
|
||||
|
||||
@@ -322,10 +322,9 @@
|
||||
<p>获取本章代码:</p>
|
||||
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>git clone https://github.com/LearningOS/rust-based-os-comp2022.git
|
||||
<span class="gp">$ </span><span class="nb">cd</span> rust-based-os-comp2022/
|
||||
<span class="gp">$ </span>make setupclassroom //注意:这一步很重要,是用于github classroom自动评测你的工作。这一步只需在首次克隆项目仓库时执行一次,以后一般就不用执行了,除非 .github/workflows/classroom.yml发生了变化。
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>请仿照ch4的做法将代码在本地更新并push到自己的实验仓库中。</p>
|
||||
<p>注意:user仓库有对ch5的测例更新,请重新clone或者使用git pull等获取。</p>
|
||||
<p>在 qemu 模拟器上运行`lab3(os5)参考框架: <<a class="reference external" href="https://github.com/LearningOS/rust-based-os-comp2022/tree/main/os5-ref">https://github.com/LearningOS/rust-based-os-comp2022/tree/main/os5-ref</a>>`_ :</p>
|
||||
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span><span class="nb">cd</span> os5-ref
|
||||
<span class="gp">$ </span>make run
|
||||
|
||||
@@ -314,6 +314,7 @@
|
||||
<p>获取本章代码:</p>
|
||||
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>git clone https://github.com/LearningOS/rust-based-os-comp2022.git
|
||||
<span class="gp">$ </span><span class="nb">cd</span> rust-based-os-comp2022/
|
||||
<span class="gp">$ </span>make setupclassroom //注意:这一步很重要,是用于github classroom自动评测你的工作。这一步只需在首次克隆项目仓库时执行一次,以后一般就不用执行了,除非 .github/workflows/classroom.yml发生了变化。
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>在 qemu 模拟器上运行本章代码参考框架:</p>
|
||||
|
||||
@@ -300,6 +300,7 @@
|
||||
<p>获取本章代码:</p>
|
||||
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>git clone https://github.com/LearningOS/rust-based-os-comp2022.git
|
||||
<span class="gp">$ </span><span class="nb">cd</span> rust-based-os-comp2022/
|
||||
<span class="gp">$ </span>make setupclassroom //注意:这一步很重要,是用于github classroom自动评测你的工作。这一步只需在首次克隆项目仓库时执行一次,以后一般就不用执行了,除非 .github/workflows/classroom.yml发生了变化。
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>在 qemu 模拟器上运行 <a class="reference external" href="https://github.com/LearningOS/rust-based-os-comp2022/tree/main/os7-ref">os7参考框架:</a> :</p>
|
||||
|
||||
@@ -361,9 +361,9 @@
|
||||
<p>获取本章代码:</p>
|
||||
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>git clone https://github.com/LearningOS/rust-based-os-comp2022.git
|
||||
<span class="gp">$ </span><span class="nb">cd</span> rust-based-os-comp2022/
|
||||
<span class="gp">$ </span>make setupclassroom //注意:这一步很重要,是用于github classroom自动评测你的工作。这一步只需在首次克隆项目仓库时执行一次,以后一般就不用执行了,除非 .github/workflows/classroom.yml发生了变化。
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>记得更新测例仓库的代码。</p>
|
||||
<p>在 qemu 模拟器上运行本章代码 <a class="reference external" href="https://github.com/LearningOS/rust-based-os-comp2022/tree/main/os8-ref">lab5(os8)参考框架:</a> :</p>
|
||||
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span><span class="nb">cd</span> os8-ref
|
||||
<span class="gp">$ </span>make run
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user