ยินดีต้อนรับสู่ ... เอ่อ ... BrightSystem?
มันเป็นระบบปฏิบัติการ x86_64 ที่เขียนขึ้นทั้งหมดตั้งแต่เริ่มต้น (ไม่มีการพึ่งพา) ทำโดยคุณอย่างแท้จริง
โครงการนี้เขียนขึ้นโดยไม่ได้รับความช่วยเหลือจาก GitHub Codestealer, CHATGPTHIEF ของ OpenAI หรืออัลกอริทึมการทำนายเนื้อหาอื่น ๆ ที่คล้ายกัน
TLDR: กลางเดือนและภัยพิบัติบางส่วน! สนุก!
_old มีเคอร์เนลที่ใช้งานได้ซึ่งใช้ห้องสมุดที่ยอดเยี่ยมจาก Phil-Opp และอีกไม่กี่คน รหัสไม่ได้เป็นเอกสารที่ดีมาก แต่ก็ไม่ซับซ้อน เกินไป ดังนั้นจึงควรอ่านได้ค่อนข้างดี มันถูกสร้างขึ้นมาเพื่อฟอรัมการพัฒนาระบบปฏิบัติการที่ยอดเยี่ยมที่โรงเรียนมัธยมของฉัน
อย่างอื่นคือการเขียนซ้ำของฉันโดยไม่ต้องพึ่งพา WIP ตอนนี้มีเพียง BIOS bootloader ที่สามารถเข้าสู่โหมด 64 บิต ขั้นตอนต่อไปคือการใช้ตัวแยกวิเคราะห์ ELF จากนั้นเป็นตัวโหลดเอลฟ์แล้วโหลดเคอร์เนล (ซึ่งจะเป็นไฟล์ ELF)
BS เวอร์ชันใหม่ได้รับการบันทึกไว้เป็นอย่างดีรวมถึงทรัพยากรสำหรับการวิจัยเพิ่มเติม ส่วนหนึ่งของเป้าหมายของฉันคือการทำให้รหัสตัวอย่างที่ยอดเยี่ยมนี้สำหรับโปรแกรมเมอร์ในอนาคตเพื่ออ้างอิงและเรียนรู้จาก
ทุกโฟลเดอร์มี readme และหวังว่าจะอธิบายตนเองได้ แต่นี่คือสารบัญที่คร่าวๆสำหรับ repo นี้:
boot : ลังทั้งหมดใน bootloader ของ BSkernel : เคอร์เนลของ BS (ขณะนี้ว่างเปล่าจนกว่าจะมีการเขียนตัวโหลดเอลฟ์)lib : ห้องสมุดผู้ช่วยใช้โดย BS สิ่งนี้มีเครื่องมือสร้าง Frieren (WIP ELF Loader) และไลบรารีทั่วไป (ซึ่งจะถูกแบ่งออกเป็นหลายลัง) ลังเหล่านี้มีห้องสมุดของตัวเองเพราะพวกเขาใช้หลายลังใน BS (เช่น bootloader โหลดเอลฟ์ แต่ระบบปฏิบัติการขั้นสุดท้ายจะสามารถทำได้เช่นกัน)qemu : ลังที่สร้าง BS ลงในดิสก์สุดท้ายและเปิดตัวใน QEMU สำหรับรุ่นเก่าที่ใช้งานได้มากกว่าของ BS ที่มีการพึ่งพาให้เรียกใช้ cargo r ในโฟลเดอร์ _old
เวอร์ชันใหม่ใช้ระบบบิลด์แบบกำหนดเองของฉัน Bargo ดังนั้นคุณจะต้องติดตั้งสิ่งแรก (ไม่กลัว - Bargo มีเพียง 1 การพึ่งพาอาศัยกันของ Toml Parser ที่ปราศจากการพึ่งพาและควรรวบรวมในไม่กี่วินาที) BARGO เป็นเสื้อคลุมรอบ ๆ สินค้าดังนั้นคุณสามารถใช้มันได้เกือบจะเหมือนกัน - bargo b เพื่อสร้าง, bargo r to Run, -r สำหรับโหมดการเปิดตัว ฯลฯ
หากคุณสงสัยว่าทำไม BS จึงใช้ BARGO แทนการขนส่งสินค้านั่นเป็นเพราะสินค้าไม่มีคุณสมบัติทั้งหมดที่ฉันต้องการ ฉันต้องการสคริปต์โพสต์สร้างและความสามารถในการใช้ build-std สำหรับหลาย ๆ เป้าหมายเนื่องจาก bootloader มีเป้าหมายที่แตกต่างจากเคอร์เนลและระบบปฏิบัติการ ฉันลองเป็นเวลาหลายชั่วโมง แต่ไม่สามารถหาวิธีที่มีสติในการใช้สิ่งนี้ในวานิลลาขนส่งสินค้า
ทั้งสองเวอร์ชันทำงานใน QEMU ดังนั้นตรวจสอบให้แน่ใจว่าติดตั้งก่อน หากคุณต้องการสร้างและเรียกใช้ด้วยตนเองคำสั่งที่ใช้อยู่ภายใต้การใช้งานหลักจะเดือดลงไปที่สิ่งนี้: cargo b; qemu-system-x86_64 -drive format=raw,file=target/bs.bin,index=0 สำหรับเวอร์ชันเก่าคุณจะต้องโหลดไฟล์ _old/disk.bin แทน target/bs.bin