在Linux上安装PintOS

电脑环境

Ubuntu20.04.1 LTS

Linux version 5.4.0-42-generic

检查安装环境

#GCC
gcc --version
#GNU binutils
addr2line --version
ar --version
ld --version
objcopy --version
ranlib --version
#Perl
perl --version
#GNU make
make --version
#QEMU
qemu-system-aarch64 --version
#GDB
gdb --version
#X
sudo X --version

若不存在qemu则按如下命令安装或者选择不安装qemu而用bochs

sudo apt-get install qemu

安装并测试PintOS

下载pintos源码并解压
#以下为旧版本  安装会有一些问题
#wget http://www.stanford.edu/class/cs140/projects/pintos/pintos.tar.gz
#tar -xzvf pintos.tar.gz

#安装新版本
git clone git://pintos-os.org/pintos-anon

#清除版本控制信息
cd pintos-anon
find . -name ".git" | xargs rm -Rf
编辑环境变量
gedit ~/.bashrc

插入export PATH=$PATH:/usr/bin:/home/.../pintos-anon/src/utils(如果是zsh则配置.zashrc)

更新配置

source ~/.bashrc
编译utils
  1. 修改/utils/pintos-gdb中的GDBMACROS为当前路径GDBMACROS=/home/.../pintos-anon/src/misc/gdb-macros
  2. 修改/utils/Makefile中的LOADLIBESLDLIBS
  3. /src/utils中执行make,编译成功则执行下一步,若编译失败则查看存在问题中的解决方案。
编译threads
  1. 修改/src/threads/MAke.vars,更改bochsqemu
  2. /src/threads下执行make
编辑pintos

/utils/pintos

  • 103行:更改bochsqemu
  • 259行:更改kernel.bin/home/.../src/threads/build/kernel.bin
  • 623行 :更改qemu-system-i386qemu-system-x86_64
编辑pintos.pm

/utils/Pintos.pm

  • 362行:更改 loader.bin/home/.../src/threads/build/loader.bin
运行pintos

pintos run alarm-multiple

存在问题

如果在/src/utils中执行make报错

squish-pty.c:10:10: fatal error: stropts.h: No such file or directory

这是因为LInux版本较高,老版本的Linux会包含这个文件,但是有些新的Linux版本已经不再包含了。解决方案可以在/usr/include/下建立一个空的stropts.h文件,或者注释掉代码中与之相关的部分(不要从老版本的Linux中直接拷贝过来,拷贝过来的stropts.h文件中,可能还会包含别的找不到的头文件)。

如果引入stropts.h后仍然再次报错,则需要根据报错注释掉一些代码,仍然是版本问题。需要注释掉squish-pty.c中掉第288到293行

参考链接

https://web.stanford.edu/class/cs140/projects/pintos/pintos_12.html#SEC166

https://github.com/kumardeepakr3/PINTOS-Ubuntu

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值