Kerla: một nhân mới được viết bằng Rust và tương thích với ABI của Linux

Thông tin về dự án Kerla đã được công bố gần đây, dự án này đang được phát triển như một nhân hệ điều hành được viết bằng ngôn ngữ Rust. Mã được phân phối theo giấy phép Apache 2.0 và MIT. Dự án đang được phát triển bởi nhà phát triển Nhật Bản Seiya Nuta, được biết đến với việc tạo ra hệ điều hành Resea microkernel, được viết bằng ngôn ngữ C.

Hạt nhân mới hướng tới mục tiêu ban đầu đảm bảo khả năng tương thích với nhân Linux ở cấp ABI, điều này sẽ cho phép các tệp nhị phân chưa sửa đổi được xây dựng cho Linux chạy trong môi trường dựa trên Kerla.

Về Keral

Kerla là một nhân hệ điều hành nguyên khối được tạo từ đầu trong Rust. Ở giai đoạn phát triển hiện tại, Kerla chỉ có thể chạy trên hệ thống có kiến ​​trúc x86_64 và thực hiện các lệnh gọi hệ thống cơ bản như write, stat, mmap, pipe, và thăm dò ý kiến, hỗ trợ các tín hiệu, các đường ống không có tên và các công tắc ngữ cảnh. Các lệnh gọi như fork, wait4 và execute cung cấp để kiểm soát các quy trình. Có hỗ trợ cho tty và thiết bị đầu cuối giả (pty). Trong số các hệ thống tệp initramfs (được sử dụng để gắn FS gốc), tmpfs và devfs vẫn được hỗ trợ.

Một ngăn xếp mạng với sự hỗ trợ cho các ổ cắm TCP và UDP cũng được cung cấp, dựa trên thư viện smoltcp. Nhà phát triển đã chuẩn bị một môi trường khởi động hoạt động trong QEMU hoặc Firecracker VM với trình điều khiển virtio-net mà bạn đã có thể kết nối qua SSH. Musl được sử dụng làm thư viện hệ thống và BusyBox được sử dụng làm tiện ích người dùng. Dựa trên Docker, một hệ thống xây dựng đã được chuẩn bị cho phép bạn tạo khởi động initramfs của riêng mình với hạt nhân Kerla.

Cho đến nay, rất ít thông tin chi tiết được cung cấp về nhân mới của nó, nhưng điều thu hút sự chú ý nhất đến các tính năng của Kerla là thực tế là nó được viết bằng Rust. Vậy viết nó bằng Rust có lợi thế gì so với các ngôn ngữ khác hoặc so với mã hiện có không? Nhiều người trả lời có cho câu hỏi này, nhấn mạnh lợi ích bảo mật bộ nhớ mà ngôn ngữ mang lại.

Nó cũng được cung cấp khi đánh giá độ chính xác của các truy cập bộ nhớ tại thời điểm chạy. Còn gì nữa, Mozilla tin rằng Rust cung cấp khả năng bảo vệ chống lại việc tràn số nguyên, yêu cầu khởi tạo bắt buộc các giá trị biến trước khi sử dụng, áp dụng khái niệm tham chiếu và biến bất biến theo mặc định, cung cấp tính năng nhập tĩnh mạnh mẽ để giảm thiểu lỗi logic và đơn giản hóa quá trình xử lý đầu vào thông qua khớp các mẫu.

Trong số các ưu điểm, chúng tôi nêu bật các công cụ tích hợp để đánh giá chất lượng của mã và tạo các bài kiểm tra đơn vị có thể chạy không chỉ trên phần cứng thực mà còn trên QEMU. Về cơ bản, Mozilla thấy Rust dễ gỡ lỗi hơn vì trình biên dịch sẽ loại bỏ lỗi. Tuy nhiên, các coves đã chỉ ra một số nhược điểm với Rust.

“Như với C ++, hầu như không thể viết Rust thành ngữ mà không sử dụng các khuôn mẫu, vì vậy nó có các tệp nhị phân cồng kềnh và thời gian biên dịch chậm. Tất cả các kiểm tra thời gian biên dịch này cũng phải trả phí. Ngoài ra, nếu bạn viết lại một cái gì đó, bạn sẽ mất đi cơ sở mã trưởng thành cũ và không có cách nào bạn có thể tạo ra một cơ sở mã có chất lượng tương tự trong một khoảng thời gian hợp lý; tốt hơn là bạn nên mở rộng, thay vì viết lại chương trình bằng Rust. Tốt hơn là bạn nên mở rộng chương trình hơn là viết lại bằng Rust, ”một kỹ sư phần mềm nói.

Theo người tạo ra nó, chính vì lý do này mà các nhà phát triển Linux, đặc biệt là bản thân Linus Torvalds, họ bác bỏ ý tưởng viết lại toàn bộ nhân trong Rust.

“Thực hiện một số công việc để tạo liên kết an toàn, sau đó viết mã bổ sung trong Rust và bạn vẫn có thể tận hưởng mã trưởng thành đó. (Đó là những gì Linux làm, có những nỗ lực để thêm khả năng viết một mô-đun hạt nhân trong Rust), ”ông nói thêm. Các nhà phát triển Linux đã khám phá khả năng viết một số mô-đun nhân mới nhất định bằng ngôn ngữ Rust trong khoảng ba năm. Điều này đã làm nảy sinh dự án »Rust for Linux«.

Cuối cùng, nếu bạn quan tâm muốn biết thêm về nó, bạn có thể tham khảo chi tiết Trong liên kết sau đây.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.