MIT6.S081(操作系統)學習筆記
操作系統入門系列-MIT6.828(操作系統)學習筆記(一)---- 操作系統介紹與接口示例
操作系統入門系列-MIT6.828(操作系統工程)學習筆記(二)----課程實驗環境搭建(wsl2+ubuntu+quem+xv6)
文章目錄
- MIT6.S081(操作系統)學習筆記
- 前言
- 一、安裝依賴
- 1.測試環境
- (a)檢測1
- (b)檢測2
- 2.檢測未通過情況
- 3.安裝依賴
- 二、安裝QEMU
- 1.下載源碼
- 2.修改配置
- (a)修改Makefile
- (b)增加頭文件
- (c)修改編譯參數
- 2.編譯QEMU
- 三、啟動xv6
- 1.下載實驗源碼
- 2.編譯啟動
- 四、2023版本配置
- 1.配置環境
- 2.檢查環境
- 3.啟動xv6
- 總結
前言
該課程有大量的課程實驗,理論和實驗的教學都是基于課程組設計的xv6操作系統(模仿Unix設計風格)。通過大量實驗和課程,可以對操作系統特別是Linux有深入的理解。
本篇文章講解實驗的環境qemu+xv6搭建,具體配置如下:
虛擬機:WSL2
Linux:ubuntu20.04
官方的教程如下:Tools Used in 6.828
上述的課程資料是2018年,筆者發現2023年課程有所該改變,貌似改了名字,因此補充2023版本的xv6環境配置,更加的簡單。
官方的教程如下:Tools Used in 6.1810
一、安裝依賴
1.測試環境
(a)檢測1
objdump -i
結果為:(部分打印)
有elf32-i386即為正確
(b)檢測2
gcc -m32 -print-libgcc-file-name
結果為:
有
/usr/lib/gcc/x86_64-linux-gnu/11/32/libgcc.a
或者
/usr/lib/gcc/i486-linux-gnu/version/libgcc.a
即為正確
2.檢測未通過情況
若上述檢測未通過,運行下面代碼:
sudo apt-get install -y build-essential gdb
命令執行結果如果出現錯誤:“__udivdi3 not found” 或者 “__muldi3 not found”,是因為需要32位的支持庫,運行下面代碼修復:
sudo apt-get install gcc-multilib
3.安裝依賴
安裝一些依賴庫,以便順利編譯QEMU
sudo apt-get install libsdl1.2-dev
sudo apt-get install libglib2.0-dev
sudo apt-get install libz-dev
sudo apt-get install libpixman-1-dev
sudo apt-get install libtool*
sudo apt-get install zlib1g-dev
如果中間出現錯誤,可能需要運行:
sudo apt-get update
二、安裝QEMU
1.下載源碼
使用官方鏈接下載QEMU源碼,執行命令如下:
git clone https://github.com/mit-pdos/6.828-qemu.git qemu
該命令會在當前目錄下,將qemu的源碼下載到名為“qemu”的文件夾內
2.修改配置
(a)修改Makefile
在qemu文件夾內,修改Makefile文件,在QEMU源碼目錄下的Makefile文件最后加上一行
QEMU_CFLAGS+=-w
結果如下圖:
(b)增加頭文件
在 qga/commands-posix.c文件中加 #include <sys/sysmacros.h>
結果如圖:
(c)修改編譯參數
將QEMU源碼目錄下的config-host.mak文件中的-Werror去掉
2.編譯QEMU
在qemu目錄下運行
./configure --disable-kvm --target-list="i386-softmmu x86_64-softmmu"
如果沒有成功,檢查上述問題是否修改
運行成功后,進入root權限,并執行make:
sudo su
make && make install
退出root用戶
exit
三、啟動xv6
1.下載實驗源碼
git clone https://pdos.csail.mit.edu/6.828/2018/jos.git lab
該命令會在當前目錄下,將實驗的源碼下載到名為“lab”的文件夾內
結果如下:(編譯后的)
2.編譯啟動
在lab目錄下,執行下面命令:
make
sudo make qemu
結果如下:
實驗環境搭建成功
四、2023版本配置
1.配置環境
輸入命令
sudo apt-get install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu
部分結果如下:
2.檢查環境
輸入命令:
qemu-system-riscv64 --version
結果如下:
輸入命令:
riscv64-linux-gnu-gcc --version
結果如下:
輸入命令:
riscv64-unknown-elf-gcc --version
輸入命令:
riscv64-unknown-linux-gnu-gcc --version
結果如下:
這里沒有發現對應工具,但是不影響后面的啟動。
3.啟動xv6
輸入命令,拉取實驗代碼:
git clone git://g.csail.mit.edu/xv6-labs-2023 lab
進入lab目錄,輸入命令:
make qemu
結果如下:
即為啟動成功。
總結
配置2018版本的過程中如果出現其他本文沒有出現的bug,很有可能是沒有依賴庫或者依賴庫的函數版本不對。可以按照報錯提示修改相應的函數名稱或者查看其他博客。wsl2+ubuntu的搭建,之后可能會出教程。