电脑环境
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
- 修改
/utils/pintos-gdb
中的GDBMACROS
为当前路径GDBMACROS=/home/.../pintos-anon/src/misc/gdb-macros
- 修改
/utils/Makefile
中的LOADLIBES
为LDLIBS
- 在
/src/utils
中执行make,编译成功则执行下一步,若编译失败则查看存在问题中的解决方案。
编译threads
- 修改
/src/threads/MAke.vars
,更改bochs
为qemu
- 在
/src/threads
下执行make
编辑pintos
/utils/pintos
- 103行:更改
bochs
为qemu
- 259行:更改
kernel.bin
为/home/.../src/threads/build/kernel.bin
- 623行 :更改
qemu-system-i386
为qemu-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