12 điểm bởi GN⁺ 2024-01-09 | 3 bình luận | Chia sẻ qua WhatsApp

Giới thiệu về Motūrus OS

  • Dự án Motūrus đang phát triển MotūrusOS, một hệ điều hành đơn giản, nhanh và an toàn cho đám mây.
  • Motūrus OS là một hệ điều hành mới nhắm tới các workload chạy trên máy ảo, được dùng cho web server, serverless, edge caching và nhiều trường hợp tương tự.

Vì sao là Motūrus OS?

  • Hiện nay, phần lớn workload production đã được ảo hóa đang chạy trên Linux.
  • Linux có nhiều tính năng cao cấp, nhưng cũng mang theo một số độ phức tạp không lý tưởng cho workload ảo hóa:
    • Linux được tối ưu cho bare metal, nên kém hiệu quả khi dùng bên trong VM.
    • Linux khó sử dụng.
    • Về mặt lịch sử, Linux vốn không thực sự an toàn.
  • Một hệ điều hành mới tập trung vào workload ảo hóa có thể được xây dựng đơn giản và an toàn hơn nhiều so với Linux, đồng thời có thể ngang bằng hoặc vượt Linux về hiệu năng và hiệu suất.

Motūrus OS là gì?

  • Motūrus OS là một hệ điều hành dựa trên microkernel, được xây dựng bằng ngôn ngữ Rust và chỉ nhắm tới các workload ảo hóa.
  • Hiện tại hệ điều hành này hỗ trợ máy ảo x64 dựa trên KVM và có thể chạy trên Qemu hoặc Cloud Hypervisor.
  • Rust là ngôn ngữ cốt lõi của Motūrus OS; không chỉ phần triển khai mà cả ABI cũng được cung cấp bằng Rust.

Những gì đang hoạt động

  • Hiện tại phần lớn các subsystem vẫn đang ở giai đoạn POC/MVP, nhưng đã có thể chạy các tác vụ như web server.
  • Cụ thể, các tính năng sau đang hoạt động:
    • Khởi động trong khoảng 200ms thông qua MBR(Qemu) hoặc PVH(Cloud Hypervisor).
    • Microkernel himem.
    • Scheduling: round robin đa bộ xử lý (SMP) đơn giản, kernel scheduling là cooperative.
    • Quản lý bộ nhớ: hiện chỉ hỗ trợ trang 4K, stack được bảo vệ, page fault trong user space được xử lý đúng cách.
    • Subsystem I/O (trong user space): driver VirtIO-BLK và VirtIO-NET, hai file system đơn giản, networking dựa trên smoltcp (chỉ hỗ trợ TCP).
    • User space: đa tiến trình, preemption, thread, TLS, phần lớn thư viện chuẩn Rust đã được port.
    • Cung cấp một shell kiểu Unix đơn giản.

Những gì chưa hoạt động

  • Phần lớn các thành phần vẫn chưa sẵn sàng cho môi trường production.
  • Chưa được kiểm toán bảo mật.
  • Có thể dễ dàng gặp panic "chưa được triển khai" trong sys-io (subsystem I/O ở user space).
  • Cụ thể, các tính năng sau chưa hoạt động:
    • File system: phần lớn API Rust std::fs đã được triển khai ở mức POC, nhưng cần được viết lại bằng I/O bất đồng bộ.
    • Networking: std::net::TcpStream phần lớn đã được triển khai, nhưng các giao thức khác vẫn chưa có.
    • Hệ sinh thái ngoài thư viện chuẩn Rust: một số crate có thể biên dịch và sử dụng với vài điều chỉnh nhỏ, nhưng các crate phụ thuộc vào async runtime như Tokio hiện chưa biên dịch được.

Làm thế nào để build/chạy Motūrus OS?

  • Tham khảo tài liệu docs/build.md.

Lời cảm ơn

  • Xin gửi lời cảm ơn đặc biệt tới Philipp Oppermann, người đã viết loạt blog về cách viết OS bằng Rust. Loạt bài đó đã truyền cảm hứng cho rất nhiều người thử nghiệm trong lĩnh vực này.

Ý kiến của GN⁺

  • Cách tiếp cận đổi mới: Motūrus OS là một hệ điều hành mới chuyên biệt cho môi trường ảo hóa, nhằm giải quyết sự phức tạp và kém hiệu quả của Linux.
  • Ứng dụng ngôn ngữ Rust: Rust là ngôn ngữ đề cao an toàn bộ nhớ và hiệu năng, hứa hẹn đóng góp vào tính an toàn và hiệu quả của Motūrus OS.
  • Đóng góp cho cộng đồng nhà phát triển: Dự án này có thể giúp các lập trình viên quan tâm đến phát triển hệ điều hành khám phá những khả năng mới và vượt qua các giới hạn hiện có.

3 bình luận

 
ing03201 2024-01-09

