# 클라이언트 측에서 실행되는 서버리스 가상 리눅스 환경 WebVM

> Clean Markdown view of GeekNews topic #15797. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=15797](https://news.hada.io/topic?id=15797)
- GeekNews Markdown: [https://news.hada.io/topic/15797.md](https://news.hada.io/topic/15797.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-07-12T09:49:19+09:00
- Updated: 2024-07-12T09:49:19+09:00
- Original source: [webvm.io](https://webvm.io/)
- Points: 3
- Comments: 1

## Topic Body

- **WebVM 소개**
  - WebVM은 서버가 필요 없는 가상 리눅스 환경으로, HTML5/WebAssembly를 통해 완전히 클라이언트 측에서 실행됨
  - CheerpX 가상화 엔진을 사용하여 안전하고 샌드박스된 클라이언트 측 x86 바이너리 실행을 가능하게 함
  - CheerpX는 x86-to-WebAssembly JIT 컴파일러, 가상 블록 기반 파일 시스템, 리눅스 시스템 호출 에뮬레이터를 포함함

- **새로운 기능**
  - Dockerfile을 통해 사용자 맞춤 이미지를 사용하여 자신의 WebVM을 생성할 수 있음
  - 링크: [Mini WebVM: Your Linux Box from Dockerfile via WASM](https://leaningtech.com/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`

### GN⁺의 정리
- WebVM은 서버가 필요 없는 가상 리눅스 환경으로, 클라이언트 측에서 안전하게 x86 바이너리를 실행할 수 있는 장점이 있음
- CheerpX 가상화 엔진을 통해 다양한 시스템 호출과 파일 시스템을 에뮬레이션할 수 있어, 브라우저에서 직접 리눅스 환경을 체험할 수 있음
- Dockerfile을 통해 사용자 맞춤 이미지를 생성할 수 있어, 개발자들에게 유연한 환경을 제공함
- 비슷한 기능을 가진 프로젝트로는 JSLinux와 v86이 있음

## Comments



### Comment 27164

- Author: neo
- Created: 2024-07-12T09:49:19+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=40940225) 
- 여러 가상 머신(VM) 링크 공유
  - [copy.sh/v86](https://copy.sh/v86/)
  - [bellard.org/jslinux](https://bellard.org/jslinux/)
  - [jamesfriend.com.au/pce-js](https://jamesfriend.com.au/pce-js) ([GitHub 링크](https://github.com/jsdf/pce))
  - [pcjs.org](https://www.pcjs.org) (다양한 하드웨어와 OS) ([GitHub 링크](https://github.com/jeffpar/pcjs))

- Mac OS 관련 링크 공유
  - [infinitemac.org](https://infinitemac.org) ([블로그 링크](https://blog.persistent.info/2023/03/infinitemac-dot-org.html))
  - [BasiliskII-worker](https://jamesfriend.com.au/projects/basiliskii/BasiliskII-worker.html)
  - [pce-js-apps](https://jamesfriend.com.au/pce-js/pce-js-apps)

- WebVM의 리드 개발자이자 Leaning Technologies의 CTO가 질문을 받을 준비가 되어 있음
  - Discord 참여 권장 ([Discord 링크](https://discord.gg/yTNZgySKGa))

- Tailscale을 통한 네트워킹 제공, 잠재적 문제를 해결하는 영리한 방법임

- 모바일에서는 사용 불가, 특히 Android의 Firefox와 Chrome에서 키보드 문제로 명령어가 중복 입력됨

- 오프라인에서 작동하고 리로드 간 상태를 유지할 수 있는지 질문

- 실용적인 사용 사례에 대한 질문

- 모바일에서 작동하지 않는다는 의견

- [bellard.org/jslinux](https://bellard.org/jslinux)보다 느리다는 의견

- 90년대 중반에 Slackware Linux를 플로피 디스크로 처음 사용했지만, 브라우저에서 Linux를 볼 때마다 놀라움을 느낌
  - 브라우저가 자체 운영 체제처럼 동작할 수 있다는 의견

- Apple Silicon에서 매우 느리다는 의견
