การเปิดตัว MirageOS 4.0 ซึ่งเป็นแพลตฟอร์มสำหรับการรันแอพพลิเคชั่นบนไฮเปอร์ไวเซอร์

หลังจากหนึ่งปีครึ่งของการพัฒนา โครงการ MirageOS 4.0 ได้รับการเผยแพร่ ซึ่งอนุญาตให้สร้างระบบปฏิบัติการสำหรับแอปพลิเคชันเดียว โดยแอปพลิเคชันจะถูกส่งเป็น "unikernel" ที่มีอยู่ในตัวเอง ซึ่งสามารถทำงานได้โดยไม่ต้อง การใช้ระบบปฏิบัติการ เคอร์เนลระบบปฏิบัติการแยกต่างหาก และเลเยอร์ต่างๆ ภาษา OCaml ใช้ในการพัฒนาแอปพลิเคชัน รหัสโครงการเผยแพร่ภายใต้ใบอนุญาต ISC ฟรี

ฟังก์ชันระดับต่ำทั้งหมดที่มีอยู่ในระบบปฏิบัติการนั้นถูกนำไปใช้ในรูปแบบของไลบรารีที่แนบมากับแอปพลิเคชัน แอปพลิเคชันสามารถพัฒนาบนระบบปฏิบัติการใดก็ได้ หลังจากนั้นจะถูกรวบรวมเป็นเคอร์เนลเฉพาะ (แนวคิด unikernel) ซึ่งสามารถรันได้โดยตรงบนไฮเปอร์ไวเซอร์ Xen, KVM, BHyve และ VMM (OpenBSD) บนแพลตฟอร์มมือถือใน รูปแบบของกระบวนการในสภาพแวดล้อมที่สอดคล้องกับ POSIX หรือในสภาพแวดล้อมคลาวด์ Amazon Elastic Compute Cloud และ Google Compute Engine

สภาพแวดล้อมที่สร้างขึ้นไม่มีสิ่งใดที่ไม่จำเป็นและโต้ตอบโดยตรงกับไฮเปอร์ไวเซอร์โดยไม่มีไดรเวอร์หรือเลเยอร์ระบบ ซึ่งช่วยลดค่าใช้จ่ายด้านค่าใช้จ่ายและเพิ่มความปลอดภัยได้อย่างมาก การทำงานกับ MirageOS มีสามขั้นตอน: การเตรียมการกำหนดค่าด้วยการกำหนดแพ็คเกจ OPAM ที่ใช้ในสภาพแวดล้อม การประกอบสภาพแวดล้อม และการเปิดใช้งานสภาพแวดล้อม เพื่อให้มั่นใจถึงการทำงานบนไฮเปอร์ไวเซอร์ Runtime จึงถูกสร้างขึ้นบนพื้นฐานของเคอร์เนล Solo5

แม้ว่าแอปพลิเคชันและไลบรารีจะถูกสร้างขึ้นในภาษา OCaml ระดับสูง แต่สภาพแวดล้อมที่ได้แสดงให้เห็นถึงประสิทธิภาพที่ค่อนข้างดีและขนาดที่เล็กที่สุด (เช่น เซิร์ฟเวอร์ DNS ใช้เพียง 200 KB) การบำรุงรักษาสภาพแวดล้อมยังง่ายขึ้น เนื่องจากหากจำเป็นต้องอัปเดตโปรแกรมหรือเปลี่ยนการกำหนดค่า การสร้างและเปิดใช้งานสภาพแวดล้อมใหม่ก็เพียงพอแล้ว ไลบรารีหลายร้อยรายการในภาษา OCaml ได้รับการรองรับสำหรับการดำเนินการเครือข่าย (DNS, SSH, OpenFlow, HTTP, XMPP, Matrix, OpenVPN ฯลฯ ) โดยทำงานกับพื้นที่เก็บข้อมูลและให้การประมวลผลข้อมูลแบบขนาน

