Lab1 环境配置

本实验的目的是为后续实验搭建必需的环境。

注意事项:

  1. Windows用户在课前应该已经完成了Linux虚拟机的创建

  2. 后续任务均需要在Linux虚拟机、Linux主机或macOS环境下完成

  3. 环境配置过程涉及到许多命令,注意以下两种不同形式的内容:

    • 以#号开头的内容分为两个部分,“:“前面为用户名@主机名,“:“后面为当前目录
    • $开头的内容为命令(开头的$不是命令的一部分
    • 开头既没有#也没有$的一般是上一条命令的输出样例
  4. 例如下面的命令表示在~(也就是home目录:/home/{username})下面执行ssh-keygen命令

实验环境整体架构

  1. Windows

    • 物理机:学生自用的Windows电脑
    • Docker宿主机:Vmware安装的Ubuntu 22.04虚拟机
    • Docker环境:根据Task2搭建起来的Ubuntu容器
    • QEMU环境:Docker环境中加载运行的QEMU镜像
  1. Linux/macOS

    • 物理机:学生自用的mac或Linux电脑

    • Docker宿主机:物理机

    • Docker环境:根据Task2搭建起来的Ubuntu容器

    • QEMU环境:Docker环境中加载运行的QEMU镜像

  2. 在下面的命令示例当中:

    • song@song-virtual-machine表示Docker宿主机
    • pore@34419af9325c表示Docker环境
    • pore@localhost 表示QEMU环境
  3. Docker环境与QEMU环境中的账户与密码:

    • Docker环境:pore/pore,root/root
    • QEMU环境:pore/pore,root 无密码

 

实验环境文件目录

在Docker宿主机的home目录下创建pore24文件夹,这个将作为整个PoRE课程的总目录

Task1 Git 安装与使用

A. Git 基础

Git 是一种分布式版本控制系统。

要了解更多 Git 的功能,请查阅 Git 官方网站

基本命令

Git 是一个强大的版本控制系统,拥有许多命令。然而,对于PoRE这门课程,你只需要了解以下基本命令:

还有一些用于检查状态的命令:

这些命令的详细说明可以通过 Git 文档 查看。

Git 参考资料

对于有兴趣进一步了解 Git 的同学,可以参考以下资源:

B. 在PoRE中使用Git

0. Git 安装

  1. 首先,在终端中键入 git,检查你是否已安装 Git。如果没有安装,可以按照以下步骤在不同平台上安装 Git:

    平台安装方式
    Linuxsudo apt-get install git
    macOSbrew install git
    注意:这些安装程序都可以从git 下载页面获取。 
  2. 安装完 git 后,你可能需要进行首次设置。通过以下命令配置自己的身份信息:

1. 公钥注册

  1. 通过以下命令检查是否已经存在密钥对:

    如果你已经有 id_rsaid_rsa.pub,则跳到第 3 步。

  2. 如果你没有密钥对,请运行以下命令生成一个:

    然后你会在 ~/.ssh 目录下拥有 id_rsaid_rsa.pub 文件。

  3. 键入以下命令:

    ~/.ssh/id_rsa.pub 复制到一个新文件中,命名为 22xxxxxx.pub(.pub 文件名为你的学号),然后通过你的学生邮箱(StudentID@m.fudan.edu.cn,例如 22000000001@m.fudan.edu.cn)将 .pub 文件发送给助教的邮箱 FDUPore2023@163.com

  4. 你只有在收到回复邮件后才能执行后续步骤。

2. 克隆、获取代码

  1. 在开始之前,请转到你的工作目录

  2. 克隆你自己的存储库(请注意,你应该用自己的 ID 替换 22000000001):

3. 编辑并提交你自己的代码

  1. 编辑你喜欢的代码,执行以下命令

    请注意,尽可能经常提交代码,并尽可能详细地编写提交消息。你可以随时使用 git statusgit log 来检查你当前的工作状态和提交日志。

  2. 当你完成一些提交后,可以将代码推送到服务器。

    我们建议你尽可能经常地提交推送。

  3. 在截止日期之前提交代码。一旦你完成了所有的代码,并决定提交时,你可以按照以下步骤操作:

    在这里,git tag为当前提交添加了一个标签,表明这个提交包含你的最终提交代码。如果你不使用这个命令,我们将使用截止日期前的最后一次提交。

4. 课程PPT分发

课程PPT也是通过 git 发布的,你可以使用以下命令克隆存储库:

当有新的PPT发布的时候,你可以通过以下命令更新PPT

每次课程之后都会上传课程PPT,请留意我们网站上的“更新”,使用 git pull 获取最新的课程PPT

5. Lab、PJ分发

Lab、PJ的代码将被发布到每个同学的pore_XXX目录下,labx的代码目录为release_labx,例如lab2目录为pore_XXX/release_lab2
可以通过以下指令拉取Lab、PJ代码

6. Git仓库的关系

仓库名描述权限
LabEnv存储实验环境仅pull
slides存储课程PPT仅pull
pore_{ID}存储学生Lab、Pj的答案,发布Lab、PJpull和push

 

Task2 Docker、QEMU环境搭建

A.Docker基础

Docker提供了在松散隔离的环境(容器)中打包和运行应用程序的功能。

Docker 安装

Docker支持多种平台的下载与安装,你可以根据自己的操作系统选择不同的安装方式:

平台安装方式
LinuxDocker Engine
macOSMac Intel芯片
Mac Apple芯片
这些安装程序或文档都可以从Docker官方文档中获取。 

注意事项:

  1. 尽可能安装最新的Docker

  2. 使用docker --version检查版本

    • Linux虚拟机用户版本应当不低于25.0.3,macOS用户的docker版本应当不低于24.0.7
    • 当你的版本号低于要求时,建议按照前面的Docker安装文档重新下载安装,否则可能会出现未知问题

基础命令

对于PoRE这门课程,你需要了解以下基本命令:

这些命令的详细说明可以查看 Docker 文档

参考资料

对于有兴趣进一步了解Docker的同学,可以参考以下资源:

B. 在PoRE中使用Docker

为了方便实验环境的下发与统一管理,我们需要使用Docker搭建一个Ubuntu的容器环境,这个Ubuntu上已经配置好了所有Lab和Pj需要的基础环境。按照下面的步骤完成容器的搭建:

  1. 进入pore24目录

  2. 创建workspace 目录,用于存储学生个人使用、创建的代码

    注意:后续Docker容器可能会更新,但是放在这个目录下面的代码或文件一般会保留下来,因此可以在这个文件里面存放你的代码项目或工程。

  3. 通过git clone获取Docker环境搭建需要的文件与代码:

  4. 创建qemu文件夹

    注意:step5和step6需要在校园网环境下完成

  5. http://10.176.36.34:8888中下载debian-12-nocloud-arm64.qcow2和start_vm.sh并放置到qemu目录下

  6. http://10.176.37.16:8000/中下载qiling.zip并解压。如果没有unzip命令可以apt-get install unzip

    到这一步,文件结构应该如下所示

  7. 进入LabEnv目录当中,通过在终端中运行./start.sh 部署并启动Docker环境

如果出现如下错误,键入sudo apt install gnome-keyring即可

  1. 后续可能会因为环境原因下发新的docker-compose.yml文件,你可以通过以下方式更新环境:

 

C. 启动QEMU并测试

  1. 通过docker exec命令进入到Docker环境中执行命令:

  2. 在Docker环境中启动QEMU环境

    此时,这个终端会启动QEMU镜像,最终弹出localhost login:的提示,输入pore/pore登入账号:

    同时,QEMU镜像会在Docker镜像的6666端口上提供一个SSH访问的接口。

  3. 文件传输

    Docker宿主机->Docker环境:

    Docker环境->QEMU环境:

    重新在Docker宿主机上开一个终端(不要关闭step2中的终端),按照如下方式向QEMU中复制文件:

  4. 进入QEMU环境:可以直接使用step2中的终端,或者在Docker环境中键入如下命令

  5. 在QEMU环境中运行测试程序

    弹出Hello, World!之后表示QEMU环境安装完成。

  6. Docker环境与QEMU环境的退出

    • 在Docker环境的终端中键入exit命令即可退出Docker环境

    • QEMU终端的退出有两种:

       

D.安装qiling并测试

  1. 通过docker exec命令进入到Docker环境中执行命令

  2. 进入/home/pore/qiling

  3. 使用pip安装qiling

  4. 测试qiling是否安装成功

 

Task3 完成Q&A网站的注册

  1. 点击PoRE Q&A
  2. 自定义用户名和密码,并在邮箱一栏填写@fudan.edu.cn或@m.fudan.edu.cn结尾的邮箱地址。
  3. 提交注册之后,系统会自动向你的邮箱发送一封验证通知,确认验证之后完成注册。

 

其他注意事项

  1. PPT和代码的版权归 PoRE 教学人员所有,请不要发送给他人或上传到公开场所。
  2. 课程网站、问答网站和 git 服务器都托管在资源有限的私人电脑上,请不要故意对它们进行压力测试,也不要进行任何恶意行为。
  3. 请不要向你的私人 git 仓库推送大文件。

 

任务提交

  1. 按照Task1中的要求使用git提交{学号ID}.txt文件(例如,你的学号为22000000001,则提交的文件为22000000001.txt)
  2. 使用git提交实验报告{学号ID}.pdf,包括每一步环境配置成功的截图(helloworld运行成功的截图和import qiling成功的截图)。
  3. 注意,{学号ID}.txt和{学号ID}.pdf应当在~/pore24/pore_{ID}/lab1目录下使用git提交