Dockerizing Pintos Development Environment สำหรับหลักสูตร KAIST CS330 หลักสูตร
ที่เก็บนี้ให้ภาพนักเทียบท่าของสภาพแวดล้อมสำหรับการพัฒนา Pintos envrionment ถูกตั้งค่าให้คล้ายกับหลักสูตร KAIST CS330 ที่ใช้ ด้วย envrionment นี้คุณสามารถพัฒนาและทดสอบ pintos ของคุณในท้องถิ่นของคุณ
Pintos สำหรับ KAIST CS330 Course ได้รับการจำลองในสภาพแวดล้อมแบบเก่า:
คุณสามารถเลือก Bochs หรือ QEMU เพื่อเลียนแบบ pintos เราจัดหาอีมูเลเตอร์ทั้งสองทั้งหมด
ที่เก็บนี้ประกอบด้วยไฟล์ต่อไปนี้:
pintos.tar.gz เป็นซอร์สโค้ด Pintos เริ่มต้นสำหรับหลักสูตรนี้
Dockerfile สำหรับ Docker Image ให้สภาพแวดล้อมในการพัฒนา Pintos
pintos.sh ให้คุณจัดการโครงการของคุณด้วยคำสั่งง่ายๆ
pintos-travis.yml เป็นไฟล์กำหนดค่า Travis CI สำหรับโครงการของคุณ
.travis.yml คือการสร้างและปรับใช้ภาพ Docker ในที่เก็บนี้
README.md
LICENSE
ซอร์สโค้ด Pintos เริ่มต้นสำหรับหลักสูตรนี้ถูกบีบอัดเป็น pintos.tar.gz เปิดเครื่องซิปลงในท้องถิ่นของคุณ
จากนั้นคุณสามารถเรียกใช้อิมเมจนักเทียบท่าได้โดยดึงจาก DockerHub ด้วยคำสั่งต่อไปนี้:
$ 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 เช่น threads สำหรับ pintos/src/threads
เราเสนอให้คุณใช้ Simple Shell Script, pintos.sh ในที่เก็บของเรา ย้าย pintos.sh ไปที่ /usr/local/bin หรือที่ไหนสักแห่งที่เพิ่มลงใน PATH
แก้ไข PINTOS_CONTAINER ไปยัง <container-name> ของคุณ จากนั้นคุณสามารถใช้
sudo pintos start (เริ่มคอนเทนเนอร์ Docker)sudo pintos stop (หยุดคอนเทนเนอร์ 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>"ในทุกที่โดยไม่ต้องเข้าถึงนักเทียบท่าโดยตรง
ตัวอย่างเช่นหากคุณต้องการดูเกรดสำหรับโครงการ userprog เพียงทำ:
$ sudo pintos grade userprog && vim < your-pintos-dir > /src/userprog/build/grade หมายเหตุ: pintos help จะพิมพ์ข้อความช่วยเหลือ
หมายเหตุ: การเพิ่มบัญชีของคุณในกลุ่ม docker ทำให้คุณสามารถใช้สิ่งนี้ได้โดยไม่ต้อง sudo
นอกจากนี้คุณยังสามารถใช้ Travis CI (ที่นี่สำหรับ repos ส่วนตัว) เพื่อจัดการโครงการของคุณด้วยการรวมอย่างต่อเนื่อง อาจเป็นประโยชน์สำหรับการทำงานร่วมกับสมาชิกในทีมของคุณ
pintos-travis.yml เป็นไฟล์กำหนดค่าย้ายไปยังไดเรกทอรีรูทของโครงการของคุณ (ถ้าคุณใช้ Git มันจะเป็นที่ .git ตั้งอยู่) เปลี่ยนชื่อเป็น .travis.yml
ก่อนที่จะใช้สิ่งนี้คุณควรกำหนดค่าการตั้งค่า Travis CI ในเว็บไซต์ตามที่คุณต้องการโดยเฉพาะอย่างยิ่งคุณ ควรเพิ่มตัวแปรสภาพแวดล้อม TARGET_DIRECTORY เป็นหนึ่งใน threads , userprog , vm หรือ ฯลฯ คุณสามารถเปลี่ยนได้เมื่อใดก็ตามที่คุณเริ่มโครงการใหม่เช่นเปลี่ยนจาก threads เป็น userprog ใช้