Asterinas 프로젝트는 2026년 10월 13일 발표한 0.19.0에서 Asterinas NixOS 환경 안에서 자체 커널을 빌드하고, 새 커널을 중첩 QEMU로 부팅했다고 밝혔다. 운영체제 안에서 그 운영체제를 다시 만드는 개발 도구들이 동작한다는 성과다.
의존성과 개발 환경을 구성하는 Nix, Rust 빌드 도구 Cargo와 컴파일러 rustc, 가상 머신을 실행하는 QEMU가 이 과정에 쓰인다. 10월 15일 확인한 Asterinas Book은 이 절차를 아직 실험적이라고 명시한다. 검증 대상은 x86-64뿐이며, 중첩 VM에서 확인한 범위도 새 커널의 부팅 성공까지다.
빌드 메모리를 붙잡는 파일 캐시
이 빌드 경로를 시험하려면 자원 여유가 필요하다. Asterinas Book은 x86-64 Linux 호스트와 약 50 GiB의 빈 디스크 공간을 요구한다. 호스트에는 VM을 하드웨어 가속으로 실행하는 Linux 기능인 KVM이 필요하다. 그 위에서 실행할 바깥 Asterinas VM에는 메모리 40 GiB와 가상 CPU 4개를 배정한다.
문서는 커널 빌드 종료 시 메모리 사용량이 약 31 GiB에 이른다고 보고한다. 원인으로는 메모리가 부족해져도 파일 캐시를 아직 회수하지 못하는 점을 든다. 파일을 다시 읽을 때 쓰려고 남겨 둔 데이터가 빌드에 필요한 메모리와 공간을 다투는 셈이다. 문서의 32 GiB·가상 CPU 8개 구성에서는 빌드 막바지에 메모리가 부족해지기도 했다.
두 구성은 메모리와 CPU 수가 함께 달라, 메모리 크기만 바꾼 비교는 아니다. 약 31 GiB라는 사용량도 컴파일러 자체에 필요한 메모리로만 해석하기는 어렵다. 자체 빌드 성공과 별개로, 메모리가 빠듯한 환경에서는 캐시 회수 기능의 부재가 실행 가능성을 좌우하는 제약으로 보인다.
VMX 지원과 /dev/kvm 사이의 간격
이번 버전의 Intel VMX 지원은 CPU의 하드웨어 가상화 기능으로 게스트를 실행하기 위한 기반이다. 프로젝트는 게스트 CPU 상태 관리, 게스트의 메모리 주소를 호스트의 실제 메모리에 연결하는 EPT, 게스트에서 호스트로 제어권을 돌려주는 VM-exit 경로 등을 구현했다고 설명한다.
특권 명령을 다루는 저수준 기능은 OSTD 프레임워크가 맡고, 상위 실행 정책은 커널이 맡는 구조다. 하지만 이 기반과 QEMU 같은 도구가 이용할 KVM 호환 /dev/kvm 인터페이스는 서로 다른 구현 단계다.
Asterinas Book은 Asterinas가 아직 KVM을 제공하지 않으므로 중첩 VM을 QEMU 소프트웨어 에뮬레이션으로 실행한다고 명시한다. 바깥 Linux 호스트가 KVM으로 Asterinas를 실행하는 것과, Asterinas가 안쪽 VM에 하드웨어 가속을 제공하는 것은 별개의 지원이다.
2026년 8월 5일 승인된 하이퍼바이저 RFC에는 KVM 호환 인터페이스 설계가 담겨 있다. 설계 승인만으로 그 인터페이스가 이번 버전에 구현됐다고 볼 수는 없다.
중첩 VM에서 확인한 것은 부팅까지
중첩 QEMU는 Asterinas 안에서 필요한 수신 소켓을 열 수 없어 네트워크와 화면 출력을 끈 상태로 실행된다. 중첩 VM은 부팅 성공 메시지를 남기고 종료하지만, 이를 실행한 make run_kernel 명령은 아직 반환되지 않는다고 문서는 설명한다.
Asterinas 안의 Nix 빌드도 관리자 권한인 root로 실행된다. 필요한 격리 기능을 지원하지 않아 빌드를 별도 환경에 가두는 샌드박스는 사용하지 않는다.
이 결과는 상당한 개발 도구가 Asterinas에서 동작한다는 근거지만, 일반적인 중첩 개발 세션이나 격리된 다중 사용자 빌드까지 검증한 결과는 아니다. 자원 조건을 충족한다면 자체 빌드 경로를 살펴볼 출발점으로 볼 수 있다.
시간도 고려할 조건이다. 문서는 설치에 약 30분, 첫 빌드에는 호스트 성능에 따라 1시간 넘게 걸린다고 안내한다.
개발 셸 준비 뒤의 중첩 부팅 확인
아래 명령의 전제는 Asterinas Book의 전체 설치·빌드 절차를 마친 상태다. 메모리 40 GiB의 바깥 VM 안에서 개발 셸을 준비하고 커널을 빌드한 뒤, 다음 명령으로 중첩 부팅을 확인하는 순서다.
make run_kernel \
ENABLE_KVM=0 \
NETDEV=none \
QEMU_DISPLAY=none \
MEM=2G \
AUTO_TEST=bootENABLE_KVM=0은 하드웨어 가속 없이 실행하도록 하고, NETDEV=none과 QEMU_DISPLAY=none은 네트워크와 화면 출력을 끈다. MEM=2G는 안쪽 VM의 메모리 설정이며, AUTO_TEST=boot는 부팅 시험을 선택한다.
문서가 제시한 성공 메시지는 "Successfully booted."다. 이 메시지 뒤에 중첩 VM이 종료돼도 바깥의 make 명령은 반환되지 않는다는 제한을 함께 확인할 필요가 있다.
다음에 주목할 변화는 파일 캐시 회수로 자체 빌드의 메모리 부담을 줄이는지, 그리고 VMX 기반 기능 위에 KVM 호환 인터페이스가 구현되는지다. 전자는 개발 작업의 자원 제약을, 후자는 기존 가상화 도구와 연결되는 범위를 바꾸는 지점이다.
Asterinas 0.19.0의 자체 빌드·부팅 성공은 개발 환경의 진전이지만, 메모리 회수와 KVM 호환 호스트 지원은 남은 과제다.
