GN⁺: 클라이언트 측에서 실행되는 서버리스 가상 리눅스 환경 WebVM
(webvm.io)-
WebVM 소개
- WebVM은 서버가 필요 없는 가상 리눅스 환경으로, HTML5/WebAssembly를 통해 완전히 클라이언트 측에서 실행됨
- CheerpX 가상화 엔진을 사용하여 안전하고 샌드박스된 클라이언트 측 x86 바이너리 실행을 가능하게 함
- CheerpX는 x86-to-WebAssembly JIT 컴파일러, 가상 블록 기반 파일 시스템, 리눅스 시스템 호출 에뮬레이터를 포함함
-
새로운 기능
- Dockerfile을 통해 사용자 맞춤 이미지를 사용하여 자신의 WebVM을 생성할 수 있음
- 링크: Mini WebVM: Your Linux Box from Dockerfile via WASM
-
예제 사용법
- Python 예제 실행:
python3 examples/python3/fibonacci.py
- C 예제 컴파일 및 실행:
gcc -o helloworld examples/c/helloworld.c && ./helloworld
- 바이너리 디스어셈블:
objdump -d ./helloworld | less -M
- Vim으로 C 예제 파일 열기:
vim examples/c/helloworld.c
- 네트워킹이 필요한 curl 예제:
curl --max-time 15 parrot.live
- Python 예제 실행:
GN⁺의 정리
- WebVM은 서버가 필요 없는 가상 리눅스 환경으로, 클라이언트 측에서 안전하게 x86 바이너리를 실행할 수 있는 장점이 있음
- CheerpX 가상화 엔진을 통해 다양한 시스템 호출과 파일 시스템을 에뮬레이션할 수 있어, 브라우저에서 직접 리눅스 환경을 체험할 수 있음
- Dockerfile을 통해 사용자 맞춤 이미지를 생성할 수 있어, 개발자들에게 유연한 환경을 제공함
- 비슷한 기능을 가진 프로젝트로는 JSLinux와 v86이 있음
Hacker News 의견
-
여러 가상 머신(VM) 링크 공유
- copy.sh/v86
- bellard.org/jslinux
- jamesfriend.com.au/pce-js (GitHub 링크)
- pcjs.org (다양한 하드웨어와 OS) (GitHub 링크)
-
Mac OS 관련 링크 공유
-
WebVM의 리드 개발자이자 Leaning Technologies의 CTO가 질문을 받을 준비가 되어 있음
- Discord 참여 권장 (Discord 링크)
-
Tailscale을 통한 네트워킹 제공, 잠재적 문제를 해결하는 영리한 방법임
-
모바일에서는 사용 불가, 특히 Android의 Firefox와 Chrome에서 키보드 문제로 명령어가 중복 입력됨
-
오프라인에서 작동하고 리로드 간 상태를 유지할 수 있는지 질문
-
실용적인 사용 사례에 대한 질문
-
모바일에서 작동하지 않는다는 의견
-
bellard.org/jslinux보다 느리다는 의견
-
90년대 중반에 Slackware Linux를 플로피 디스크로 처음 사용했지만, 브라우저에서 Linux를 볼 때마다 놀라움을 느낌
- 브라우저가 자체 운영 체제처럼 동작할 수 있다는 의견
-
Apple Silicon에서 매우 느리다는 의견