KAIST CS330課程的Dockerized Pintos開發環境
該存儲庫提供了Pintos開發環境的碼頭圖像。設想與一個KAIST CS330課程的使用相似。有了這個設想,您可以在本地開發和測試品脫。
KAIST CS330課程的Pintos在舊版本的環境中模仿:
您可以選擇Bochs或QEMU模擬Pintos。我們提供兩個模擬器中的所有。
此存儲庫的參數以下文件:
pintos.tar.gz是本課程的初始Pintos源代碼。
Docker Image的Dockerfile提供了開發Pintos的環境。
pintos.sh可讓您使用簡單命令來管理項目。
pintos-travis.yml是您項目的Travis CI配置文件。
.travis.yml將在此存儲庫中構建和部署Docker映像。
README.md
LICENSE
本課程的初始Pintos源代碼被壓縮為pintos.tar.gz 。將其解壓縮到您的本地。
然後,您可以通過從dockerhub拉下以下命令來運行Docker映像:
$ sudo docker pull hangpark/pintos-dev-env-kaist
$ sudo docker run -t -d -v < your-pintos-dir > :/pintos --name < container-name > hangpark/pintos-dev-env-kaist或從dockerfile建造:
$ git clone https://github.com/hangpark/pintos-dev-env-kaist.git
$ sudo docker build --tag hangpark/pintos-dev-env-kaist pintos-dev-env-kaist
$ sudo docker run -t -d -v < your-pintos-dir > :/pintos --name < container-name > hangpark/pintos-dev-env-kaist(可能需要很長時間)
注意:確保src不是<your-pintos-dir> ,但該目錄直接包含src目錄。
注意:確保<your-pintos-dir>成為絕對路徑。
要運行Pintos,請使用以下命令:
$ sudo docker exec -i -t < container-name > /bin/bash -c
> " cd <target-dir> && pintos <pintos-cmd> "如果您只想構建(或檢查,分級)Pintos,例如,在threads中,輸入:
$ sudo docker exec -i -t < container-name > /bin/bash -c
> " cd threads && make [check|grade] "注意: <target-dir>是src目錄的相對路徑,例如pintos/src/threads的threads 。
我們為您提供在我們的存儲庫中使用簡單的Shell腳本pintos.sh 。將pintos.sh移至/usr/local/bin或添加到PATH地方。
將PINTOS_CONTAINER編輯為<container-name> 。然後您可以使用
sudo pintos start (啟動Docker容器)sudo pintos stop (停止碼頭容器)sudo pintos build <target-dir>sudo pintos check <target-dir>sudo pintos grade <target-dir>sudo pintos clean <target-dir>sudo pintos run <target-dir> "<pintos-cmd>"在任何地方,無需直接訪問Docker。
例如,如果您想查看userprog項目的等級,那就做:
$ sudo pintos grade userprog && vim < your-pintos-dir > /src/userprog/build/grade注意: pintos help將打印幫助消息。
注意:將您的帳戶添加到docker Group,您可以在沒有sudo的情況下使用它。
您也可以使用Travis CI(在此處用於私人存儲庫)連續集成來管理您的項目。這對於與您的團隊成員共同工作可能很有用。
pintos-travis.yml是配置文件,將其移至項目的根目錄。 (如果使用git,那將是.git所在的位置。)將其重命名為.travis.yml 。
在應用此信息之前,您應該根據需要在網站上配置Travis CI設置,尤其是應該添加環境變量TARGET_DIRECTORY作為threads , userprog , vm等。您可以在啟動新項目時可以更改它,例如在開始實現用戶程序功能時,將其從threads更改為從線程更改為userprog 。