ChCore实验环境配置

1. 编译和运行环境

请选择以下任一种方法进行编译和运行环境配置:

1.1 使用助教提供的虚拟机(推荐使用)

我们为大家提供了两种不同平台的虚拟机器,来供大家编译和运行ChCore实验:

在两个虚拟机中,用户名均为 os,密码均为123。

如果导入虚拟机失败,通常是因为下载没完整,请检查你下载文件的大小以及MD5,如果不匹配,请尝试重新下载虚拟机文件。

 

1.2 自己动手配环境

如果你在使用上述虚拟机出现了问题,请自己配环境(可自己配置虚拟机,也可以在真实的Linux环境下进行配置),可按照下面的步骤进行。限于apt自带qemu-system-arm版本的问题,配置的操作系统需要在Ubuntu 20.04 和 Debian 10 以上。低版本的Ubuntu或者Debian系统使用apt-get安装的qemu-system-arm版本比较低,不支持模拟raspi3硬件,因此,低版本的Ubuntu和Debian系统的用户请通过源码的方法安装高版本的qemu-system-arm,支持raspi3的qemu-system-arm的最低版本是2.12。其它Linux发行版用户请自行研究如何安装。

如果不使用docker编译lab,则无需安装docker.io,而需要安装gcc-aarch64-linux-gnu。跑lab时不要运行make和make build,改为运行. /scripts/build.sh(或者自己修改Makefile)。

如果选择使用docker编译lab,则安装docker.io,而不安装gcc-aarch64-linux-gnu。跑lab时可直接运行make和make build。

 

2. 获取ChCore实验源码

ChChore实验代码的发布和提交均使用课程提供的GitLab平台。

 

步骤 1: 创建GitLab账号

首先,打开https://ipads.se.sjtu.edu.cn:2020/users/sign_in进行注册,Username一栏请输入自己的学号,助教会根据用户名的学号来进行改分。注册开放时间为一周,请大家尽快注册!

步骤 2:Fork实验仓库

登录你的Gitlab后,打开https://ipads.se.sjtu.edu.cn:2020/os2020/chcore-lab-2021来fork一份ChCore仓库代码副本到你自己的账户下。之后,你可以对你账户下的ChCore仓库代码进行任意修改和提交,但不会对原ChCore仓库产生影响。

 

点击你的namespace,来完成fork。

 

步骤3:设置仓库的可见性

将刚才fork成功的仓库设置为private(私有),防止其他同学浏览你的仓库、抄袭你的代码。ChCore的实验是一个单人作业,每个同学都有防止抄袭和被抄袭的义务和责任,助教也有相关的代码查重工具,抄袭行为将会被判0分。

 

最后,别忘记保存你的设置!

 

步骤4:将你的ChChore Lab仓库下载到本地

首先复制你的仓库链接,进入你账户下的仓库网页,点击Clone按钮,复制第二个链接。

 

在之前下载的虚拟机下面,打开命令行,先输入 git clone,再粘贴你刚才复制的链接,执行命令,输入你在GitLab上的用户名和密码(密码输入是不可见的,输入完毕按回车)。

如果你看到下面的输出,这就表明你已经成功下载了ChCore Lab的仓库,这里的username和password指代你在GitLab上的用户名(学号)和密码。

 

步骤5:从原仓库中获取最新的Lab代码

首先,你需要清楚三个概念:

助教之后会陆续放出每个Lab的代码,因此,在每次开始实验之前,你需要从原仓库中获取最新的Lab代码。这个步骤是建立本地仓库与原仓库之间的联系,使得你的本地仓库可以从原仓库中获取更新。

之后,当你需要获取更新时,只需要执行git fetch upstream命令即可。git fetch只会将原仓库中的更新下载到与你当前的工作分支不同的其它分支(例如upstream/lab1),并不会对你当前分支的代码进行修改。

通过git remote -v命令可以看到,你的本地仓库一共有两个远端仓库origin和upstream。origin是你在GitLab的私人仓库对应的地址,之后你在本地的提交(commit)需要提交到orgin。upstream是助教管理的仓库的地址,你需要从upstream获取下一个实验的代码。

 

步骤6:获取下一个实验的代码,并切换到下一个实验的代码分支

由于lab1的分支在fork和下载到本地仓库的时候已经存在,因此不需要进行如下的操作,之后的lab2、lab3、lab4、lab5均需要通过以下方式获取助教发布的代码,并切换到新的代码分支。

在ChCore中,每一个实验都会有一个单独的代码分支(branch),例如lab1、lab2以及labx(x指代某个数字)。当助教在原仓库中放出labx的代码时:

下面的操作说明,如何切换到下一个实验代码分支来进行实验。假设你已经做完了第x-1个实验,下面要切换到第x个实验。

git merge命令有时候并不能自动地进行合并,需要手动地冲突处理,别忘了处理这些冲突!