- Rust로 작성된 Linux ABI 호환 커널로, “프레임커널(framekernel)” 아키텍처를 적용해 모놀리식과 마이크로커널의 장점을 결합하고자 함
- 모든 unsafe 코드를 한정된 라이브러리 내부에 캡슐화하여, 나머지 커널 서비스는 안전한 Rust 추상화로 개발 가능하게 설계해 메모리 안전성과 단순한 공유 메모리 구조를 동시에 달성
- RedLeaf, Tock, Rust for Linux 등 기존 Rust OS와 차별점은, 하드웨어 격리 지원 및 범용 목적, Linux 호환 ABI, 사용자 공간의 다양한 언어 실행
- TCB(신뢰 컴퓨팅 베이스) 최소화 및 공식 검증(Verus 활용) 추진, Intel TDX 등 신뢰 실행 환경 하드웨어 지원, OSTD/OSDK 등 OS 개발 프레임워크도 별도 제공
- 아직 초기 개발 단계로, x86/RISC-V 지원 및 206개 시스템콜 구현, Docker/컨테이너/클라우드 환경에 집중하고 있으나, X11/Xfce 등 데스크톱 확장도 시도 중
What's Asterinas?
- Asterinas는 Rust로 개발된 Linux ABI 호환 신규 커널 프로젝트임
- “프레임커널(framekernel)” 아키텍처란, unsafe Rust 코드(메모리 불안전 구간)를 프레임워크 라이브러리로 한정해 안전 API로 감싸고, 나머지 커널 서비스는 모두 안전한 Rust로 개발하게 설계함
- 모놀리식 커널의 단순/고성능 구조와, 마이크로커널의 TCB(신뢰 컴퓨팅 베이스) 최소화/안전성을 동시에 추구함
- 커널 내부에서 서비스들이 동일 주소 공간 내에서 분리되어 동작하며, 각 서비스는 core 라이브러리로부터 부여된 자원만 사용 가능함
프레임커널(framekernel) 아키텍처 설명
- 프레임커널 개념은 "Framekernel: A Safe and Efficient Kernel Architecture via Rust-based Intra-kernel Privilege Separation" 논문에서 처음 제안됨
- 모놀리식 커널은 모든 코드를 하나의 커널 모드 주소 공간에 포함시키는 구조이고, 마이크로커널은 최소한의 TCB에만 커널 공간을 할당하고 대부분의 기능을 유저 모드 서비스로 위임함
- 프레임커널은 Rust의 'unsafe' 기능이 필요한 코드를 라이브러리로 캡슐화하고, 나머지 커널 서비스는 메모리 안전 Rust 추상화를 적용해 개발함
- 각 서비스는 커널 주소 공간 내에서 실행되지만, 라이브러리에서 명시적으로 제공하는 자원만 접근하도록 제한함
- TCB를 작게 유지하면 공식 검증(수학적 증명)이 더 용이하고, 시스템 전체의 신뢰성과 안정성을 높일 수 있음
- 공유 메모리 기반(모놀리식 커널처럼 고성능) 이면서도, 내부 권한 분리/보안성(마이크로커널의 장점) 을 결합한 접근법임
기존 Rust OS 및 프레임커널과의 비교
- RedLeaf: Rust 기반 마이크로커널, 하드웨어 격리를 사용하지 않음
- Asterinas: 범용 OS, 하드웨어 격리 활용, Linux ABI 호환, 다양한 언어의 사용자 공간 실행 지원
- Tock: 임베디드 SoC 타깃, 핵심(unsafe 허용)과 캡슐(안전 코드) 분리 구조, 하드웨어 격리 미지원
- Rust for Linux 프로젝트 역시 커널 인터페이스를 안전 추상화로 감싸 kernel driver를 Rust로 안전하게 작성할 수 있게 하려는 목적이 있음
공식 검증 및 보안성
- TCB를 줄이는 주된 목적은, 정형 검증(formal verification) 이 현실적으로 가능하도록 하기 위함임
- Asterinas는 seL4처럼 작고 검증 가능한 TCB와 Linux ABI 호환, 공유 메모리 구조를 동시에 목표로 삼는 유일한 사례임
- 보안 감사 전문 기업 CertiK와 협업하여 Verus 기반 정형 검증 작업을 수행 중임
- CertiK의 보안 평가 보고서에서 프로젝트의 감사지점 및 발견 이슈를 공개함
라이브러리 및 개발 도구
- 커널 자체 외에 OSTD(Rust OS 프레임워크)와 OSDK(Cargo 기반 개발 도구)를 제공함
- OSTD의 주요 목표:
- OS 개발 진입 장벽 완화 및 혁신 기반 마련
- Rust 운영체제의 메모리 안전성 강화와 저레벨 API 추상화
- Rust OS 프로젝트 간 코드 재사용 촉진
- 유저 모드에서 신규 코드 테스트 가능(개발 생산성 증가)
- OSD 및 OSTD 기반 커널은 Linux 호환적일 필요가 없으며, x86 하드웨어 제어, 가상 메모리, 다중 처리(SMP), 타이머 등 고레벨 메모리 안전 API를 제공
- Intel이 후원사로 참여, 특히 Trust Domain Extensions(TDX) 와 가상머신 격리 관련 기술이 매칭
개발 현황 및 주요 스폰서
- 2024년 초 오픈소스(MPL 라이선스)로 첫 공개, 현재 45명 기여, 주요 기여자는 중국 SUSTech, 북경대, Fudan대 박사과정과 Ant Group
- x86, RISC-V 지원, Linux 시스템콜 206개 구현(전체 368개 중)
- 아직 앱 실행 불가, 초기 배포판 개발·컨테이너(Docker) 지원 목표, Nix 기반 배포 등 시도
- Linux 커널 모듈 로드를 지원하지 않으며 영구적으로 도입 계획이 없음
앞으로의 계획
- 더 다양한 CPU 아키텍처, 하드웨어 지원 확대 및 클라우드 환경 내 실사용성을 단기 우선 과제로 삼음
- Linux virtio 기기 지원 완료, 중국 클라우드 시장(알리바바 클라우드, Aliyun) 을 주요 타깃으로 함
- 안전하고 축소된 TCB, Intel 신뢰 컴퓨팅 기능 지원을 갖춘 컨테이너용 host OS 개발이 중심 목표임
- Rust for Linux와 목적은 비슷해도, Rust for Linux는 기존 커널 내 Driver의 Rust화에 제한되는 반면, Asterinas는 전체 커널 신규 설계와 TCB 최소화를 추구
- 현재는 X11, Xfce 지원 등 다양한 방향 실험도 진행 중이며, OSTD 자체도 일반 OS 개발자에게서 주목 받을 잠재력이 있음
Rust for Linux와의 차이점
- Rust for Linux: 기존 Linux 커널에 Rust로 안전한 드라이버만 도입, 커널 전체는 C 기반
- Asterinas: 새로운 커널을 처음부터 Rust로 구현, unsafe를 엄격히 한정, 공식 검증 추진, 클라우드/컨테이너 환경에 집중
종합 및 전망
- Asterinas는 메모리 안전성, 공식 검증, 클라우드 환경 실용성 등에서 혁신적 접근을 시도 중
- 아직 실사용 예시나 넓은 커뮤니티 검증은 없음, OS 연구·클라우드·보안 분야에서 관심 받고 있음
- OSTD 프레임워크 등은 향후 Rust OS 개발 생태계에서 활용 가능성을 가짐
Asterinas 관련 LWN 댓글 주요 논점 요약
- Singularity OS 및 언어 기반 보안 경계 논쟁
- Asterinas의 framekernel은 Microsoft의 Singularity OS와 유사하나, Rust의 borrow checker를 활용해 메모리 안전성을 높임
- 언어 자체(예: Rust, Java, WASM/JS)의 보안 경계로 시스템을 보호하는 접근에 대해, "완전 신뢰는 불가능하며 실제로는 하드웨어/OS 레벨 샌드박스와 병행해서 사용함"이라는 비판과, "결함 방지 및 공식 검증에는 장점이 있다"는 의견이 대립함
- WASM, JS, Java 등도 보안성 논란이 있지만, 실서비스에서는 언어 샌드박스만으로는 신뢰받지 못하며, 실제로는 하드웨어나 OS 샌드박스를 반드시 병행하는 사례가 일반적임
- 운영체제 개발 트렌드 및 지정학적 배경
- 최근 몇 년간 다양한 OS 신생 프로젝트가 등장, OS 혁신 분위기 확산 중임
- 중국이 미국의 기술제재 및 공급망 리스크에 대응해 Linux 대체 OS 개발에 박차를 가하고 있음
- US 제재와 GPL 등 오픈소스의 글로벌 거버넌스 논쟁, 그리고 중국·유럽 등 각국이 독립적 기술 생태계를 추구해야 한다는 정치적 논의가 격렬하게 이어짐
- Linux에서 포크 유지와 완전 신규 커널 개발의 난이도, 커뮤니티 지식/노하우 의존성, 언어 장벽 등도 논쟁 주제임
- Linux 호환성/시스템 콜 수 논쟁
- "Linux 시스템 콜 수로 호환성 측정은 부적절" 의견 다수
- 단일 시스템 콜(ioctl 등)이 수많은 세부 API를 내포하므로, 실질적 호환성을 위해서는 커널 테스트 스위트 등 실제 앱 구동이 중요
- 초기에 POSIX 호환성 확보를 위해 syscall을 하나씩 구현했던 Linux 발전사를 예로 들며, 99%의 주요 syscall만 지원해도 꽤 많은 소프트웨어가 구동될 수 있다는 현실적 의견도 나옴
- 라이선스 및 Rust 생태계
- Asterinas가 MPL을 택한 것에 대한 논의: Rust의 crate 생태계와 모듈형 라이선스에 MPL이 잘 어울린다는 긍정적 의견
- GPL이 항상 최적은 아니며, 기업 후원을 받는다면 기업 친화적 라이선스(MPL 등)를 쓸 수도 있다는 시각
- 프로젝트 의존성/보안
- Rust 기반 OS에서 많은 외부 crate 사용이 안전한지에 대한 의문과, cargo deny/vet 등을 통한 공급망 보안·감사 자동화 필요성 제기
- 실제 lockfile만으로는 의존성 표면적을 파악하기 어렵고, Rust 생태계 특유의 트랜스티브 의존성, OS별 의존성 등 복잡성도 언급됨
- 기술적 영감/유사 아키텍처
- framekernel 개념이 90년대 University of Washington의 SPIN OS 아키텍처와 유사함을 지적
- SPIN 역시 강한 모듈성, 컴파일러에 의한 인터페이스/접근 제어를 강조
- 커미터 구성 논란
- 45명의 기여자 중 다수 커밋이 소수의 박사과정 학생 중심임을 언급
- PhD 학생 주도의 기여가 실질적 커미터로서 가치가 낮다는 오해를 지적하며, 연구 중심의 혁신 프로젝트로서도 의미가 있다는 의견
- 정치/역사 논쟁 및 오프토픽 지적
- OS 논의가 미국, 유럽, 중국의 지정학/정치/역사 논쟁으로 확장되며, 편집자에 의해 "오프토픽" 경고가 여러 차례 제기됨
- 오픈소스·FOSS 생태계도 지정학적 환경 변화에 영향을 받을 수 있음을 일부 이용자들이 강조함
- 기타
- WASM 보안성에 관한 학술적 논문 공유
- 커널 개발 현황에 대한 긍정적/비판적 시선 혼재