2022 major revision

pull/13/MERGE
Zhiyuan Shao 3 years ago
parent 2ae0911f93
commit c659fd2983

@ -2,10 +2,9 @@
### 目录
- [2.1 实验环境安装](#environments)
- [2.1.1 头歌平台](#subsec_educoder)
- [2.1.2 Windows环境WSL](#subsec_windows)
- [2.1.3 Ubuntu操作系统环境](#subsec_ubuntu)
- [2.1.4 openEuler操作系统环境](#subsec_openeuler)
- [2.1.1 安装操作系统环境](#subsec_osenvironments)
- [2.1.2 安装执行支撑软件](#subsec_softwarepackages)
- [2.1.3 头歌平台](#subsec_educoder)
- [2.2 riscv-pke实验代码的获取](#preparecode)
- [2.3 PKE实验构成](#pke_experiemnts)
@ -13,61 +12,74 @@
## 2.1 实验环境安装
<a name="subsec_educoder"></a>
### 2.1.1 头歌平台
为支撑《操作系统原理》课程的教学PKE系列实验在[头歌平台educoder.net](https://www.educoder.net/)上进行了部署。
<a name="subsec_osenvironments"></a>
<img src="pictures/educoder_1.png" alt="educoder_step1" style="zoom:80%;" />
### 2.1.1 安装操作系统环境
读者可以在头歌平台的主页上通过选择左上角的“实践课程”入口然后在搜索框中输入“基于RISCV的操作系统实验”找到PKE实验对应的实践课程
安装即将编译、构建build和执行riscv-pke的环境我们给出以下3种选择
<img src="pictures/educoder_2.png" alt="educoder_step2" style="zoom:80%;" />
**方案一Windows Subversion LinuxWSL**
进入课程后,可以先阅读课程实验说明,翻到课程下的实验后就可以通过点击“开始实战”来进入实验了
如果读者的工作环境是Windows10的专业版可采用WSLWindows Subversion Linux+MobaXterm的组合来搭建PKE的实验环境。在Windows10专业版上配置该环境的说明可以参考[这里](https://zhuanlan.zhihu.com/p/81769058)。关于WSL**应尽量使用WSL1不要升级到WSL2**,因为如果代码存放的位置在/mnt目录下WSL1中运行编译、构建的速度比WSL2快很多参考[这里](https://github.com/microsoft/WSL/issues/4197)
<img src="pictures/educoder_3.png" alt="educoder_step3" style="zoom:80%;" />
需要说明的是PKE实验并不需要中文字体、图形界面或者JAVA的支持所以读者在安装WSL的过程中无须安装于汉化相关的包也无需安装xfce、JDK等。只需要安装WSL的基础环境后再按照[下一节](#subsec_ubuntu)的说明继续完成rsicv-pke开发环境的安装。
进入实战后,会看到如下的界面:
**方案二Ubuntu或者其他Linux发行版**
<img src="pictures/educoder_4.png" alt="educoder_step4" style="zoom:80%;" />
读者可以采用VMware、VirtualBox等软件在客户机中安装客户机再在客户机中安装执行支撑软件来构建实验环境。客户机的选择我们推荐采用Ubuntu 16.04LTSx86_64或更高版本的Ubuntu发行版如18.04LTS、20.04LTS或更高)操作系统,或者**华为openEuler操作系统**。我们未在其他系统如archRHEL等上做过测试但理论上只要将实验中所涉及到的安装包替换成其他系统中的等效软件包就可完成同样效果。
以上界面中,左侧显示的是实验的任务描述以及参考文献链接。右侧是做实验要用到(修改)的源代码文件,在右侧界面的顶端,有一个“命令行”标签,点击进入后可进入命令行模式;顶端的右侧的文件夹图标点击后会出现整个文件目录树,读者可以通过目录树选择要阅读的文件;最后,在右下角有个“评测”按钮,读者可以在完成实验后点击该按钮对自己的实验结果进行评测。
**方案三:头歌实验平台**
**实际上读者看到的这个界面背后是一个Linux docker虚拟机在该虚拟机中已经安装好了实验所需要的环境**。包括各种开发工具包、RISC-V交叉编译器等而评测按钮按下后会触发虚拟机中的构建build脚本该脚本会自动对代码树进行构建、执行给定的用户程序如lab1_1中的user/app_helloworld、最后根据输出的内容对实验结果的正确性进行判断
我们在EduCoder实验平台网址https://www.educoder.net 上创建了riscv-pke的同步实验课程课程的终端环境docker虚拟机中已完成实验所需软件工具的安装所以如果读者是在头歌平台上选择的本课程则可跳过本节的实验环境搭建过程以及执行支撑软件的安装过程直接进入通过终端命令行进入实验环境头歌实验平台的使用方法见[2.1.3节](#subsec_educoder)
**然而,由于在头歌平台上的课程,每个实验都对应了一个独立的代码仓库,所以从一个实验到另一个实验的切换无法通过`git merge`命令实现对上一个实验的实验结果的继承**。学生在进行实验切换时需要将之前实验的代码手动地贴入下一个实验的对应文件中。这一点我们在课程的“课程须知”中做了说明。一个比较好的方法是采用类似Notepad++这样类型的软件,记录每个实验的答案(包括答案所在的文件),并在切换到下一个实验时,将答案拷贝粘贴到对应文件。
考虑到头歌平台的用户身份(主要有老师和学生)的不同,以及老师开课和学生选课的过程的不同,头歌平台给出了[教师使用手册](pictures/EduCoder平台教师使用手册v5.0.0_20200924.pdf)和[学生使用手册](pictures/EduCoder平台学生使用手册v5.0.0_20200924.pdf)。**简单来说为了将头歌平台上的PKE实验课程应用到《操作系统原理》课程教学教师需要在头歌平台上建立一个教学课堂并在该教学课堂中选用“基于RISCV的操作系统实验”课程将该实验课程中的实验有选择性的导入到所建立的教学课堂中并最后吧所建立的教学课堂的邀请码发给学生**。对于学生而言,只需要用老师所给的邀请码在头歌平台上加入教学课堂即可。以上过程都可以通过头歌主页右上侧的“+”符号(将鼠标移动到该符号上)对应的弹出菜单中选择即可。
“基于RISCV的操作系统实验”课程的设计充分考虑到了实验的模块化以及学制安排的问题。课程共设计了15个实验其中包含9个基础实验和6个挑战实验随着时间推移这个列表可能会进一步增加实验间的关联见[PKE实验的组成](#pke_experiemnts)。**教师开设教学课堂的时候,可以根据学生的水平、教学预期按需选择不同的实验内容,分期分批地给学生安排实验任务**。
<a name="subsec_softwarepackages"></a>
<a name="subsec_windows"></a>
### 2.1.2 安装执行支撑软件
### 2.1.2 Windows环境WSL
riscv-pke的源代码的编译compile、构建build需要专门的risc-v交叉编译器所构建的代理内核及应用的执行也需要专门的risc-v虚拟机spike的支持。这一节将介绍这些支撑软件的安装过程需要说明的是该安装过程适合操作系统环境见[2.1.1节](#subsec_osenvironments))为**WSL**,或者**Ubuntu发行版**的情况。对于头歌实验平台,则无需对执行支撑软件进行任何安装。
如果读者的工作环境是Windows10的专业版可采用WSLWindows Subversion Linux+MobaXterm的组合来搭建PKE的实验环境。在Windows10专业版上配置该环境的说明可以参考[这里](https://zhuanlan.zhihu.com/p/81769058)。关于WSL应尽量使用WSL1不要升级到WSL2因为如果代码存放的位置在/mnt目录下WSL1中运行编译、构建的速度比WSL2[快很多](https://github.com/microsoft/WSL/issues/4197)。
PKE实验涉及到的执行支撑软件有
需要说明的是PKE实验并不需要中文字体、图形界面或者JAVA的支持所以读者在安装WSL的过程中无须安装于汉化相关的包也无需安装xfce、JDK等。只需要安装WSL的基础环境后再按照[下一节](#subsec_ubuntu)的说明继续完成PKE开发环境的安装。
- RISC-V交叉编译器及附带的主机编译器、构造工具等
- spike模拟器
以下分别介绍这些执行支撑软件的安装过程,我们给出以下三种方案:
**方案一:下载自包含交叉编译器+执行环境**
<a name="subsec_ubuntu"></a>
● 第一步,安装依赖库
### 2.1.3 Ubuntu操作系统环境
RISC-V交叉编译器的执行仍然需要一些本地支撑软件包可使用以下命令安装
实验环境我们推荐采用Ubuntu 16.04LTS或18.04LTSx86_64操作系统以及WSL中的相应版本。我们未在其他系统如archRHEL等上做过测试但理论上只要将实验中所涉及到的安装包替换成其他系统中的等效软件包就可完成同样效果。另外我们在EduCoder实验平台网址https://www.educoder.net 上创建了本书的同步课程课程的终端环境中已完成实验所需软件工具的安装所以如果读者是在EduCoder平台上选择的本课程则可跳过本节的实验环境搭建过程直接进入通过终端命令行进入实验环境。
`$ sudo apt-get install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev device-tree-compiler`
PKE实验涉及到的工具软件有
● 第二步,下载自包含交叉编译器+执行环境
- RISC-V交叉编译器及附带的主机编译器、构造工具等
- spike模拟器
到[这里](./resources/riscv64-elf-gcc-20210923.tgz)下载自包含交叉编译器+执行环境的tgz包感谢张杰老师为大家制作采用以下命令解开tgz包
$ tar xf riscv64-elf-gcc-20210923.tgz
解压完成后,将在当前目录产生名为**riscv64-elf-gcc**的目录,**该目录下包含RISC-V交叉编译器以及spike模拟器**。
● 第三步,设置环境变量
`$ export RISCV=$PWD/riscv64-elf-gcc`
`$ export PATH=$PATH:$RISCV/bin`
以上命令设置了RISCV环境变量指向在第二步中的tgz包展开目录并且将交叉编译器的可执行文件所在的目录加入到了系统路径中。这样我们就可以在riscv-pke的工作目录调用RISC-V交叉编译器所包含的工具软件了。
**建议读者将以上两个export命令加入到`~/.bashrc``~/.profile`或 `/etc/profile`文件的末尾(注意替换$PWD环境变量**。这样,每次重新启动(并打开终端程序)后,系统会自动设置这两个环境变量,而不用每次都要手动输入以上命令。
以下分别介绍这两个部分的安装过程。对于新安装的Ubuntu操作系统**我们强烈建议读者在新装环境中完整构建buildRISC-V交叉编译器以及spike模拟器**。对于熟练用户为了避免耗时且耗资源的构建build过程一个可能的方案是从https://toolchains.bootlin.com 下载,**但是要注意一些依赖包如GCC的版本号**。如果强调环境的可移植性,可以考虑在虚拟机中安装完整系统和环境,之后将虚拟机进行克隆和迁移。
#### RISC-V交叉编译器
**方案二:完整自行构建交叉编译器和执行环境**
对于新安装的Ubuntu操作系统我们强烈建议读者在新装环境中完整构建buildRISC-V交叉编译器以及spike模拟器。如果强调环境的可移植性可以考虑在虚拟机中安装完整系统和环境之后将虚拟机进行克隆和迁移。
RISC-V交叉编译器是与Linux自带的GCC编译器类似的一套工具软件集合不同的是x86_64平台上Linux自带的GCC编译器会将源代码编译、链接成为适合在x86_64平台上运行的二进制代码称为native code而RISC-V交叉编译器则会将源代码编译、链接成为在RISC-V平台上运行的代码。后者RISC-V交叉编译器生成的二进制代码是无法在x86_64平台即x86_64架构的Ubuntu环境下直接运行的它的运行需要模拟器我们采用的spike的支持。
@ -115,7 +127,7 @@ RISC-V交叉编译器的构建需要一些本地支撑软件包可使用以
**建议读者将以上两个export命令加入到`~/.bashrc``~/.profile`或 `/etc/profile`文件的末尾**。这样,每次重新启动(并打开终端程序)后,系统会自动设置这两个环境变量,而不用每次都要手动输入以上命令。
#### spike模拟器
● 第五步,安装spike模拟器
接下来安装spkie模拟器。首先取得spike的源代码有两个途径一个是从github代码仓库中获取
@ -137,11 +149,35 @@ RISC-V交叉编译器的构建需要一些本地支撑软件包可使用以
<a name="subsec_openeuler"></a>
<a name="subsec_educoder"></a>
### 2.1.3 头歌平台
为支撑《操作系统原理》课程的教学PKE系列实验在[头歌平台educoder.net](https://www.educoder.net/)上进行了部署。
<img src="pictures/educoder_1.png" alt="educoder_step1" style="zoom:80%;" />
读者可以在头歌平台的主页上通过选择左上角的“实践课程”入口然后在搜索框中输入“基于RISCV的操作系统实验”找到PKE实验对应的实践课程
<img src="pictures/educoder_2.png" alt="educoder_step2" style="zoom:80%;" />
### 2.1.4 openEuler操作系统
进入课程后,可以先阅读课程实验说明,翻到课程下的实验后就可以通过点击“开始实战”来进入实验了。
<img src="pictures/educoder_3.png" alt="educoder_step3" style="zoom:80%;" />
PKE实验将提供基于华为openEuler操作系统的开发方法*具体的华为云使用方法待续*但在openEuler操作系统环境中的交叉编译器安装方法以及其他环节都可参考[2.1.3 Ubuntu环境](#subsec_ubuntu)的命令进行。
进入实战后,会看到如下的界面:
<img src="pictures/educoder_4.png" alt="educoder_step4" style="zoom:80%;" />
以上界面中,左侧显示的是实验的任务描述以及参考文献链接。右侧是做实验要用到(修改)的源代码文件,在右侧界面的顶端,有一个“命令行”标签,点击进入后可进入命令行模式;顶端的右侧的文件夹图标点击后会出现整个文件目录树,读者可以通过目录树选择要阅读的文件;最后,在右下角有个“评测”按钮,读者可以在完成实验后点击该按钮对自己的实验结果进行评测。
**实际上读者看到的这个界面背后是一个Linux docker虚拟机在该虚拟机中已经安装好了实验所需要的环境**。包括各种开发工具包、RISC-V交叉编译器等而评测按钮按下后会触发虚拟机中的构建build脚本该脚本会自动对代码树进行构建、执行给定的用户程序如lab1_1中的user/app_helloworld、最后根据输出的内容对实验结果的正确性进行判断。
**然而,由于在头歌平台上的课程,每个实验都对应了一个独立的代码仓库,所以从一个实验到另一个实验的切换无法通过`git merge`命令实现对上一个实验的实验结果的继承**。学生在进行实验切换时需要将之前实验的代码手动地贴入下一个实验的对应文件中。这一点我们在课程的“课程须知”中做了说明。一个比较好的方法是采用类似Notepad++这样类型的软件,记录每个实验的答案(包括答案所在的文件),并在切换到下一个实验时,将答案拷贝粘贴到对应文件。
考虑到头歌平台的用户身份(主要有老师和学生)的不同,以及老师开课和学生选课的过程的不同,头歌平台给出了[教师使用手册](pictures/EduCoder平台教师使用手册v5.0.0_20200924.pdf)和[学生使用手册](pictures/EduCoder平台学生使用手册v5.0.0_20200924.pdf)。**简单来说为了将头歌平台上的PKE实验课程应用到《操作系统原理》课程教学教师需要在头歌平台上建立一个教学课堂并在该教学课堂中选用“基于RISCV的操作系统实验”课程将该实验课程中的实验有选择性的导入到所建立的教学课堂中并最后吧所建立的教学课堂的邀请码发给学生**。对于学生而言,只需要用老师所给的邀请码在头歌平台上加入教学课堂即可。以上过程都可以通过头歌主页右上侧的“+”符号(将鼠标移动到该符号上)对应的弹出菜单中选择即可。
“基于RISCV的操作系统实验”课程的设计充分考虑到了实验的模块化以及学制安排的问题。课程共设计了15个实验其中包含9个基础实验和6个挑战实验随着时间推移这个列表可能会进一步增加实验间的关联见[PKE实验的组成](#pke_experiemnts)。**教师开设教学课堂的时候,可以根据学生的水平、教学预期按需选择不同的实验内容,分期分批地给学生安排实验任务**。
@ -149,7 +185,7 @@ PKE实验将提供基于华为openEuler操作系统的开发方法*具体的
## 2.2 riscv-pke实验代码的获取
以下讨论我们假设读者是使用的Ubuntu/openEuler操作系统且已按照[2.1.2](#subsec_ubuntu)的说明安装了需要的工具软件。对于头歌平台而言,代码已经部署到实验环境,读者可以通过头歌网站界面或者界面上的“命令行”选项看到实验代码,所以头歌平台用户无须考虑代码获取环节。
以下讨论我们假设读者是使用的Ubuntu/openEuler操作系统且已按照[2.1.2](#subsec_softwarepackages)的说明安装了需要的工具软件。对于头歌平台而言,代码已经部署到实验环境,读者可以通过头歌网站界面或者界面上的“命令行”选项看到实验代码,所以头歌平台用户无须考虑代码获取环节。
#### 代码获取

Loading…
Cancel
Save