Tôi cũng đang theo dõi blog writing an os in rust, nhưng có vẻ đã bắt đầu có chuyển động rồi nhỉ!
Có vẻ là một bài viết hay.

 
GN⁺ 2024-01-09
Ý kiến trên Hacker News
  • Ý kiến từ nhà phát triển/tác giả dự án:

    • Cảm ơn vì sự quan tâm và thảo luận về dự án.
    • Có những lo ngại về khả năng tồn tại lâu dài, hỗ trợ, cũng như tính tương thích của compiler và binary.
    • Dự án không thể thành công nếu không có cộng đồng, nhưng vẫn tin rằng những lợi ích tiềm năng của một dự án như Motor OS cuối cùng có thể dẫn đến một hệ điều hành mới được sử dụng rộng rãi.
    • Chỉ ra các vấn đề của Linux khi chạy bên trong máy ảo (và đôi khi cả bên ngoài), đồng thời cho rằng các nhà phát triển Linux không tập trung đủ để giải quyết chúng.
    • Không hiểu lắm mối lo về sự bất ổn của compiler và tính tương thích nhị phân, đồng thời nhắc rằng kernel Linux hiện đại có thể được biên dịch bằng nhiều toolchain GCC hoặc LLVM khác nhau, và các binary cũ vẫn chạy bình thường.
    • Cho biết sẵn sàng trả lời thêm các câu hỏi.
  • Giải thích về cách tiếp cận "Rust-first":

    • "Rust-first" có nghĩa là không chỉ microkernel và driver được triển khai bằng Rust, mà hiện tại cả các chương trình user space cũng chỉ có thể được viết bằng Rust.
    • Về mặt kỹ thuật, có thể reverse engineer ABI dựa trên Rust và toolchain Rust được cung cấp để viết ứng dụng cho Motor OS bằng các ngôn ngữ khác như C, nhưng việc này sẽ cần một lượng công sức nhất định.
    • Giải thích rằng các chương trình Rust tiêu chuẩn có thể dùng thư viện Rust tiêu chuẩn và có thể được biên dịch cũng như chạy mà không cần FFI.
  • Thắc mắc vì sao một kernel nhỏ lại mất 200ms trên máy tính hiện đại:

    • Cần khởi tạo metadata của các trang bộ nhớ, mount file system, khởi động tiến trình init, nhưng cho rằng tất cả việc này đáng lẽ phải diễn ra trong vài micro giây.
    • Đặt câu hỏi liệu có phải host mất thời gian để chuẩn bị tài nguyên hay không, ví dụ như có đoạn nào chậm trong QEMU và KVM.
  • Ý kiến muốn thấy một kernel ưu tiên bất đồng bộ được viết bằng Rust:

    • Bày tỏ thắc mắc liệu kernel ưu tiên async có phải đặc biệt khó hoặc không đủ giá trị để làm, hay đơn giản là chưa ai thử.
    • Nhắc rằng đã theo dõi loạt bài làm OS bằng Rust của Phil Oppermann nên biết điều này là khả thi, nhưng các OS dựa trên Rust gần đây dường như không thử theo hướng đó.
  • Ý kiến gợi nhớ phát biểu trong quá khứ của Linus Torvalds về sự cạnh tranh với Linux:

    • Hồi tưởng rằng khi được hỏi có sợ cạnh tranh không, Torvalds đã trả lời rằng ông thích viết device driver, và chừng nào chưa có một người trẻ đầy nhiệt huyết xuất hiện cũng thích làm điều đó, thì ông chưa sợ cạnh tranh.
  • Ý kiến bày tỏ sự hứng thú với các dự án như Motor OS và mong nó tiếp tục được phát triển:

    • Nói rằng đã có quá nhiều dự án như Motor OS thất bại nên giờ khó còn cảm thấy hào hứng.
    • Nhắc rằng thay thế Linux cho các mục đích cụ thể như cloud là việc cực kỳ khó.
  • Ý kiến cho rằng Docker, Nix OS và "serverless" tồn tại vì sự phức tạp của Linux:

    • Giải thích rằng Docker và NixOS tồn tại do vấn đề quản lý gói ở user space, còn serverless tồn tại vì doanh nghiệp muốn trả tiền cho năng lực tính toán theo nhu cầu.
  • Ý kiến cho biết ban đầu có thái độ hoài nghi với công nghệ mới, nhưng nghĩ lại thì hiệu quả và cải thiện bảo mật nhờ loại bỏ các lớp không cần thiết là điều hấp dẫn:

    • Có cách tiếp cận lành mạnh đối với công nghệ mới và thừa nhận rằng những cải thiện về hiệu quả và bảo mật rất đáng chú ý.
  • Ý kiến cho rằng Motor OS trông như đang cạnh tranh với Docker và các công nghệ tương tự:

    • Chỉ ra rằng Motor OS có vẻ cạnh tranh trực tiếp với các công nghệ như Docker hơn là cạnh tranh trực tiếp với Linux.
    • Bày tỏ mong muốn phần "Tại sao?" sẽ đề cập đến lý do nên chọn Motor OS, tức là vì sao nên dùng Motor OS thay vì Docker hay các giải pháp tương tự.
  • Ý kiến cho rằng bắt đầu một hệ điều hành mới không khó, nhưng hỗ trợ nó trong 50 năm tiếp theo mới thực sự rất khó:

    • Nhấn mạnh rằng viết một hệ điều hành mới không phải là điều khó nhất, mà việc hỗ trợ nó trong thời gian rất dài mới là thử thách thực sự.
 
ahwjdekf 2024-01-10

Mục "Những tính năng không hoạt động" đúng là rất buồn cười. Dự án đồ chơi