ระบบปฏิบัติการที่เขียนด้วยสนิม
ในการสร้างระบบปฏิบัติการตรวจสอบให้แน่ใจว่าใช้งานสร้างสนิมยาม nightly สิ่งนี้จำเป็นเนื่องจากการใช้ธงและคุณสมบัติที่ไม่เสถียรบางอย่างที่มีอยู่ในการสร้าง nightly เท่านั้น
หมายเหตุ: มีการระบุเป้าหมายใน
.cargo/config.toml
cargo buildหมายเหตุ: หากรวบรวมเป้าหมายที่กำหนดเองคุณสามารถแทนที่เป้าหมายโดยใช้ธง
--target <target>
cargo build --target x86_64-fractal_os.json ในการสร้างภาพที่สามารถบู๊ตได้เรากำลังใช้การพึ่งพา bootloader นอกจากนี้เราจะใช้เครื่องมือ bootimage เพื่อรวบรวมเคอร์เนลและ bootloader และเชื่อมโยงเข้าด้วยกัน
ตรวจสอบให้แน่ใจว่าคุณติดตั้ง bootimage
cargo install bootimageหมายเหตุ: ในการเรียกใช้ bootimage และสร้าง bootloader คุณจะต้องติดตั้งส่วนประกอบ Rustup ที่ติดตั้ง
llvm-tools-preview
rustup component add llvm-tools-previewหลังจากติดตั้งการพึ่งพาและเครื่องมือแล้วคุณสามารถเรียกใช้งาน BootImage เพื่อสร้างอิมเมจดิสก์ที่สามารถบู๊ตได้
cargo bootimageหลังจากสร้างไฟล์ภาพที่สามารถบู๊ตได้คุณสามารถเรียกใช้เศษส่วนได้อย่างง่ายดายบนตัวจำลองเช่น QEMU
qemu-system-x86_64 -drive format=raw,file=target/x86_64-fractal_os/debug/bootimage-fractal_os.binนอกจากนี้คุณยังสามารถเรียกใช้กับนักวิ่งสินค้าด้วยความช่วยเหลือของนักวิ่ง Bootimage
cargo runด้านบนจะชี้ไปที่บิลด์สุดท้ายของภาพที่สามารถบู๊ตได้และจะเริ่มต้นอินสแตนซ์ของ QEMU นอกจากนี้คุณยังสามารถให้เป้าหมายเฉพาะและผ่านตัวเลือก QEMU
cargo run --target < target > -- [QEMU options] ทุกอย่างหลังจาก -- จะถูกส่งไปยัง Qemu
ในการเรียกใช้กรอบการทดสอบที่กำหนดเองสำหรับ Fractalos คุณสามารถเรียกใช้คำสั่งทดสอบสินค้าได้
cargo testสิ่งนี้จะเรียกใช้การทดสอบหน่วยและการรวมทั้งหมด
หมายเหตุ: การทดสอบการรวมอยู่ภายใต้ไดเรกทอรี
/testsในขณะที่การทดสอบหน่วยมีอยู่ในตัวเองในไฟล์การใช้งานคอนกรีต/src
เคอร์เนลใช้ลังคอม compiler_builtins พร้อมกับการใช้งาน mem อย่างไรก็ตามฟังก์ชั่นนั้นค่อนข้างไม่ได้รับการปรับสภาพ ขณะนี้มีการประชาสัมพันธ์แบบเปิดกับปัญหานี้ดังนั้นสิ่งนี้จำเป็นต้องใช้การใช้งานฟังก์ชั่นของเราเองเช่น memcmp และ memcpy หรือรอจนกว่า PR นี้จะถูกรวมเข้าด้วยกัน
ในฐานะวิศวกรซอฟต์แวร์ที่มีพื้นหลังใน EEE (วิศวกรรมไฟฟ้าและอิเล็กทรอนิกส์) ฉันชอบที่จะค้นหาว่าอะไรทำให้สิ่งที่ติ๊กและวิธีที่ดีกว่าในการค้นหาว่าระบบปฏิบัติการทำงานร่วมกับฮาร์ดแวร์ทั้งหมดและซอฟต์แวร์อื่น ๆ นอกเหนือจากการเขียนของคุณเอง?
ในเวลาเดียวกันของการสำรวจสิ่งที่ทำให้องค์ประกอบทั้งหมดของระบบปฏิบัติการที่สะอาดฉันยังเรียนรู้สนิม ฉันพบว่ามันสนุกมาก
สิ่งเหล่านี้เป็นเพียงสิ่งสำคัญบางประการที่กำลังจะดำเนินการ ไม่เป็นระเบียบ