.smolmachine 파일로 패키징된 VM은 동일 아키텍처 플랫폼에서 의존성 없이 재실행 가능
주요 기능
로컬 가상머신 관리 및 실행
smolvm machine run 명령으로 커스텀 리눅스 VM 실행
콜드스타트는 1초 미만, macOS와 Linux 모두 지원
메모리는 virtio balloon로 탄력 관리 (실제 사용량만 호스트에 할당)
이식 가능한 단일 파일 패키징
VM 상태를 포함한 .smolmachine 파일로 묶어 다른 플랫폼에서 재생성
모든 의존성이 내장되어 설치 없이 즉시 실행 가능
부팅 시간은 200ms 미만
불신 코드 샌드박싱
하이퍼바이저 경계를 통해 호스트 파일시스템, 네트워크, 자격증명 완전 분리
기본 네트워크는 비활성화, --allow-host 옵션으로 특정 호스트만 허용
지속형 개발용 VM
machine create, start, stop 명령으로 VM 생성 및 관리
설치된 패키지가 재시작 후에도 유지
SSH 에이전트 포워딩
호스트의 SSH 에이전트를 VM 내부로 전달 (개인키는 게스트로 복사되지 않음)
--ssh-agent 옵션으로 호스트 SSH 인증을 안전하게 활용
Smolfile 기반 환경 선언
TOML 형식의 Smolfile로 VM 설정을 선언
이미지, 네트워크, 초기화 명령, 볼륨, 인증 옵션 등을 지정
사용 예시
# 임시 VM 실행smolvm machine run --net --image alpine -- sh -c "echo 'Hello world'"# 패키징된 실행 파일 생성smolvm pack create --image python:3.12-alpine -o ./python312# SSH 및 Git 사용smolvm machine run --ssh-agent --net --image alpine
내부 구조
각 워크로드는 Hypervisor.framework(macOS) 또는 KVM(Linux) 위에서 독립 커널 실행
libkrun 기반 VMM과 커스텀 커널(libkrunfw) 사용
OCI 이미지 포맷 지원 (Docker Hub, ghcr.io 등에서 이미지 직접 가져와 실행)
Docker 데몬 불필요, 표준 OCI 이미지를 그대로 부팅 가능
기본 설정: 4 vCPU, 8GiB RAM (--cpus, --mem 옵션으로 조정)
vCPU 스레드는 유휴 시 하이퍼바이저에서 자동 절전
비교 (smolvm vs 기타 가상화 기술)
항목
smolvm
Containers
Colima
QEMU
Firecracker
Kata
격리 수준
워크로드별 VM
네임스페이스(공유 커널)
네임스페이스(단일 VM)
개별 VM
개별 VM
컨테이너별 VM
부팅 시간
<200ms
약 100ms
수 초
15~30초
<125ms
약 500ms
아키텍처
라이브러리(libkrun)
데몬
VM 내 데몬
프로세스
프로세스
런타임 스택
워크로드별 VM
지원
미지원
공유
지원
지원
지원
macOS 네이티브
지원
Docker VM 경유
krunkit 기반
지원
미지원
미지원
SDK 내장
지원
미지원
미지원
미지원
미지원
미지원
이식 가능한 아티팩트
.smolmachine
데몬 필요 이미지
미지원
미지원
미지원
미지원
플랫폼 지원
호스트
게스트
요구사항
macOS Apple Silicon
arm64 Linux
macOS 11 이상
macOS Intel
x86_64 Linux
macOS 11 이상 (테스트 미완료)
Linux x86_64
x86_64 Linux
KVM(/dev/kvm) 필요
Linux aarch64
aarch64 Linux
KVM(/dev/kvm) 필요
알려진 제한 사항
네트워크는 기본 비활성화, --net 옵션으로만 활성화 가능
TCP/UDP만 지원, ICMP 미지원
볼륨 마운트는 디렉터리 단위만 가능, 단일 파일은 불가
macOS에서는 Hypervisor.framework 권한으로 서명된 바이너리만 실행 가능