การปรับปรุงที่สำคัญ:

  • กระบวนการรวบรวมโครงการและ Unikernel มีการเปลี่ยนแปลง แทนที่จะใช้ระบบแอสเซมบลี ocamlbuild ที่ใช้ก่อนหน้านี้ ชุดเครื่องมือ dune และที่เก็บข้อมูลในเครื่อง (monorepo) ถูกนำมาใช้ ในการสร้างที่เก็บข้อมูลดังกล่าว ได้มีการเพิ่มยูทิลิตี้ใหม่ opam-monorepo ซึ่งทำให้สามารถแยกการจัดการแพ็คเกจออกจากการสร้างจากซอร์สโค้ดได้ ยูทิลิตี้ opam-monorepo ทำงานได้ เช่น การสร้างไฟล์ล็อคสำหรับการขึ้นต่อกันที่เกี่ยวข้องกับโปรเจ็กต์ การโหลดและการแตกโค้ดการขึ้นต่อกัน และการตั้งค่าสภาพแวดล้อมเพื่อใช้ระบบ dune build การประกอบจริงจะดำเนินการโดยใช้ชุดเครื่องมือ Dune
  • มีกระบวนการสร้างที่ทำซ้ำได้ การใช้ไฟล์ล็อคจะมีลิงก์ไปยังเวอร์ชันที่ขึ้นต่อกัน และช่วยให้คุณสามารถทำซ้ำกระบวนการสร้างด้วยโค้ดเดียวกันได้ตลอดเวลา
  • กระบวนการคอมไพล์ข้ามใหม่ได้ถูกนำมาใช้ และความสามารถในการคอมไพล์ข้ามสำหรับแพลตฟอร์มเป้าหมายที่ได้รับการสนับสนุนทั้งหมดจากสภาพแวดล้อมบิลด์ทั่วไปเดียว ซึ่งรวมถึงการอ้างอิงข้ามคอมไพล์และไลบรารีที่มีการผูก C โดยไม่จำเป็นต้องเพิ่มการผูกเหล่านี้ แพ็คเกจหลัก การรวบรวมข้ามถูกจัดระเบียบโดยใช้พื้นที่ทำงานที่จัดทำโดยระบบ Dune Build
  • มีการเพิ่มการรองรับแพลตฟอร์มเป้าหมายใหม่ เช่น ความสามารถในการทดลองเพื่อสร้างแอปพลิเคชันที่มีในตัวเองสำหรับการทำงานบนบอร์ด Raspberry Pi 4
  • ได้ดำเนินการเพื่อรวมส่วนต่างๆ ของ MirageOS เข้ากับระบบนิเวศที่เกี่ยวข้องกับการพัฒนาในภาษา OCaml เพื่อลดความซับซ้อนในการประกอบแอปพลิเคชันในรูปแบบของ Unikernel แพ็คเกจ MirageOS จำนวนมากได้รับการย้ายไปยังระบบ dune build ยูทิลิตี้ opam-monorepo พร้อมให้ติดตั้งโดยใช้ตัวจัดการแพ็คเกจ opam และสามารถใช้ในโครงการที่ใช้ระบบ dune build เพื่อรักษาแพตช์ที่แก้ปัญหาเกี่ยวกับการพึ่งพาการสร้างใน Dune จึงมีการสร้างที่เก็บสองแห่ง: dune-universe/opam-overlays และ dune-universe/mirage-opam-overlays ซึ่งเปิดใช้งานตามค่าเริ่มต้นเมื่อใช้ยูทิลิตี้ mirage CLI
  • การรวม MirageOS เข้ากับไลบรารี C และ Rust ได้รับการทำให้ง่ายขึ้น
  • มีการเสนอรันไทม์ OCaml ใหม่ที่ช่วยให้คุณสามารถทำได้โดยไม่ต้องใช้ libc (ปลอด libc)
  • สามารถใช้บริการ Merlin เพื่อบูรณาการกับสภาพแวดล้อมการพัฒนาแบบบูรณาการมาตรฐานได้

ที่มา: opennet.ru

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