Ubuntu安装pintos

  这个学期在学习操作系统课程,实践课要求要用pintos。老师给的环境是openSUSE,因为之前用过ubuntu觉得很好用,于是便自己找教程在Ubuntu下面装pintos。

  

  一:准备工作

    首先准备环境和文件,我用的环境是Ubuntu 14.04,在虚拟机中安装的,bochs用的是目前最新版本bochs2.6.7。

           pintos官网

    1. 下载bochs 选择 tar.gz 格式;
    2. 下载pintos
    3. 将下载完成的两个文件(bochs-2.6.7.tar.gz, pintos.tar.gz)移动到指定的文件夹(我用的是 ~/ 目录,方便后续操作);
    4. 使用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日

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。