โครงการ Kerla กำลังพัฒนาเคอร์เนลที่เข้ากันได้กับ Linux ในภาษา Rust

โครงการ Kerla กำลังพัฒนาเคอร์เนลระบบปฏิบัติการที่เขียนด้วยภาษา Rust เคอร์เนลใหม่มุ่งเน้นไปที่การให้ความเข้ากันได้กับเคอร์เนล Linux ในระดับ ABI ซึ่งจะช่วยให้ไฟล์ปฏิบัติการที่ไม่มีการดัดแปลงที่คอมไพล์สำหรับ Linux สามารถทำงานในสภาพแวดล้อมที่ใช้ Kerla รหัสนี้เผยแพร่ภายใต้ลิขสิทธิ์ Apache 2.0 และ MIT โครงการนี้ได้รับการพัฒนาโดยนักพัฒนาชาวญี่ปุ่น Seiya Nuta ซึ่งเป็นที่รู้จักจากการสร้างระบบปฏิบัติการไมโครเคอร์เนล Resea ซึ่งเขียนด้วยภาษา C

ในขั้นตอนการพัฒนาปัจจุบัน Kerla สามารถทำงานบนระบบ x86_64 เท่านั้น และใช้งานการเรียกระบบพื้นฐาน เช่น การเขียน สถิติ mmap ไปป์และโพล รองรับสัญญาณ ไปป์ที่ไม่มีชื่อ และสวิตช์บริบท การเรียกเช่น fork, wait4 และ execve มีไว้เพื่อควบคุมกระบวนการ มีการรองรับ tty และ pseudo-terminal (pty) ระบบไฟล์ที่รองรับในปัจจุบันคือ initramfs (ใช้เพื่อเมานต์ระบบไฟล์รูท), tmpfs และ devfs มีการจัดสแต็กเครือข่ายที่รองรับซ็อกเก็ต TCP และ UDP โดยใช้งานตามไลบรารี smoltcp

นักพัฒนาได้เตรียมสภาพแวดล้อมการบูตที่ทำงานใน QEMU หรือในเครื่องเสมือน Firecracker พร้อมไดรเวอร์ virtio-net ซึ่งคุณสามารถเชื่อมต่อผ่าน SSH ได้แล้ว musl ถูกใช้เป็นไลบรารีระบบ และ BusyBox ถูกใช้เป็นยูทิลิตี้ผู้ใช้

โครงการ Kerla กำลังพัฒนาเคอร์เนลที่เข้ากันได้กับ Linux ในภาษา Rust

มีการจัดเตรียมระบบบิลด์ที่ใช้ Docker ซึ่งช่วยให้คุณสร้าง boot initramfs ของคุณเองด้วยเคอร์เนล Kerla แยกกัน เชลล์ซอฟต์แวร์ nsh ที่คล้ายกับปลาและสแต็ก Kazari GUI ที่ใช้โปรโตคอล Wayland กำลังได้รับการพัฒนาแยกกัน

โครงการ Kerla กำลังพัฒนาเคอร์เนลที่เข้ากันได้กับ Linux ในภาษา Rust

การใช้ภาษา Rust ในโปรเจ็กต์ช่วยให้คุณลดจำนวนข้อผิดพลาดในโค้ดได้โดยใช้เทคนิคการเขียนโปรแกรมที่ปลอดภัย และเพิ่มประสิทธิภาพในการระบุปัญหาเมื่อทำงานกับหน่วยความจำ Rust บังคับใช้ความปลอดภัยของหน่วยความจำ ณ เวลาคอมไพล์ผ่านการตรวจสอบการอ้างอิง ความเป็นเจ้าของอ็อบเจ็กต์ และการติดตามอายุการใช้งานของอ็อบเจ็กต์ (ขอบเขต) และโดยการประเมินความถูกต้องของการเข้าถึงหน่วยความจำ ณ รันไทม์ นอกจากนี้ Rust ยังให้การป้องกันจำนวนเต็มล้น กำหนดให้กำหนดค่าตัวแปรก่อนใช้งาน บังคับใช้แนวคิดของการอ้างอิงและตัวแปรที่ไม่เปลี่ยนรูปตามค่าเริ่มต้น ให้การพิมพ์แบบคงที่ที่แข็งแกร่งเพื่อลดข้อผิดพลาดเชิงตรรกะ และทำให้การจัดการค่าอินพุตง่ายขึ้น ขอบคุณการจับคู่รูปแบบ .

สำหรับการพัฒนาส่วนประกอบระดับต่ำ เช่น เคอร์เนล OS นั้น Rust ให้การสนับสนุนตัวชี้แบบดิบ การบรรจุโครงสร้าง ส่วนแทรกแบบอินไลน์ของแอสเซมเบลอร์ และการฝังไฟล์แอสเซมเบลอร์ ในการทำงานโดยไม่ต้องเชื่อมโยงกับไลบรารีมาตรฐาน มีแพ็คเกจลังแยกต่างหากสำหรับดำเนินการกับสตริง เวกเตอร์ และแฟล็กบิต ข้อดีอีกประการหนึ่งคือเครื่องมือในตัวสำหรับการประเมินคุณภาพโค้ด (linter, ตัววิเคราะห์สนิม) และสร้างการทดสอบหน่วยที่สามารถทำงานได้ไม่เพียงแต่บนฮาร์ดแวร์จริงเท่านั้น แต่ยังรวมถึงใน QEMU อีกด้วย

ที่มา: opennet.ru

เพิ่มความคิดเห็น