• 최소화된 Linux OS가 Chrome 내 6MB PDF 문서에서 구동되다 — LinuxPDF가 RISC-V 에뮬레이터를 활용하다

    DoomPDF 개발자가 새로운 GitHub 프로젝트로 돌아오다.

    article image

    Linux 운영체제 버전이 이제 Chromium 기반 브라우저에서 열리는 PDF 내부에서 구동될 수 있게 되었습니다. 이 6MB 규모의 LinuxPDF 프로젝트에 필요한 코딩 기술의 주역은 고등학생 Ading2210입니다. 혹시 이 이름이 친숙하게 느껴진다면, 같은 개발자가 지난 1월에 보도된 DoomPDF를 제작했기 때문일 수 있습니다.

    Ading2210에 따르면, 리눅스는 TinyEMU RISC-V 에뮬레이터의 변형된 버전을 통해 PDF 내부에서 실행됩니다. 개발자는 LinuxPDF가 "이전 DoomPDF 프로젝트와 매우 유사하게 작동한다"고 설명했습니다. DoomPDF와 마찬가지로 이 문서 속의 리눅스 프로젝트 역시 성능상의 문제를 가지고 있어, 정상 속도보다 "100배 이상 느리다"고 언급됩니다.

    TinyEMU RISC-V 에뮬레이터는 코드가 "WebAssembly 대신 asm.js를 대상으로 하는 구형 Emscripten을 사용해 컴파일"되는 기술 덕분에 PDF 내에서 실행됩니다. 이 코드는 PDF에 내장되어 로드된 후, 해당 아키텍처를 목표로 하는 최소한의 리눅스 커널을 자동으로 구동합니다. 이 구현 방식에 따르면, 브라우저에서 'Start Emulator'에 동의하는 순간 LinuxPDF UI가 로드되며, OS가 부팅되는 것을 기다리는 동안 리눅스 뷰포트에 환영 메시지가 표시됩니다.

    article image

    (개발자가 만든 1994년 리눅스 데스크톱 재현이 웹 브라우저에서 현대적 웹 앱으로 실행됩니다.)

    DoomPDF를 접해본 사용자라면 LinuxPDF의 저대비 회색 디스플레이에서 익숙함을 느낄 수 있을 것입니다. LinuxPDF는 또한 게임 PDF를 구동했던 방식과 동일한 라인별 ASCII 출력을 통해 화면에 결과물을 출력합니다.

    article image

    PDF 내 리눅스 뷰포트 아래에는 PDF 버튼 배열로 구현된 소프트 키보드가 배치되어 있습니다. 다만, 물리적 키보드를 구비한 사용자에게는 키보드 UI 영역 오른쪽 하단의 '여기에 키보드 입력을 입력하세요' 필드에 명령어를 입력하는 것이 더 빠를 것으로 예상됩니다.

    속도와 효율성에 대해 Ading2210은 성능이 LinuxPDF의 가장 큰 과제임을 겸허히 인정합니다. 개발자는 "리눅스 커널이 PDF 내부에서 부팅하는 데 약 30~60초가 걸리는데, 이는 정상 속도보다 100배 이상 느립니다"라고 말했습니다. 현재 Chrome의 PDF 엔진은 JIT(Just-in-Time) 컴파일러가 비활성화되어 있어, Ading2210은 현재로서는 속도를 높일 방법이 보이지 않는다고 전했습니다.

    만약 LinuxPDF를 직접 사용해보고 싶다면 Chromium 기반 브라우저가 필요합니다(필자 확인 결과, PC용 Firefox에서는 작동하지 않았습니다). 다른 사용자들은 Ading2210이 제작한 LinuxPDF가 시작하고, 부팅하며, 몇 가지 명령어에 반응하는 영상을 시청하는 것만으로도 만족할 수 있습니다. 이전 프로젝트들과 마찬가지로, 소스 코드는 GitHub에서 모두 공개되어 읽고 실험해 볼 수 있습니다.

    [출처:] https://www.tomshardware.com/software/linux/minimal-linux-os-runs-in-a-6mb-pdf-document-in-chrome-linuxpdf-leverages-risc-v-emulator