date: 2019-02-12
tags: OS 6.828
从今天开始打算跟着MIT 6.828学习操作系统,做一下相关的lab。配置环境有点麻烦,在这里记录一下,也用来方便后人。
Ubuntu 18.04
首先运行
$ objdump -i
如果第二行不是elf32-i386
, 说明不是32位系统,需要安装
$ sudo apt-get install gcc-multilib
然后安装QEMU:
sudo apt install libsdl1.2-dev libtool-bin libglib2.0-dev libz-dev libpixman-1-dev
sudo apt install flex bison
cd your/path/6.828/
git clone https://github.com/mit-pdos/6.828-qemu.git qemu
cd qemu
./configure --disable-kvm --target-list="i386-softmmu x86_64-softmmu" --disable-werror --python=/your/python2.7/interpreter/path
sudo make && sudo make install
默认安装地址是/user/local/share
, 如果需要更改安装地址,可自行查询MIT提供的方法,主要是在./config
这行加入--prefix
.
如果不知道python解释器的位置,可以运行如下代码:
import sys
print(sys.executable)
安装完毕之后,下载JOS:
cd /your/path/6.828
git clone https://pdos.csail.mit.edu/6.828/2018/jos.git lab
cd lab
make
显示内容应与lab 1相同。
测试QEMU:
cd /your/path/6.828/lab
make qemu
应跳出窗口,窗口显示与lab1相同。
连接gdb,打开两个terminal,在第一个中:
cd /your/path/6.828/lab
make qemu-gdb
应当跳出和刚刚类似的窗口,但是显示stopping。
在第二个中:
cd your/path/6.828/lab
gdb
注意第一次运行的时候gdb会提示把某一行加入~/.gdbinit
中,其内容类似
add-auto-load-safe-path /your/path/6.828/xv6-public/.gdbinit
加入后重新进行上面的操作(重新打开两个terminal并运行指令),会发现在gdb的文字提示中出现:
+ target remote localhost:26000
就说明连接成功,可以继续用lab1测试其内容是否正确。