OS Moon
Moon OS เป็นไมโครเคอร์เนลแบบแยกส่วนที่กำหนดเป้าหมายไปที่สถาปัตยกรรม X86_64 และ ARMV6 โดยมีเป้าหมายที่จะเป็น Posix ในอนาคต

ภาพหน้าจอ:
bootsplash:
verbose boot:
เคอร์เนลตื่นตระหนก: 
คุณสมบัติ
- รองรับสถาปัตยกรรมที่หลากหลาย:
- X86_64 พีซีที่มีการรองรับ ACPI
- 4 ระดับเพจ
- stacktrace/symbol backtrace
- Zoned Buddy และ Slab Stallocator
- การโทรผ่าน
syscall (ไม่สนับสนุนการโทรตามระบบ int )
- Nintendo 3DS (ARMV6)
- ไดรเวอร์ i2c
- bootrom ivt
- แสดงสตริงไปยังจอแสดงผล
คุณสมบัติที่ใช้ร่วมกัน (สถาปัตยกรรมทั้งสองรองรับสิ่งนี้):
- ยูบาส
- อาร์กิวเมนต์บูตที่สามารถแยกได้ (เงียบ/verbose)
- ตัวโหลดเอลฟ์
- Primitive Scheduler (จะได้รับการปรับปรุงการทำงานล่วงเวลาสำหรับตอนนี้ฉันมุ่งเน้นไปที่การทำให้ทุกอย่างขึ้นและทำงาน (IPC, เซิร์ฟเวอร์, libc ฯลฯ )))
คุณสมบัติในอนาคต:
- ด้าย
- คาซาน
- ACPI
- smbios
- การทำงานหลายอย่าง
- ไดรเวอร์ฮาร์ดแวร์จำนวนมากรวมถึง แต่ไม่ จำกัด เพียง:
- การ์ดเครือข่าย
- ไดรเวอร์จัดเก็บข้อมูล
- GPU
- และอีกมากมาย
- libc สำหรับ userland
รายการสิ่งที่ต้องทำในอนาคตอันใกล้
- ใช้ประโยชน์จาก APIC ให้ดีขึ้น (ปัจจุบันใช้สำหรับตัวจับเวลาเท่านั้น)
- ระบบย่อยหน่วยความจำเสมือนจริง
- ตัวจัดการหน่วยความจำกายภาพใหม่? (ไม่แน่ใจ)
ขณะนี้กำลังทำงานอยู่:
- ผู้กำหนดตารางเวลา
- IPC
- พอร์ต MLIBC
- เริ่มต้น
- ในห้องสมุดการบีบอัดเคอร์เนลเพื่อคลายการเริ่มต้น
- โปรแกรม Native (Build Machine) เพื่อสร้างและเพิ่มไฟล์ (เพื่อรักษาโมดูลที่เหมาะสม) ไปยัง Initrd
- โหลดและแสดงภาพจาก initrd (TGA, BMP)
- ใหม่เพิ่มเติมเพื่อให้พอร์ต ARMV6 ใช้งานได้มากขึ้น (ไดรเวอร์การ์ด SD, GPU, VBLANK)
คำแนะนำไดเรกทอรี:
- LIBS/ - ยูทิลิตี้ที่ไม่เกี่ยวข้องกับเคอร์เนลอย่างเคร่งครัด (ตัวกำหนดตารางเวลาตัวจัดการหน่วยความจำ ฯลฯ ) แต่จำเป็นต้องใช้ในการทำงาน
- เคอร์เนล/ - ซอร์สโค้ดเคอร์เนล
- บูต/ - ทุกสิ่งที่ดวงจันทร์ต้องการเพื่อบูต
- บริการ/-เซิร์ฟเวอร์ไมโครเคิร์นเนลพิเศษ + libc
- userspace/-ไฟล์ bootloader, configs, โมดูล ฯลฯ ไฟล์จำนวนมากจะถูกเพิ่มโดยอัตโนมัติในเวลาสร้าง
การติดตั้ง
อาคาร: (สมมติว่าคุณกำลังใช้ distro ตาม debian)
การเดินทางของฉัน: (แรงบันดาลใจสำหรับผู้มาใหม่)
ฉันอยากจะสร้างระบบปฏิบัติการอยู่เสมอดังนั้นวันหนึ่งฉันตัดสินใจที่จะสร้าง กลับกลายเป็นว่ามันเป็นงานจำนวนมากและย้อนกลับไปจากนั้นมันก็ทำให้ฉันจมลงไปจนถึงจุดที่ฉันหยุดพักนาน (เป็นเวลาหลายเดือน) เพราะข้อมูลหายากมากและข้อมูลเล็ก ๆ น้อย ๆ ที่ล้าสมัย
ฉันได้เขียนเกี่ยวกับ "เมล็ด" ประมาณ 4 ครั้งในระหว่างประสบการณ์การเรียนรู้การพัฒนาระบบปฏิบัติการของฉันและทุกครั้งที่ฉันเริ่มต้นใหม่เพราะฉันล้นหลามเกินไป- ไม่มีใครผ่าน GDT:/ (heck บางส่วนที่เพียง bootloaders ที่เรียกว่ารายการเคอร์เนลและวนลูป)
หากคุณเป็นผู้เริ่มต้นที่จะเข้าใจว่ารหัสนี้กำลังทำอะไรและคุณสามารถเขียนเคอร์เนลของคุณเองด้วยข้อมูลล่าสุดได้โปรดเข้าร่วมเซิร์ฟเวอร์ OSDEV Discord (เชื่อมโยงใน Wiki OSDEV ที่ด้านล่าง) และอย่ายอมแพ้เมื่อมันยากในตอนแรก
ฉันเริ่มพัฒนาเมล็ดประมาณ 8 เดือนที่ผ่านมาในช่วงเวลาของการเขียน (ด้วยการหยุดพักนานหลายเดือนในระหว่าง) และฉันยังมีหลายสิ่งที่ต้องเรียนรู้อย่างไรก็ตามความคิด try harder ของฉันได้รับการพิสูจน์แล้วว่ามีประโยชน์ในการช่วยให้ฉันผ่านการดิ้นรนและเขียนเคอร์เนลที่ฉันไม่ต้องขโมยหรือคัดลอกรหัส
ฉันหวังว่าสิ่งนี้จะเป็นแรงบันดาลใจให้คุณใช้ความคิดนี้เมื่อสิ่งต่าง ๆ ดูยากเกินไปที่จะจัดการ
ขอให้โชคดี ~ V01D (TIM)
ขอบคุณเป็นพิเศษ
- ขอบคุณไปที่เว็บไซต์เช่น lowlevel.eu หรือ Osdev Wiki แต่ยังมีนักพัฒนาระบบปฏิบัติการที่ยอดเยี่ยมและมีประโยชน์จริง ๆ ใน GitHub และ Discord
Finishing Touch (ทรัพยากรที่ฉันใช้)
- https://www.cs.cmu.edu/~ralf/files.html
- https://ethv.net/workshops/osdev/notes/notes-3.html
- https://osdev.wiki (barebones แต่ osdev wiki ที่ทันสมัย)
- https://wiki.osdev.org