# LinuxPDF - PDF안에서 RISC-V 에뮬레이터로 Linux 실행하기

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

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=19067](https://news.hada.io/topic?id=19067)
- GeekNews Markdown: [https://news.hada.io/topic/19067.md](https://news.hada.io/topic/19067.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2025-02-05T10:36:02+09:00
- Updated: 2025-02-05T10:36:02+09:00
- Original source: [github.com/ading2210](https://github.com/ading2210/linuxpdf)
- Points: 17
- Comments: 4

## Summary

PDF 파일은 정적인 문서로 여겨지지만, Javascript를 지원하여 다양한 기능을 수행할 수 있습니다. TinyEMU RISC-V 에뮬레이터를 asm.js로 컴파일하여 PDF 내에서 Linux를 실행할 수 있습니다. 이는 아크로뱃내에서 실행된 것으로, 제한된 브라우저 API에서도 가능은 하지만 성능이 크게 저하됩니다. PDF 내에서의 Linux 실행은 32비트 Buildroot 시스템을 기본으로 사용하며, 64비트 Alpine Linux도 가능하지만 성능 저하로 인해 추천하지 않습니다.

## Topic Body

- 일반적으로 PDF 파일이 정적인 문서라고 생각하기 쉬우나, 사실 Javascript를 지원하는 기능이 포함되어 있음  
  - PDF 표준은 독자적인 Javascript 표준 라이브러리를 가지고 있음  
  - Chromium, Firefox 같은 현대 브라우저는 보안상의 이유로 극히 제한된 API만 구현하고 있음  
- Adobe Acrobat만이 PDF 내 Javascript의 전체 스펙을 지원했으며, 3D rendering, HTTP 요청, 사용자의 모든 모니터 감지 등 매우 광범위한 기능을 포함하고 있음  
- 제한된 브라우저 API를 기반으로도 원하는 계산 로직은 수행 가능하나, IO 부분은 매우 제한적임  
- C 코드를 asm.js로 컴파일하여 PDF 내부에서 실행 가능함  
  - 오래된 버전의 Emscripten(asm.js 타겟을 지원하는 1.39.20 등)을 사용함  
  - **TinyEMU RISC-V 에뮬레이터**를 수정하여 asm.js로 컴파일하고, PDF에서 이를 실행하는 구조  
- 화면 출력과 입력 방식은 [DoomPDF](https://github.com/ading2210/doompdf)(PDF내에서 둠 실행하기)에 사용했던 것과 동일함  
  - 화면은 한 줄을 하나의 텍스트 필드로 사용하고, ASCII 문자로 픽셀 상태를 표현함  
  - 입력은 가상 키보드와 텍스트 박스를 통해 VM에 키 입력을 전달함  
- 성능상의 문제가 크게 발생  
  - 예: Linux 커널 부팅에 30~60초 정도 걸리며, 일반적 실행 대비 100배 이상 느림  
  - Chrome PDF 엔진의 V8은 JIT가 비활성화되어 있어 성능이 크게 저하됨  
- 루트 파일시스템은 64비트 또는 32비트용을 선택 가능함  
  - 기본은 32비트 Buildroot 시스템(원래 TinyEMU 예제에서 가져온 것)을 사용함  
  - 64비트 Alpine Linux 버전도 있으나, 성능이 약 2배 더 느려 일반적으로는 사용하지 않음

## Comments



### Comment 34240

- Author: xcutz
- Created: 2025-02-06T13:31:04+09:00
- Points: 1

둠 만큼의 광기 리눅슼ㅋㅋ

### Comment 34203

- Author: tsboard
- Created: 2025-02-05T15:23:34+09:00
- Points: 2

이것은 낭만인가 광기인가 ㅎㄷㄷㄷ

### Comment 34201

- Author: kuthia
- Created: 2025-02-05T15:00:41+09:00
- Points: 1

wow...

### Comment 34196

- Author: kaydash
- Created: 2025-02-05T13:57:04+09:00
- Points: 1

캬......
