This commit is contained in:
chyyuu
2022-06-28 12:24:46 +00:00
parent 69afb8d4e1
commit 3580b84ed3
19 changed files with 62 additions and 20 deletions

View File

@@ -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> 中安装配置开发环境rustcqemu等工具。</p></li>
<li><p><strong>重要:</strong> 在vscode的 <cite>console</cite> 中执行 <cite>make setupclassroom</cite> 该命令仅执行一次配置githubclassroom 自动评分功能。</p></li>
<li><p>然后就可以基于在线vscode进行开发、运行、提交等完整的实验过程了。</p></li>
</ol>
<p>上述的345步不是必须的你也可以线下本地开发。</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>

View File

@@ -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` 中安装配置开发环境rustcqemu等工具。
6. **重要:** 在vscode的 `console` 中执行 `make setupclassroom` 该命令仅执行一次配置githubclassroom 自动评分功能。
7. 然后就可以基于在线vscode进行开发、运行、提交等完整的实验过程了。
上述的345步不是必须的你也可以线下本地开发。
.. 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``

View File

@@ -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发生了变化

View File

@@ -37,14 +37,13 @@
上述的345步不是必须的你也可以线下本地开发。
本章我们引入了用户程序。为了将内核与应用解耦,我们将二者分成了两个仓库,分别是存放内核程序的 ``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 模拟器上运行本章代码:

View File

@@ -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

View File

@@ -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

View File

@@ -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>`_

View File

@@ -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

View File

@@ -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

View File

@@ -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>`_

View File

@@ -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>

View File

@@ -318,12 +318,12 @@
</ol>
<p>上述的345步不是必须的你也可以线下本地开发。</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

View File

@@ -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>

View File

@@ -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>

View File

@@ -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)参考框架: &lt;<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>&gt;`_ </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

View File

@@ -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>

View File

@@ -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>

View File

@@ -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