MIT6 828Lab(0) 實驗環境搭建

2021-10-10 14:14:18 字數 3301 閱讀 7798

前言,終於閒下來了,有時間做點自己想做的事情,這個lab是我想做了很久的東西,昨天忙活了幾個小時終於搭建成功。

6.828官方lab

話不多說,直接開始,講太多複雜的只會讓人頭大。

這個不強求系統是哪個版本的,我是前不久裝的,所以是新的。

輸入1.$ objdump -i

第二行或者第三行應該出現 elf32-i386字樣,沒有的話先不著急,後面會統一裝

2.$ gcc -m32 -print-libgcc-file-name

應該出現

/usr/lib/gcc/i486-linux-gnu/version/libgcc.a
或者

/usr/lib/gcc/x86_64-linux-gnu/version/

32/libgcc.a

3.如果上面都正常,說明不需要重新編譯工具鏈;如果不正常,嘗試輸入下面的**:

$ sudo apt-get install -y build-essential gdb

如果是正常的系統應該1、2步就ok了,第三步用不上,用了如果出了問題可以google一下自己解決。

下面的步驟和6.828官方lab一致,非常穩妥。

$ mkdir ~/6.828建立6.828資料夾在主目錄下

$ cd ~/6.828進入6.828資料夾

$ add git這一步的意思是在你的系統上安裝git,如果已經安裝好了可以直接下一步,如果沒有就安裝一下。輸入sudo apt-get install git即可

~/6.828$ git init初始化git倉庫,這裡比官方多了一步,又是乙個非常穩妥的操作

~/6.828$ git clone lab把6.282官方給的的jos原始碼拉取下來

~/6.828$ cd lab進入lab資料夾

完成以上6步以後開啟主目錄的6.828資料夾,會看到裡面有我們的lab了,到這裡官方就開始直接講課了,讓我們直接在lab裡make一下,他預設我們安裝了qemu**器,但是其實我們沒有,所以還要進行qemu的安裝。

安裝qemu

以下步驟是最穩妥的順序,中間遇到了bug自己查一下然後解決,通過了再進行下一步,我自己反反覆覆debug到最後才發現,原來還是沒有按步驟實施到位。

(1)首先安裝一些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*

這裡可能會出現某個命令失敗的情況,提示你因為某些包的依賴原因不能安裝,這裡給出解決方案:

桌面左下角——軟體和更新——更新——for other packages —— all updates

(2) 拉取qemu

這一步的前提是你已經在lab資料夾裡了,也就是上面的第六步進入的,我們要把qemu clone到lab資料夾裡,如果自己不小心把命令終端關了,自己進入

cd ~/6.828/lab

已經在的可以跳過這裡。

然後開始拉取,速度是不是很慢,慢就對了,不過沒辦法,官方給的位址,其他地方的可能在後面用的時候出現bug,但是我掛的梯子,所以一分鐘就好了。

~/6.828/lab$ git clone qemu

(3)cd qemu進入qemu資料夾

(4)~/6.828/lab/qemu$ ./configure --disable-kvm --disable-werror --prefix=$hmoe --target-list="i386-softmmu x86_64-softmmu"配置qemu

(5)找到commands-posix.c檔案,位置是:

6.828——lab——qemu——qga——commands-posix.c

在宣告裡加上:

#include儲存

(6)~/6.828/lab/qemu$ su root進入root許可權,密碼是每次開機以後隨機的,可以通過:

$ sudo passwd設定,設定成自己的開機user密碼就好了,反正關機以後又重置了。

(7)~/6.828/lab/qemu$ sudo apt-get install gcc-multilib安裝開發環境需要的32位gcc,系統自帶的是64位的

(8)~/6.828/lab/qemu$ make && make install最後一步,編譯並安裝,關閉root。

輸入$ qemu-system-i386,出現了qemu**器的介面成功。

~/6.828/lab/qemu$ cd ..或者~/6.828/lab/qemu$ cd ~/6.828/lab返回到上一級lab目錄

~/6.828/lab$ make出現乙個kernel的img映象檔案,說明成功

~/6.828/lab$ make qemu,出現如下介面,說明成功

以上就是6.828實驗的實驗環境搭建部分,這裡提示,如果出現安裝過程混亂了的情況,可以把整個6.828資料夾刪除重新再來,已經安裝的包再安裝不會衝突,系統會自動檢測。只要每一步按順序進行,就可以完成,這個過程中遇到的bug可以自己再查查,都能找到解決方案。

以上~

682 棒球比賽

你現在是棒球比賽記錄員。給定乙個字串列表,每個字串可以是以下四種型別之一 1.整數 一輪的得分 直接表示您在本輪中獲得的積分數。2.一輪的得分 表示本輪獲得的得分是前兩輪有效 回合得分的總和。3.d 一輪的得分 表示本輪獲得的得分是前一輪有效 回合得分的兩倍。4.c 乙個操作,這不是乙個回合的分數 ...

682 棒球比賽

你現在是棒球比賽記錄員。給定乙個字串列表,每個字串可以是以下四種型別之一 1.整數 一輪的得分 直接表示您在本輪中獲得的積分數。2.一輪的得分 表示本輪獲得的得分是前兩輪有效 回合得分的總和。3.d 一輪的得分 表示本輪獲得的得分是前一輪有效 回合得分的兩倍。4.c 乙個操作,這不是乙個回合的分數 ...

682 棒球比賽

題目描述 你現在是棒球比賽記錄員。給定乙個字串列表,每個字串可以是以下四種型別之一 1.整數 一輪的得分 直接表示您在本輪中獲得的積分數。2.一輪的得分 表示本輪獲得的得分是前兩輪有效 回合得分的總和。3.d 一輪的得分 表示本輪獲得的得分是前一輪有效 回合得分的兩倍。4.c 乙個操作,這不是乙個回...