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 。