慕課網: http://www.feemic.cn/mooc/icourse163/1002692015#。
百度雲鏈接:https://pan.baidu.com/s/1h2aEk6A_DGpXkZvRtNmeUw 提取碼:qoll
配套實驗課:https://www.shiyanlou.com/courses/115
實驗樓自帶linux實驗環境,但因爲我曾經裝了vmware+ubuntu 18.04 (64位) ,爲了更好遊戲體驗,手動配置實驗環境,總結了一下踩過的坑。
可能是網絡問題,git無法clone,故直接下載壓縮包。
百度雲鏈接:https://pan.baidu.com/s/1_u_iGGST3HXdeN9KMgbmkQ 提取碼:nnv3
解壓後oslab下有如下文件:
總結了前人的經驗和自己踩的坑,更換軟件源爲清華:
https://mirrors.tuna.tsinghua.edu.cn/
sudo apt-get install
安裝以下軟件包:
gcc-3.4
bin86
libc6-dev-i386
build-essential
libsm6:i386
libx11-6:i386
libxpm4:i386
libncurses5:i386
libexpat1:i386
測試環境:
編譯內核:
在hit-oslab-linux-20110823/oslab/
中打開終端
cd ./linux-0.11
make
無error即可
linux-0.11 目錄下是全部的源代碼,很多實驗內容都是要靠修改這些代碼來完成。修改後需要重新編譯內核,還是執行命令:make all
。
make
命令會自動跳過未被修改的文件,鏈接時直接使用上次編譯生成的目標文件,從而節約編譯時間。但如果重新編譯後,你的修改貌似沒有生效,可以試試先 make clean
,再 make all
(或者一行命令:make clean && make all
。make clean
是刪除上一次編譯生成的所有中間文件和目標文件,確保是在全新的狀態下編譯整個工程。
運行:
./run
應出現以下畫面:
運行彙編級調試:
./dbg-asm
應出現以下畫面:
運行C語言級調試:
- 執行以下命令
./dbg-c
- 再打開一終端窗口再執行以下命令
./rungdb
注意:不能更改啓動順序。
應出現以下畫面:
文件交換:
執行:
sudo ./mount-hdc
之後,hdc 目錄下就是和 0.11 內核一模一樣的文件系統了,可以讀寫任何文件(可能有些文件要用 sudo 才能訪問
讀寫完畢後卸載文件系統:
sudo umount hdc
注意 1:不要在 0.11 內核運行的時候 mount 鏡像文件,否則可能會損壞文件系統。同理,也不要在已經 mount 的時候運行 0.11 內核。
注意 2:在關閉 Bochs 之前,需要先在 0.11 的命令行運行 “sync”,確保所有緩存數據都存盤後,再關閉 Bochs