ข้อมูลเกี่ยวกับโครงการ Kerla เพิ่งถูกเผยแพร่เมื่อเร็ว ๆ นี้ Kerla กำลังได้รับการพัฒนาให้เป็นเคอร์เนลของระบบปฏิบัติการที่เขียนด้วยภาษา Rust โดยโค้ดนั้นเผยแพร่ภายใต้ใบอนุญาต Apache 2.0 และ MIT โครงการนี้ได้รับการพัฒนาโดยนักพัฒนาชาวญี่ปุ่นชื่อ Seiya Nuta ซึ่งเป็นที่รู้จักจากการสร้างระบบปฏิบัติการไมโครเคอร์เนล Resea ที่เขียนด้วยภาษา C
เป้าหมายหลักประการแรกของเคอร์เนลใหม่นี้คือการทำให้มั่นใจได้ว่าสามารถทำงานร่วมกับเคอร์เนลของลินุกซ์ได้ในระดับ ABI ซึ่งจะช่วยให้ไบนารี่ที่ไม่ได้รับการแก้ไขซึ่งสร้างขึ้นสำหรับลินุกซ์สามารถทำงานในสภาพแวดล้อมที่ใช้เคอร์เนลลาได้
เกี่ยวกับ Keral
Kerla เป็นเคอร์เนลระบบปฏิบัติการแบบโมโนลิธิกที่สร้างขึ้นใหม่ทั้งหมดด้วยภาษา Rust ในขั้นตอนการพัฒนาปัจจุบัน Kerla สามารถทำงานได้เฉพาะบนระบบ x86_64 เท่านั้นและใช้งานการเรียกใช้ระบบพื้นฐาน เช่น write, stat, mmap, pipe และ poll รองรับสัญญาณ, ท่อส่งข้อมูลที่ไม่ระบุชื่อ และการสลับบริบท การเรียกใช้ฟังก์ชันเช่น fork, wait4 และ execve ใช้สำหรับควบคุมกระบวนการ รองรับเทอร์มินัลจริง (tty) และเทอร์มินัลเสมือน (pty) ระบบไฟล์ initramfs (ใช้สำหรับเมานต์ระบบไฟล์รูท), tmpfs และ devfs ยังคงได้รับการสนับสนุน
นอกจากนี้ยังมี สแต็กเครือข่ายที่รองรับซ็อกเก็ต TCP และ UDPโดยใช้ไลบรารี smoltcp ผู้พัฒนาได้เตรียมสภาพแวดล้อมการบูตที่ใช้งานได้ใน VM QEMU หรือ Firecracker โดยใช้ไดรเวอร์ virtio-net ซึ่งคุณสามารถเชื่อมต่อผ่าน SSH ได้แล้วMusl ถูกใช้เป็นไลบรารีระบบ และ BusyBox เป็นยูทิลิตี้สำหรับผู้ใช้ระบบสร้างแบบ Docker ได้ถูกเตรียมไว้เพื่อให้คุณสามารถสร้าง initramfs สำหรับการบูตของคุณเองโดยใช้เคอร์เนล Kerla ได้
จนถึงตอนนี้ มีรายละเอียดเล็กน้อยเกี่ยวกับเคอร์เนลใหม่ แต่สิ่งที่ดึงดูดความสนใจมากที่สุดให้กับคุณสมบัติของ Kerla คือความจริงที่ว่ามันถูกเขียนด้วยภาษา Rust การเขียนในภาษา Rust มีข้อได้เปรียบเหนือภาษาอื่นหรือเหนือรหัสที่มีอยู่หรือไม่? หลายคนตอบว่าใช่สำหรับคำถามนี้ โดยเน้นถึงประโยชน์ด้านความปลอดภัยของหน่วยความจำที่ภาษามีให้
นอกจากนี้ ยังมีการใช้ฟังก์ชันนี้ในการประเมินความถูกต้องของการเข้าถึงหน่วยความจำในระหว่างการทำงาน ยิ่งไปกว่านั้นMozilla เชื่อว่า Rust ให้การป้องกันการเกิดโอเวอร์โฟลว์ของจำนวนเต็มกำหนดให้ต้องมีการกำหนดค่าเริ่มต้นให้กับตัวแปรก่อนใช้งาน ใช้แนวคิดของการอ้างอิงและตัวแปรที่ไม่สามารถเปลี่ยนแปลงได้โดยค่าเริ่มต้น มีการกำหนดประเภทข้อมูลแบบคงที่ที่เข้มงวดเพื่อลดข้อผิดพลาดทางตรรกะ และทำให้การประมวลผลข้อมูลเข้าทำได้ง่ายขึ้นผ่านการจับคู่รูปแบบ
ในบรรดาข้อดีต่างๆ เราขอเน้นย้ำถึงเครื่องมือแบบบูรณาการสำหรับการประเมินคุณภาพโค้ดและการสร้างการทดสอบหน่วยที่สามารถรันได้ไม่เพียงแต่บนฮาร์ดแวร์จริงเท่านั้น แต่ยังรวมถึงใน QEMU ด้วย โดยพื้นฐานแล้ว Mozilla มองว่า Rust นั้นง่ายต่อการดีบัก เนื่องจากคอมไพเลอร์จะปฏิเสธข้อผิดพลาด อย่างไรก็ตาม การทดสอบได้ชี้ให้เห็นถึงข้อเสียบางประการของ Rust ด้วย
“เช่นเดียวกับ C ++ แทบจะเป็นไปไม่ได้เลยที่จะเขียน Rust แบบสำนวนโดยไม่ต้องใช้เทมเพลต ดังนั้นจึงมีไบนารีป่องและเวลาในการคอมไพล์ช้า การตรวจสอบเวลารวบรวมทั้งหมดนี้มีค่าใช้จ่ายเช่นกัน นอกจากนี้ หากคุณเขียนบางสิ่งใหม่ คุณจะสูญเสีย codebase ที่โตเต็มที่แบบเก่า และไม่มีทางที่คุณจะสร้าง codebase ที่มีคุณภาพใกล้เคียงกันได้ในระยะเวลาที่เหมาะสม จะดีกว่ามากที่จะขยายโปรแกรมใน Rust แทนที่จะเขียนใหม่ เป็นการดีกว่าที่จะขยายโปรแกรมแทนที่จะเขียนใหม่ใน Rust” วิศวกรซอฟต์แวร์กล่าว
ตามคำกล่าวของผู้สร้าง นี่คือเหตุผลที่นักพัฒนา Linuxโดยเฉพาะ Linus Torvalds เองปฏิเสธแนวคิดที่จะเขียนเคอร์เนลทั้งหมดใหม่ด้วยภาษา Rust
“ทำงานบางอย่างเพื่อสร้างลิงก์ที่ปลอดภัย จากนั้นเขียนโค้ดเพิ่มเติมใน Rust และคุณยังสามารถเพลิดเพลินกับโค้ดสำหรับผู้ใหญ่นั้นได้ (นั่นคือสิ่งที่ Linux ทำ มีความพยายามที่จะเพิ่มความสามารถในการเขียนโมดูลเคอร์เนลใน Rust)” เขากล่าวเสริม นักพัฒนา Linux ได้สำรวจความเป็นไปได้ในการเขียนโมดูลเคอร์เนลใหม่โดยใช้ภาษา Rust มาประมาณสามปีแล้ว สิ่งนี้ทำให้เกิดโครงการ »Rust for Linux«
สุดท้ายนี้ หากคุณสนใจเรียนรู้เพิ่มเติม สามารถดูรายละเอียดได้ที่ลิงก์ต่อไปนี้