GN⁺: MotorOS: x64 VM을 위한 Rust 기반 운영 체제
(github.com/moturus)Motūrus OS 소개
- Motūrus 프로젝트는 클라우드를 위한 간단하고, 빠르며, 안전한 운영 체제인 MotūrusOS를 개발함.
- Motūrus OS는 가상 머신 기반 워크로드를 목표로 하는 새로운 운영 체제로, 웹 서버, 서버리스, 엣지 캐싱 등에 사용됨.
왜 Motūrus OS인가?
- 현재 대부분의 가상화된 생산 작업 부하는 리눅스에서 실행되고 있음.
- 리눅스는 많은 고급 기능을 가지고 있지만, 가상화된 작업 부하에 이상적이지 않은 몇 가지 복잡성을 가지고 있음:
- 리눅스는 베어메탈에 최적화되어 있어 VM 내부에서 사용 시 비효율적임.
- 리눅스는 사용하기 어려움.
- 리눅스는 역사적으로 매우 안전하지 않았음.
- 가상화된 작업 부하에 초점을 맞춘 새로운 운영 체제는 리눅스보다 훨씬 간단하고 안전하게 만들 수 있으며, 성능이나 효율성에서 리눅스를 능가하거나 맞출 수 있음.
Motūrus OS는 무엇인가?
- Motūrus OS는 마이크로커널 기반의 운영 체제로, Rust 언어로 구축되어 있으며, 오직 가상화된 작업 부하만을 목표로 함.
- 현재 x64 KVM 기반 가상 머신을 지원하며, Qemu 또는 Cloud Hypervisor에서 실행할 수 있음.
- Rust는 Motūrus OS의 핵심 언어로, 구현뿐만 아니라 ABI도 Rust로 제공됨.
작동하는 기능들
- 현재 대부분의 서브시스템이 POC/MVP 모드에서 작동 중이지만, 웹 서버와 같은 작업을 실행할 수 있음.
- 구체적으로 다음과 같은 기능들이 작동함:
- MBR(Qemu) 또는 PVH(Cloud Hypervisor)를 통해 약 200ms 내에 부팅함.
- himem 마이크로커널.
- 스케줄링: 간단한 멀티프로세서 라운드 로빈(SMP), 커널 스케줄링은 협력적임.
- 메모리 관리: 현재는 4K 페이지만 지원, 스택은 보호됨, 사용자 공간의 페이지 결함이 적절히 처리됨.
- I/O 서브시스템(사용자 공간 내): VirtIO-BLK 및 VirtIO-NET 드라이버, 두 가지 간단한 파일 시스템, smoltcp 기반 네트워킹(TCP만 지원).
- 사용자 공간: 다중 프로세스, 선점, 스레드, TLS, Rust 표준 라이브러리 대부분 포팅됨.
- 간단한 유닉스 스타일 쉘 제공.
작동하지 않는 기능들
- 대부분의 부분이 아직 프로덕션 사용에 준비되지 않았음.
- 보안 감사가 이루어지지 않았음.
- sys-io(사용자 공간 I/O 서브시스템)에서 "구현되지 않음" 패닉을 쉽게 겪을 수 있음.
- 구체적으로 다음과 같은 기능들이 작동하지 않음:
- 파일 시스템: Rust std::fs API의 대부분이 POC로 구현되었지만, 비동기 I/O를 사용하여 재구현해야 함.
- 네트워킹: std::net::TcpStream은 대부분 구현되었지만, 다른 프로토콜은 아직 구현되지 않음.
- Rust 표준 외의 생태계: 일부 크레이트는 소소한 조정으로 컴파일 및 사용 가능, Tokio와 같은 비동기 런타임에 의존하는 크레이트는 현재 컴파일되지 않음.
어떻게 Motūrus OS를 빌드/실행할 수 있나?
- docs/build.md 문서를 참조.
감사의 말
- Rust로 OS를 작성하는 블로그 시리즈를 작성한 Philipp Oppermann에게 큰 감사를 표함. 많은 사람들이 이 분야에서 실험하도록 영감을 주었음.
GN⁺의 의견
- 혁신적인 접근: Motūrus OS는 가상화된 환경에 특화된 새로운 운영 체제로, 리눅스의 복잡성과 비효율성을 해결하고자 함.
- Rust 언어의 채택: Rust는 메모리 안전성과 성능을 중시하는 언어로, Motūrus OS의 안전성과 효율성에 기여할 것임.
- 개발자 커뮤니티에 대한 기여: 이 프로젝트는 운영 체제 개발에 관심 있는 개발자들에게 새로운 가능성을 탐색하고, 기존의 한계를 넘어서는 데 도움이 될 것임.
Hacker News 의견
-
프로젝트 개발자/저자의 의견:
- 프로젝트에 대한 관심과 토론에 감사함.
- 장기적 생존 가능성과 지원, 컴파일러 및 바이너리 호환성에 대한 우려가 있음.
- 커뮤니티 없이는 프로젝트가 성공할 수 없으나, Motor OS와 같은 프로젝트의 잠재적 이점이 결국 널리 사용되는 새로운 운영 체제로 이어질 것이라고 믿음.
- 가상 머신 내부(때로는 외부)에서의 리눅스 문제점과 리눅스 개발자들이 이를 해결하는 데 충분히 집중하지 않는다고 지적함.
- 컴파일러 불안정성과 바이너리 호환성에 대한 우려에 대해 이해하지 못하며, 최신 리눅스 커널은 다양한 GCC 또는 LLVM 툴체인으로 컴파일 가능하고, 오래된 바이너리도 문제없이 실행됨을 언급함.
- 추가 질문에 답변할 준비가 되어 있음을 밝힘.
-
"Rust-first" 접근 방식에 대한 설명:
- "Rust-first"는 마이크로 커널과 드라이버가 Rust로 구현될 뿐만 아니라, 사용자 공간 프로그램도 현재는 Rust로만 작성될 수 있음을 의미함.
- 기술적으로 C 등 다른 언어로 Motor OS용 앱을 작성하기 위해 Rust 기반 ABI와 제공된 Rust 툴체인을 역공학할 수 있으나, 이는 일정한 작업이 필요함.
- 표준 Rust 프로그램은 표준 Rust 라이브러리를 사용하고 FFI 없이 컴파일 및 실행 가능함을 설명함.
-
작은 커널이 현대 컴퓨터에서 200ms가 걸리는 이유에 대한 궁금증:
- 메모리 페이지의 메타데이터 초기화, 파일 시스템 마운트, init 프로세스 시작 등이 필요하지만, 이 모든 것이 몇 마이크로초 내에 이루어져야 한다고 생각함.
- 호스트가 리소스를 준비하는 데 시간이 걸리는 것인지, 예를 들어 QEMU와 KVM에서 느린 부분이 있는지 의문을 제기함.
-
Rust로 작성된 커널에서 비동기 첫 번째 커널을 보고 싶어하는 의견:
- 비동기 첫 번째 커널이 특별히 어렵거나 가치를 보지 못하는 것인지, 아니면 단순히 시도하지 않는 것인지에 대한 의문을 표함.
- Phil Oppermann의 Rust로 만든 OS 시리즈를 따라가며 이것이 가능하다는 것을 알고 있으나, 최근의 Rust 기반 OS들은 이를 시도하지 않는 것 같음을 언급함.
-
리눅스 경쟁에 대한 리눅스 토르발스의 과거 발언을 상기시키는 의견:
- 토르발스가 경쟁에 대한 두려움을 묻는 질문에 대해, 자신은 디바이스 드라이버 작성을 좋아하며, 이를 좋아하는 젊고 열정적인 사람이 나타나기 전까지는 경쟁을 두려워하지 않는다고 답한 것을 회상함.
-
Motor OS와 같은 프로젝트에 대한 흥미와 개발 지속을 바라는 의견:
- Motor OS와 같은 프로젝트가 많이 실패하여 더 이상 흥분하기 어려움을 표현함.
- 클라우드와 같은 특정 용도로 리눅스를 대체하는 것은 매우 어려운 일임을 언급함.
-
리눅스의 복잡성으로 인해 Docker, Nix OS, "서버리스" 등이 존재한다는 의견:
- Docker와 NixOS는 사용자 공간의 패키지 관리 문제로 인해, 서버리스는 비즈니스가 수요에 따라 컴퓨팅을 지불하고자 함으로 인해 존재함을 설명함.
-
새로운 기술에 대한 초기 회의적인 태도를 가졌으나, 다시 생각해보니 불필요한 계층을 제거함으로써 얻을 수 있는 효율성과 보안 향상이 매력적이라는 의견:
- 새로운 기술에 대한 건강한 접근 방식을 갖고 있으며, 효율성과 보안 향상이 매력적임을 인정함.
-
Motor OS가 Docker 등과 경쟁하는 것처럼 보인다는 의견:
- Motor OS가 Docker와 같은 기술보다 리눅스와 직접 경쟁하기보다는 이들과 더 직접적으로 경쟁하는 것처럼 보임을 지적함.
- Motor OS를 선택해야 하는 이유, 즉 Docker 등 대신 Motor OS를 사용해야 하는 이유를 "왜?" 섹션에서 다루고 싶음을 표현함.
-
새로운 운영 체제를 시작하는 것은 어렵지 않지만, 다음 5십 년 동안 그 운영 체제를 지원하는 것은 매우 어렵다는 의견:
- 새로운 운영 체제를 작성하는 것은 어렵지 않지만, 장기간에 걸쳐 지원하는 것은 매우 어려운 일임을 강조함.