Dockerizing Pintos Desenvolvimento Ambiente do Curso Kaist CS330
Este repositório fornece uma imagem do Docker de um ambiente para o desenvolvimento de Pintos. O Envantionment deve ser semelhante ao que o curso Kaist CS330 usa. Com esse inventivo, você pode desenvolver e testar seus pintos em seu local.
O curso Kaist CS330 é emulado na versão antiga dos ambientes:
Você pode escolher Bochs ou QEMU para emular Pintos. Nós fornecemos todos os dois emuladores.
Este repositório consiste nos seguintes arquivos:
pintos.tar.gz é o código -fonte inicial do PINTOS para este curso.
Dockerfile para a imagem do Docker fornece ambiente para desenvolver pintos.
pintos.sh permite gerenciar seu projeto com comandos simples.
pintos-travis.yml é o arquivo de configuração do Travis CI para o seu projeto.
.travis.yml deve construir e implantar a imagem do Docker neste repositório.
README.md
LICENSE
O código -fonte inicial do PINTOS para este curso é compactado como pintos.tar.gz . Descompacte -o no seu local.
Em seguida, você pode simplesmente executar a imagem do Docker, puxando -se do DockerHub com os seguintes comandos:
$ 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 ou construir a partir do 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(Pode levar muito tempo)
Nota: verifique se src não é <your-pintos-dir> , mas o diretório contém diretamente o diretório src .
NOTA: Certifique-se de que <your-pintos-dir> seja um caminho absoluto.
Para executar pintos, use o seguinte comando:
$ sudo docker exec -i -t < container-name > /bin/bash -c
> " cd <target-dir> && pintos <pintos-cmd> " Se você deseja apenas construir (ou verificar, classificar) seus pintos, por exemplo, em threads , entrada:
$ sudo docker exec -i -t < container-name > /bin/bash -c
> " cd threads && make [check|grade] " NOTA: <target-dir> é um caminho relativo do diretório src , como threads para pintos/src/threads .
Oferecemos a você para usar o script de shell simples, pintos.sh , em nosso repositório. Mova pintos.sh para /usr/local/bin ou em algum lugar adicionado ao PATH .
Edite PINTOS_CONTAINER ao seu <container-name> . E então você pode usar
sudo pintos start (inicia o recipiente do Docker)sudo pintos stop (interrompe o recipiente do Docker)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>"Em qualquer lugar sem acessar diretamente o Docker.
Por exemplo, se você deseja ver uma nota para o projeto userprog , basta fazer:
$ sudo pintos grade userprog && vim < your-pintos-dir > /src/userprog/build/grade NOTA: pintos help imprimiria a mensagem de ajuda.
Nota: Adicionar sua conta ao docker Group faz com que você possa usá -lo sem sudo .
Você também pode usar o Travis CI (aqui para repositórios privados) para gerenciar seu projeto com integração contínua. Pode ser útil para trabalhar com os membros da sua equipe.
pintos-travis.yml é o arquivo de configuração, mova-o para o diretório raiz do seu projeto. (Se você usar o git, seria onde .git está localizado.) Renomeie -o para .travis.yml .
Antes de aplicar isso, você deve definir as configurações do Travis CI no site como desejar, especialmente adicionar uma variável de ambiente TARGET_DIRECTORY como um dos threads , userprog , vm ou etc. Você pode alterá -lo sempre que iniciar um novo projeto, como alterá -lo dos threads para userprog quando começar a implementar os recursos do programa de usuário.