การเขียนระบบปฏิบัติการด้วย Rust
(github.com/phil-opp)- รีโพซิทอรีนี้มีซอร์สโค้ดของซีรีส์ Writing an OS in Rust ที่เผยแพร่บน os.phil-opp.com
- หากมีคำถาม สามารถเปิด issue หรือพูดคุยใน Gitter ได้
ตำแหน่งของโค้ด
- โค้ดของแต่ละโพสต์อยู่ใน git branch แยกกัน
- สามารถตรวจสอบสถานะระหว่างทางหลังจบแต่ละโพสต์ได้
- ดูโค้ดของโพสต์ล่าสุดได้ที่นี่
- สามารถหา branch ของแต่ละโพสต์ได้โดยตามลิงก์
(source code)ในรายการโพสต์ - branch ถูกตั้งชื่อในรูปแบบ
post-XX(XXคือหมายเลขโพสต์) - ตัวอย่าง: โพสต์ VGA Text Mode คือ
post-03, โพสต์ Hardware Interrupts คือpost-07 - ดูคำแนะนำการ build ได้ใน Readme ของ branch นั้น
- สามารถใช้ git worktree เพื่อ checkout branch ไปยังไดเรกทอรีย่อยได้
git worktree add code post-10 - คำสั่งข้างต้นจะสร้างไดเรกทอรีย่อยชื่อ
codeและมีโค้ดของโพสต์ลำดับที่ 10 ("Heap Allocation") อยู่ภายใน
โพสต์
- เป้าหมายของโปรเจกต์นี้คือการนำเสนอทutorial แบบทีละขั้นผ่านบล็อกโพสต์แต่ละตอน
- ปัจจุบันมีโพสต์ดังต่อไปนี้
Bare Bones:
- A Freestanding Rust Binary (source code)
- A Minimal Rust Kernel (source code)
- VGA Text Mode (source code)
- Testing (source code)
Interrupts:
- CPU Exceptions (source code)
- Double Faults (source code)
- Hardware Interrupts (source code)
Memory Management:
- Introduction to Paging (source code)
- Paging Implementation (source code)
- Heap Allocation (source code)
- Allocator Designs (source code)
Multitasking:
- Async/Await (source code)
โพสต์ของฉบับแรก
- เวอร์ชันปัจจุบันของบล็อกคือฉบับที่สอง และฉบับแรกไม่ได้รับการดูแลแล้ว
- โพสต์ของฉบับแรกยังอาจมีประโยชน์อยู่
- รายการโพสต์มีดังนี้
Bare Bones:
- A Minimal x86 Kernel (source code)
- Entering Long Mode (source code)
- Set Up Rust (source code)
- Printing to Screen (source code)
Memory Management:
- Allocating Frames (source code)
- Page Tables (source code)
- Remap the Kernel (source code)
- Kernel Heap (source code)
Exceptions:
- Handling Exceptions (source code)
- Double Faults (source code)
Additional Resources:
- Cross Compile Binutils
- Cross Compile libcore
- Set Up GDB
- Handling Exceptions using Naked Functions
- Catching Exceptions (source code)
- Better Exception Messages (source code)
- Returning from Exceptions (source code)
ใบอนุญาต
- โปรเจกต์นี้ ยกเว้นโฟลเดอร์
blog/contentใช้สัญญาอนุญาตแบบใดแบบหนึ่งต่อไปนี้- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT license (LICENSE-MIT)
- ใบอนุญาตของโฟลเดอร์
blog/contentให้ดูที่blog/content/README.md
การมีส่วนร่วม
- เว้นแต่จะมีการระบุไว้เป็นอย่างอื่นอย่างชัดเจน ผลงานที่ตั้งใจส่งเข้ามาทั้งหมดจะถูกรวมอยู่ภายใต้สัญญาอนุญาตคู่ข้างต้น ตามที่กำหนดไว้ในใบอนุญาต Apache-2.0
สรุปโดย GN⁺
- โปรเจกต์นี้นำเสนอทutorial แบบทีละขั้นสำหรับการเขียนระบบปฏิบัติการด้วย Rust
- แต่ละโพสต์ครอบคลุมหัวข้อเฉพาะแบบแยกจากกัน พร้อมคำอธิบายและตัวอย่างโค้ด
- เป็นแหล่งข้อมูลที่มีประโยชน์มากสำหรับผู้ที่สนใจการพัฒนาระบบปฏิบัติการ
- สามารถเรียนรู้วิธีพัฒนาระบบปฏิบัติการโดยใช้ประโยชน์จากความปลอดภัยและประสิทธิภาพของ Rust
- โปรเจกต์อื่นที่มีฟังก์ชันคล้ายกันคือ
Redox OS
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
เมื่อหลายปีก่อนเคยทำฉบับที่สองจบและได้เรียนรู้อะไรมากมาย
หลังจากทำบทสอนจบเมื่อ 5 ปีก่อน ก็เริ่มทำ MOROS
แทนที่จะเขียน OS ด้วย Rust ควรไปสร้างแพลตฟอร์มข้อมูลที่สามารถรัน DML/DDL ได้
หลังจากเจาะลึกเรื่อง Rust และการพัฒนา OS ก็มาเจอเนื้อหานี้
เนื้อหานี้ทำให้เริ่มใช้ Rust ในปี 2021
บทความของ Phil เกี่ยวกับการพัฒนา OS น่าอ่านเสมอ
ตอนนี้ทีม Harvey OS กำลังทำโครงการ R9OS อยู่
ขอแนะนำโพสต์ของฉบับดั้งเดิมเป็นพิเศษ
เพิ่งกลับมาจาก Rustconf และมีการออก OS หลักที่เน้นระบบปฏิบัติการแบบเรียลไทม์อยู่ราว ๆ ห้าตัว
แหล่งข้อมูลดี ๆ อีกอย่างคือการสร้าง RISC-V OS ด้วย Rust