系統(tǒng)版本:Ubuntu 18.04.3
0 介紹
mit6.828是一門經(jīng)典的操作系統(tǒng)課程卜壕,通過這門課程可以學(xué)習(xí)到操作系統(tǒng)的設(shè)計與實現(xiàn)烙常。
據(jù)說會對linux開發(fā)很有幫助轴捎,作為一個即將工作的菜鳥,又不擅長基礎(chǔ)理論的學(xué)習(xí)蚕脏,我決定從這門課入手侦副,希望能對操作系統(tǒng)有深入的認(rèn)識和了解。
框圖(沒必要看驼鞭,我就是想放放提升逼格):
1 安裝工具包
需要安裝的工具包如下:
執(zhí)行如下指令:
sudo apt-get install -y build-essential libtool* libglib2.0-dev libpixman-1-dev zlib1g-dev git libfdt-dev gcc-multilib gdb python
2 安裝qemu
qemu是一個與bochs和pearpc類似的模擬器,或者說是仿真器,完全的軟件模擬,他能模擬很多類型的cpu秦驯。
2.1 下載
執(zhí)行如下指令:
git clone https://github.com/mit-pdos/6.828-qemu.git qemu
該指令會在當(dāng)前目錄創(chuàng)建qemu文件夾,并克隆代碼到本地挣棕。
2.2 編譯&安裝
首先進(jìn)入到qemu文件夾下:
cd qemu
執(zhí)行指令:
./configure --disable-werror --target-list="i386-softmmu x86_64-softmmu"
如果沒有安裝Python译隘,這一步會報錯:
出現(xiàn)報錯 ERROR: Python not found. Use --python=/path/to/python
需要安裝Python 2.7才能正常配置亲桥。
如果出現(xiàn):
disanbling libtool due to broken toolchain support
說明沒有安裝到所需要的libtool,在上一節(jié)我已經(jīng)把指令改成了安裝所有l(wèi)ibtool工具细燎,應(yīng)該不會再出現(xiàn)這個報錯两曼。
上述執(zhí)行完畢沒有報錯,就可以執(zhí)行編譯安裝指令:
make -j8 && make install
可能出現(xiàn)的三個錯誤如下:
- 錯誤1
qga/commands-posix.c: In function ‘dev_major_minor’:
qga/commands-posix.c:633:13: error: In the GNU C Library, "major" is defined
by <sys/sysmacros.h>. For historical compatibility, it is
currently defined by <sys/types.h> as well, but we plan to
remove this soon. To use "major", include <sys/sysmacros.h>
directly. If you did not intend to use a system-defined macro
"major", you should undefine it after including <sys/types.h>. [-Werror]
*devmajor = major(st.st_rdev);
^~~~~~~~~~~~~~~~~~~~~~~~~~
錯誤中已經(jīng)給出了解決方案玻驻,在 qga/commands-posix.c文件中的 #include <sys/types.h> 下面增加#include <sys/sysmacros.h>即可悼凑。緊接著的那個錯誤也是這個引起的,改了就都會解決的璧瞬。
- 錯誤2
block/blkdebug.c: In function ‘blkdebug_refresh_filename’:
block/blkdebug.c:749:31: error: ‘%s’ directive output may be truncated writing up to 4095 bytes into a region of size 4086 [-Werror=format-truncation=]
"blkdebug:%s:%s",
這個不是錯誤户辫,只需要把qemu文件夾下的config-host.mak文件中的-Werror去掉就好了(直接ctrl+F搜索Werror)
- 錯誤3
install -d -m 0755 "/usr/local/share/qemu"
install: cannot change permissions of ‘/usr/local/share/qemu’: No such file or directory
Makefile:382: recipe for target 'install-datadir' failed
make: *** [install-datadir] Error 1
這是安裝時報錯,主要是我沒有使用管理員賬戶嗤锉,沒有成功創(chuàng)建文件夾渔欢。可以再執(zhí)行一次sudo make install即可瘟忱。
3 下載實驗源碼
退出qemu文件夾奥额,下載實驗源碼:
git clone https://pdos.csail.mit.edu/6.828/2018/jos.git lab
出現(xiàn)找不到代碼庫,可能是源碼有更新访诱,可以嘗試更改2018那個年份
參考資料
mit6.828 實驗環(huán)境配置
MIT-6.828 環(huán)境搭建
配置qemu時遇到disanbling libtool due to broken toolchain support問題的解決辦法
6.828 | 編譯QEMU
Lab 1: Booting a PC