- ระบบปฏิบัติการสไตล์ DOS แบบ 64 บิต ที่พัฒนาด้วย Rust โดยมีการใช้ x86 แอสเซมบลีบางส่วนสำหรับการโหลดเคอร์เนล
- รองรับโหมดข้อความ VGA (80x25), ระบบไฟล์ FAT12 และสแตกเครือข่าย IPv4 ผ่าน SLIP (ICMP/UDP/TCP/HTTP)
- รันและพัฒนาบนเครื่องเสมือนที่ใช้ QEMU และรองรับฟลอปปีดิสก์จริงบางส่วน
- มี โปรแกรมแก้ไขข้อความแบบเรียบง่าย, การเติมชื่อไฟล์/ไดเรกทอรีอัตโนมัติด้วย TAB, เกม Snake และยูทิลิตีพื้นฐานอื่น ๆ มาให้
สถาปัตยกรรมและบูตโหลดเดอร์
- CPU เป้าหมายคือ x86_64 และมีแผนจะรองรับสถาปัตยกรรม ARM (aarch) ในอนาคต
- เวอร์ชันแรกใช้ บูตโหลดเดอร์ที่เขียนขึ้นเอง เพื่อโหลดเคอร์เนลขึ้นหน่วยความจำและเริ่มทำงาน
- ในเคอร์เนลแบบ 64 บิต ใช้ GRUB2 บูตโหลดเดอร์ เพื่อจัดการการเข้า Long Mode และการสลับไปยัง Protected Mode
- stage2 บูตโหลดเดอร์ ทำหน้าที่ตั้งค่า GDT, IDT, เพจจิง และจัดสรรตัวชี้ Multiboot2 เป็นต้น
- เคอร์เนลประกอบด้วย ตัวประมวลผลคำสั่งเชลล์และคอมโพเนนต์แบบกำหนดเองหลากหลายส่วน
การจำลองและอิมเมจบน QEMU
- พัฒนาและทดสอบในสภาพแวดล้อมเครื่องเสมือนผ่าน QEMU
- การสร้างอิมเมจ ISO: ใช้ grub2-mkrescue และ xorriso
- รองรับ การสร้างและเมานต์อิมเมจฟลอปปี FAT12 และสามารถใช้งานกับอุปกรณ์จริงหรือผ่านแฟลก QEMU (
-fda fat.img) ได้
ขั้นตอนการเริ่มต้นระบบ
- เมื่อเข้าเคอร์เนล จะตรวจสอบ Long Mode, แท็ก Multiboot2, ระบบไฟล์ FAT12 และสถานะ VGA
- หลังแสดงโลโก้ ASCII art แล้ว จะ ส่งการควบคุมต่อไปยังลูปของเชลล์
ระบบไฟล์
- รองรับ ระบบไฟล์ FAT12: อ่าน/เขียน/ค้นหา/ลบไฟล์ รวมถึงสร้าง/ลบไดเรกทอรี
- รองรับการสร้างและเขียนทับไฟล์ข้อความ รวมถึงไดเรกทอรีย่อย
- มีความสามารถตรวจสอบความสอดคล้องของระบบไฟล์ด้วย เครื่องมือ fsck
- มีแผนจะรองรับ FAT32 ในอนาคต
สแตกเครือข่าย
- รับส่งแพ็กเก็ต IPv4 บนพื้นฐาน โปรโตคอล SLIP
- รองรับการจัดการ Ethernet frame (ยังทดสอบไม่สมบูรณ์)
- รองรับ ICMP Echo (Request/Reply), UDP, TCP (state machine ของ SYN/SYNACK) เป็นต้น
- มี HTTP เซิร์ฟเวอร์ แบบง่ายสำหรับให้บริการหน้า HTML แบบคงที่
เกม Snake
- มี เกม Snake ในตัว และมีแผนทำเวอร์ชัน เล่นหลายคน (P2P TCP) ในอนาคต
- ข้อมูลเกม (เลเวล, คะแนน) สามารถบันทึกและโหลดผ่านไฟล์ข้อความได้
- ออกจากเกมด้วย ESC และบันทึก High Score ตามคะแนน
คุณค่าและจุดเด่นในการนำไปใช้ของโปรเจกต์
- เป็นตัวอย่างของ ระบบปฏิบัติการที่เขียนด้วย Rust ทำให้เห็นประโยชน์ด้านความปลอดภัยและประสิทธิภาพการพัฒนาของซอฟต์แวร์ระดับล่างได้ชัดเจน
- ด้วยการทดสอบ SLIP/ICMP, การแจกจ่ายที่สะดวก และการรองรับอุปกรณ์จริง จึงเหมาะกับการทดลอง OS และการเรียนรู้การทำอิมพลีเมนต์แบบคัสตอม
- เปิดโอกาสให้สัมผัสโครงสร้างระบบสไตล์ DOS ที่ผสาน Rust และ x86 แอสเซมบลีได้โดยตรง
1 ความคิดเห็น
ความเห็นจาก Hacker News