zhuzilin's Blog

about

6.828 系统配置

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测试其内容是否正确。