这个学期在学习操作系统课程,实践课要求要用pintos。老师给的环境是openSUSE,因为之前用过ubuntu觉得很好用,于是便自己找教程在Ubuntu下面装pintos。
一:准备工作
首先准备环境和文件,我用的环境是Ubuntu 14.04,在虚拟机中安装的,bochs用的是目前最新版本bochs2.6.7。
-
- 下载 选择 tar.gz 格式;
- 下载;
- 将下载完成的两个文件(bochs-2.6.7.tar.gz, pintos.tar.gz)移动到指定的文件夹(我用的是 ~/ 目录,方便后续操作);
- 使用tar命令分别解压缩两个文件
$ tar zxvf bochs-2.6.7.tar.gz$ tar zcvf pintos.tar.gz
到这里我们所需要的文件都已经准备就绪了。
二:Ubuntu环境配置
为了避免出现一些不必要的麻烦,建议下面几个操作都做一下。
在命令行输入以下代码:
$ sudo apt-get install buid-essential$ sudo apt-get install xorg-dev$ sudo apt-get install bison$ sudo apt-get install libgtk2.0-dev$ sudo apt-get install libc6:i386 libgcc1:i386 gcc-4.6-base:i386 libstdc++5:i386 libstdc++6:i386 $ sudo apt-get install libncurses5:i386 $ sudo apt-get install g++-multilib
输入命令后会提示输入密码,这里的密码是不显示位数的。
然后会提示Y/N,输入y;
全部安装完成之后:
三:安装bochs 和 pintos
在第一步的操作中我们已经解压缩了两个文件,为了方便默认使用的是~/文件夹,现在开始安装:
在命令行输入:
1、安装bochs:
# 安装bochs$ cd bochs-2.6.7$ ./configure --enable-gdb-stub$ make$ sudo make install
常见错误:
1.configure: error: C++ preprocessor "/lib/cpp"fails sanity check
解决方法:联网状态下在终断输入 $ sudo aptitude install build-essential
2.X windows gui was selected, but Xwindows libraries were not found.",
解决方法:联网状态下在终端输入
$ sudo apt-get install libx11-dev$ sudo apt-get install xserver-xorg-dev$ sudo apt-get install xorg-dev
2、安装和运行pintos
$ tar zxvf pintos2011.tar.gz$ cd pintos/src/threads$ make$ cd build$ ../../utils/pintos -- run alarm-multiple
3、复制utils
# Copy utils$ cd ̃/pintos/src/utils$ sudo cp backtrace /usr/bin/$ sudo cp pintos /usr/bin/$ sudo cp pintos-gdb /usr/bin/$ sudo cp pintos-mkdisk /usr/bin/ $ sudo cp Pintos.pm /usr/bin/
4、安装pintos-gdb
# Install pintos-gdb$ cd ̃/pintos/src/misc$ sudo cp gdb-macros /usr/bin/$ sudo vim /usr/bin/pintos-gdb# Modify the 4th line: GDBMACROS=/usr/bin/gdb-macros $ cd /usr/bin/ $ sudo chmod a+rx backtrace $ sudo chmod a+rx pintos* $ sudo chmod a+rx gdb-macros $ sudo chmod a+rx Pintos.pm $ test pintos-gdb
5、编译utils
# Compile utils$ cd ~/pintos/src/utils$ make$ sudo cp squish-pty /usr/bin$ sudo chmod a+rx /usr/bin/squish-pty
在这一步我make的时候出错了,去知乎上提问了一下,得到答案:
$ cd pintos/src/utils/$ vim Makefile # Modify the 5th line: LDFLAGS -> LDLIBS
中间有个小插曲,在我提问下面回答的那位朋友告诉了我如果修改,结果在我安装完了之后他表示他还没成功。。。
5、用gdb来调试pintos
$ cd /pintos/src/threads/build$ ../../utils/pintos --gdb -s -- run alarm-multiple (我们已经配置好了环境可以直接用pintos命令)
这个时候终端显示等待连接,打开另一个终端,输入:
$ cd pintos/src/threads/build/$ gdb kernel.o
注意:这里是小写的字母o,而不是数字0。
成功进入gdb,在(gdb)中输入:
(gdb) target remote localhost: 1234(gdb) continue
注意: 这里的localhost的冒号后面有一个空格。
OK,连接完成,这个时候应该能看到等待的终端上有显示了。(图片中因为我没开另一个所以会出现time out)
如果有什么问题欢迎大家一起讨论,有出现错误的也可以评论告诉我,我会尽力找到原因并解答。
2015年4月19日