Ubuntu安装pintos
这个学期在学习操作系统课程,实践课要求要用pintos。老师给的环境是openSUSE,因为之前用过ubuntu觉得很好用,于是便自己找教程在Ubuntu下面装pintos。
一:准备工作
首先准备环境和文件,我用的环境是Ubuntu 14.04,在虚拟机中安装的,bochs用的是目前最新版本bochs2.6.7。
到这里我们所需要的文件都已经准备就绪了。
二: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日
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。