LinuxPDF
PDF안에서 RISC-V 에뮬레이터로 Linux 실행하기
Features
- 일반적으로 PDF 파일이 정적인 문서라고 생각하기 쉬우나, 사실 Javascript를 지원하는 기능이 포함되어 있음
- PDF 표준은 독자적인 Javascript 표준 라이브러리를 가지고 있음
- Chromium, Firefox 같은 현대 브라우저는 보안상의 이유로 극히 제한된 API만 구현하고 있음
- 오래된 버전의 Emscripten(asm.js 타겟을 지원하는 1.39.20 등)을 사용함
- TinyEMU RISC-V 에뮬레이터를 수정하여 asm.js로 컴파일하고, PDF에서 이를 실행하는 구조
- 화면은 한 줄을 하나의 텍스트 필드로 사용하고, ASCII 문자로 픽셀 상태를 표현함
- 입력은 가상 키보드와 텍스트 박스를 통해 VM에 키 입력을 전달함
- 예: Linux 커널 부팅에 30~60초 정도 걸리며, 일반적 실행 대비 100배 이상 느림
- Chrome PDF 엔진의 V8은 JIT가 비활성화되어 있어 성능이 크게 저하됨
- 기본은 32비트 Buildroot 시스템(원래 TinyEMU 예제에서 가져온 것)을 사용함
- 64비트 Alpine Linux 버전도 있으나, 성능이 약 2배 더 느려 일반적으로는 사용하지 않음