pintos环境配置与安装

记录关于最新pintos在Ubuntu20.04的环境上,进行安装,并将qemu替换默认的bochs的配置所遇到的问题和解决方案。

简介

pintos是斯坦福大学操作系统的一个project。国内很多高校会用这个来作为学生学习操作系统的实验课课程。很多学生反映难度高,耗时长。我导师带着本科生这门课,一是好奇,二是体验一下,并且巩固一下操作系统的知识,所以我也来玩一玩。

pintos默认使用的模拟器是bochs模拟器,由于需要很多的相关的依赖,以及一些更新编译的库,比较繁琐,所以该教程中我们不使用bochs模拟器,改用qemu模拟器。

安装步骤

准备工作

安装vim、make、gcc、build-essential

1
2
3
4
sudo apt-get install vim
sudo apt-get install make
sudo apt-get install gcc
sudo apt-get install build-essential

安装qemu-system-x86

1
sudo apt-get install qemu-system-x86

下载pintos

可以直接从pintos的git公开仓库中进行下载最新版本,也可以下载老版本。

其中下载新版本在公开仓库中,按下述步骤下载

  • 找到master,并点击它的tree,如图1所示

    pintos的git仓库

  • 找到snapshot,点击,保存文件,如图52所示

    pintos的git仓库2

此处我下载的版本为pintos-anon-master-f685123.tar.gz

为了方便,使用tar的解压命令解压,放到根目录下并更名为pintos

1
2
tar -zxvf pintos-anon-master-f685123.tar.gz
mv pintos-anon-master-f685123 ~/pintos

修改一些本地化配置

  • 修改pintos-gdb文件

将路径切换到/home/{username}/pintos/src/utils下。使用vim修改其中的pintos-gdb文件。

主要修改GDBMACROS变量的值。

原值为:

pintos-gdb修改前

修改为本机上的gdb-macors路径,该路径也在解压的pintos下,具体路径为:


注意一定要填为绝对路径。 

![pintos-gdb修改后](https://zijian-images.oss-cn-shanghai.aliyuncs.com/images/img/pintos-gdb%E4%BF%AE%E6%94%B9%E5%90%8E.png)

- 修改Makefile

还在当前```utils```路径下,修改```Makefile```文件,只需要改动一个变量的名字就可以,原名为:

![Makefile修改前](https://zijian-images.oss-cn-shanghai.aliyuncs.com/images/img/Makefile%E4%BF%AE%E6%94%B9%E5%89%8D.png)

将```LOADLIBES```改为```LDLIBS

Makefile修改后

  • 编译utils

当前路径下使用make进行默认编译

修改模拟器bochs到qemu

  • 修改Make.vars

修改/home/{username}/pintos/src/threads/Make.vars文件

主要修改模拟器,修改前为

Make.vars修改前

将bochs改为qemu

Make.vars修改后

结束后可以切换到threads路径下,使用make进行默认编译生成build

  • 修改pintos文件

    • 将路径切换到utils

    • 使用vim修改pintos文件104行左右代码,将bochs改为qemu,修改前后如图所示

      pintos1修改前

      pintos1修改后

    • 使用vim修改pintos文件260行左右代码,将kernel.bin改为绝对路径。kernel.bin是上一步在threads路径下编译生成的,在编译生成的build文件夹下,路径为/home/{username}/pintos/src/threads/build。修改前后如图所示

      pintos2修改前

      pintos2修改后

    • 使用vim修改pintos文件627行左右代码,将qemu的版本从qemu-system-i386改为qemu-system-x86_64。修改前后如图所示

      pintos3修改前

      pintos3修改后

  • 修改Pintos.pm文件

    仍在当前utils路径下,使用vim修改Pintos.pm文件,将loader.bin也更改为绝对路径。loader.binkernel.bin文件一样被编译生成在threads/build/路径下。修改前后如图所示

Pintos.pm修改前

Pintos.pm修改后

添加环境变量

使用vim修改~/.bashrc,在最后一行加上

1
export PATH=/home/{username}/pintos/src/utils:$PATH

如图所示

修改.bashrc

1
2
3

```shell
source ~/.bashrc

试运行与make check

执行

1
pintos run alarm-multiple

会弹出qemu,并有很多信息刷新,最后显示complete,出现如图所示结果:

测试1

为了实验一顺利进行,在threads/build路径下进行make check,第一次make check时间消耗很长,需要多等等,最后出现如图所示结果表示成功

make_check

make_check2