Tiny OS เป็นระบบปฏิบัติการที่ทำงานบนสถาปัตยกรรม x86_64
โครงการนี้ได้รับการพัฒนาในระบบ linux บนระบบ windows คุณสามารถเรียกใช้ระบบย่อย linux ได้โดยการติดตั้ง WSL
หากคุณใช้ WSL :
windows ; ขอแนะนำให้ติดตั้ง Xming หรือ VCXSVR-ac หรือตรวจสอบ disable access control ผ่าน GUIWSL :WSL (เวอร์ชัน 1): export DISPLAY=:0WSL2 (เวอร์ชัน 2): export DISPLAY= $( cat /etc/resolv.conf | grep nameserver | awk ' {print $2} ' ) :0~/.bashrc หรือ ~/.profileCould not initialize SDL (No available video device) ... หรือข้อผิดพลาดใด ๆ เกี่ยวกับ GTK ให้ตรวจสอบว่าเซิร์ฟเวอร์ X ของคุณเริ่มต้นขึ้นหรือไม่และหาก DISPLAY ตัวแปรสภาพแวดล้อมถูกตั้งค่าอย่างถูกต้อง Rust เป็นภาษาการเขียนโปรแกรมระดับระบบที่ทันสมัยและโครงการนี้ส่วนใหญ่ได้รับการพัฒนาโดยใช้ภาษา Rust ดาวน์โหลดและติดตั้งผ่านเว็บไซต์อย่างเป็นทางการของ Rust หมายเหตุ: โครงการนี้ต้องการการติดตั้ง Toolchain เวอร์ชัน nightly
หลังจากการติดตั้งเสร็จสมบูรณ์ให้ติดตั้ง llvm-tools ผ่าน rustup :
rustup component add llvm-tools-preview ติดตั้งเครื่องมือที่มีประโยชน์ผ่าน cargo เพื่อการพัฒนา:
cargo install cargo-binutilsbochs Emulator การจำลองผ่านตัวจำลอง bochs ลิงค์ซอร์สโค้ดดาวน์โหลดลิงค์: Source Forge - Bochs X86 PC Emulator หลังจากดาวน์โหลดแล้วให้รวบรวมและติดตั้ง
คำสั่งมีดังนี้:
cargo run --release เส้นทางภาพเคอร์เนลที่คอมไพล์คือ target/os.img
สร้างไฟล์ os.img ในไดเรกทอรี ./bochs ผ่าน bximage :
bximage -func=create -hd=10M -imgmode=flat ./bochs/os.img -q engrave ./target/os.img เข้า ./bochs/os.img ผ่านเครื่องมือ dd :
# 注意下面的参数 count 要根据生成的 target/os.img 文件的大小进行调整
dd if=target/os.img of=bochs/os.img bs=512 count=250 conv=notruncbochs bochs/conf มีไฟล์การกำหนดค่าต่อไปนี้ในไดเรกทอรี:
bochsdbg-gdb.bxrc : คุณสามารถแก้ไขข้อบกพร่องจากระยะไกลผ่าน gdb และผูก localhost:1234 (คุณต้องเปิดใช้งาน --enable-gdb-stub เมื่อรวบรวม bochs )bochsdbg-win : เปิด debugger bochs พร้อมอินเทอร์เฟซกราฟิกบนแพลตฟอร์ม windowbochsrc.bxrc : ไฟล์การกำหนดค่า bochs ขั้นพื้นฐานที่สุดโดยไม่ต้องใช้ฟังก์ชัน debug เรียกใช้ bochs เพื่อเปิดใช้งานการจำลอง:
bochs -q -f bochs/conf/bochsrc.bxrcqemu ซึ่งแตกต่างจาก bochs , qemu สามารถโหลด target/os.img ที่สร้างขึ้นได้โดยตรง:
qemu-system-x86_64 -drive format=raw,file=bochs/os.img -boot c
มีไฟล์ Makefile ในไดเรกทอรีรูทของโครงการซึ่งกำหนดคำสั่งการทำงานและการดีบักบางอย่าง:
clean : ใช้ทำความสะอาดไฟล์ที่สร้างขึ้นbuild-release : ใช้ในการรวบรวมภาพเคอร์เนลเวอร์ชันรี releasebuild-debug : ใช้ในการรวบรวมภาพเคอร์เนลเวอร์ชัน debug (ยังไม่เสร็จ)run-bochs : ใช้ในการรวบรวมภาพเคอร์เนลและเริ่มการจำลอง bochsrun-qemu : ใช้ในการรวบรวมภาพเคอร์เนลและเริ่มการจำลอง qemudebug-bochs : ใช้ในการรวบรวมภาพเคอร์เนลเริ่ม bochs และ debug ระยะไกลผ่าน rust-gdbdebug-qemu : ใช้ในการรวบรวมภาพเคอร์เนลเริ่มต้น qemu และ debug ระยะไกลผ่าน rust-gdb โครงการนี้แบ่งออกเป็น 4 ส่วน:
builder : ตั้งอยู่ในไดเรกทอรี src ส่วนใหญ่จะใช้ในการรวบรวมและสร้างภาพเคอร์เนลboot : ตั้งอยู่ในไดเรกทอรี boot มันเป็น bootloader สำหรับ tiny OSboot_info : อยู่ในไดเรกทอรี boot_info มันมีโครงสร้าง BootInfokernel : ตั้งอยู่ในไดเรกทอรี kernel มันเป็นรหัสเคอร์เนลของ tiny OS long mode BootInfo สำหรับการส่งข้อมูลจากขั้นตอน bootloader ไปยัง kernel elf logger (ใช้เพื่อใช้ฟังก์ชั่นการพิมพ์ tiny os และการดีบักระหว่างการพัฒนาเคอร์เนล) Page Fault ประมวลผลเบื้องต้น GP Fault Double Fault linked_list_allocator buddy system spawn ทั่วโลกที่มีอยู่ทั่วโลก FAT32 shellBuilder ที่ยืดหยุ่นมากขึ้น (คุณสามารถเลือกที่จะรวบรวม debug และ release ภาพ) bochs สามารถโหลดได้โดยตรงแทนที่จะแกะสลักเป็น bochs/os.img ผ่านเครื่องมือ dd