- Rust로 완전히 구현되어 있으며, unikernel 설계와 WASM 기반 샌드박싱 보안 모델을 사용하는 그래픽 기반 실험용 운영체제
- EFI 바이너리에 커널, WASM 엔진, 모든 앱이 내장되어 최소화된 구조와 독특한 시스템 호출 인터페이스를 제공
-
VirtIO 기반 드라이버를 통해 QEMU에서 동작하며, 입력 및 네트워크, GPU 관리가 인터럽트 없이 폴링 방식으로 구현
-
전역 이벤트 루프와 협동 스케줄링을 통해 단순화된 동작 구조와 애플리케이션별 자원 모니터링 기능을 지원
- 자체 UI 툴킷 Uitk와 내장 앱(웹브라우저, 텍스트 에디터, Python 터미널) 제공, 다양한 언어로 WASM 앱 개발 가능
Munal OS란
- Munal OS는 Rust로 완전히 개발된 실험용 운영체제로, unikernel 기반 아키텍처와 WASM 샌드박싱을 조합해 새로운 OS 설계를 탐구하기 위해 만들어진 프로젝트
- 복잡성을 줄이고 필수 요소만 적용해, 현대적 도구로 간소화된 시스템 구조 실현을 목표로 함
주요 특징
-
풀 그래픽 환경 및 HD 해상도 지원, 마우스 및 키보드 인터페이스 탑재
-
샌드박스 방식 앱 실행, 사용자 애플리케이션의 커널 메모리 접근 차단
-
네트워크 드라이버 및 자체 TCP 스택 내장
- 커스터마이즈 가능한 UI 툴킷(Uitk) 포함, 다양한 위젯과 유연한 레이아웃, 텍스트 렌더링 지원
- 기본 제공 앱: 웹 브라우저(DNS, HTTPS, 기초 HTML 지원), 텍스트 에디터, Python 터미널
아키텍처
-
EFI 바이너리 기반 구조
-
부트로더 없이 EFI 바이너리 형태로 구동, 커널/WASM 엔진/앱이 한 파일에 내장됨
- UEFI 부트 서비스는 최단시간 내 종료, 시스템 시계 외에는 추가 활용 없음
-
주소 공간 관리
-
가상 주소 공간 미사용, UEFI가 남긴 identity-mapped 주소 그대로 사용
-
페이지 테이블 변경 없음. 커널 메모리 직접 보호는 WASM 샌드박싱으로 보완
-
드라이버와 하드웨어 지원
- PS/2나 VGA 대신, VirtIO 1.1 사양을 활용하는 PCI 드라이버 직접 구현
-
키보드, 마우스, 네트워크, GPU용 드라이버 제공
-
인터럽트 미사용, 모든 드라이버는 폴링 방식으로 설계
- QEMU 이외의 실물 하드웨어 실행은 미지원, 향후 추가 개발 필요
-
이벤트 루프와 스케줄링
-
멀티코어/인터럽트 미지원, 전체 동작은 단일 전역 이벤트 루프에서 선형적 실행
- 각 루프마다 네트워크/입력 드라이버 폴링, 데스크탑 UI 및 앱 실행, GPU 프레임버퍼 갱신
-
성능 분석 용이, 각 루프 사이클별 타임 측정 가능
-
앱은 직접적으로 CPU 점유 해제 필요, 장기 작업은 명시적으로 양보 필요
- 협동 스케줄링 기반이나, Wasmi 엔진의 fuel limit 기능을 통한 오작동 앱 강제 종료 지원 가능(미구현)
응용 프로그램 실행 구조
- [Wasmi WASM 엔진] 내장, 앱 실행시 완전 샌드박싱과 커널 분리 제공
- 커널 차원에서 시스템 콜 API 제공, 앱에서 마우스/키 이벤트 조회, TCP 소켓 사용, 프레임버퍼 출력 등 가능
- 앱의 렌더링 결과는 OS가 데스크탑에 합성하여 출력
-
Rust 이외의 언어로도 앱 제작 가능, WASM 빌드만 지원하면 사용 제한 없음
-
WASI 호환성은 부분 지원. 완전 준수 아님, 주요 외부 종속성 활용을 위한 최소 구현만 포함
- 앱별 전용 로그 스트림(stdout 유사) , 데스크탑 ‘감사’ 뷰에서 리소스 사용량과 함께 확인
UI 툴킷(uitk)
- Munal OS와 WASM 앱 모두에서 사용하는 자체 즉시모드 UI 킷
-
기본 위젯(버튼, 프로그레스바, 텍스트 에디트, 스크롤 캔버스) 및 삼각형 래스터라이저 제공
-
글로벌 스타일시트 기반 통일 스타일링, 개별 요소별 오버라이드 지원
-
효율적인 캐싱 시스템으로 불필요한 리렌더링 방지
- 각 영역별 “타일” 구분, Rust 뮤터빌리티 규칙 기반 변경 감지 알고리듬
빌드 및 실행 환경
- Rust Nightly 2025-06-01 및 QEMU 10.0.0 이상에서 빌드 및 실행 가능
주요 참고 자료 및 크레딧
- Philipp Oppermann의 Rust OS 튜토리얼 및 OSDev Wiki 문서
- Wasmi, smoltcp, Rustls, RustPython 등 주요 오픈소스 활용
- 다양한 오픈 소스 폰트 및 아이콘, 월페이퍼 자료 사용
Munal OS의 의의 및 장점
- 단일 EFI 바이너리 구조와 혁신적 샌드박싱 결합으로, 기존 OS 설계 패러다임 재고
- QEMU 환경 최적화 및 독특한 폴링 기반 드라이버 구조, 실 시스템 하드웨어 의존성 최소화
-
시스템 리소스 관리 투명성, 단순 구조에서 얻는 학습 및 실험적 가치가 큼
- 언어나 환경 제약 없이 WASM 앱 생태계 확장 가능성이 큼