# ading2210/linuxpdf

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/ading2210-linuxpdf).**

4,955 stars · 248 forks · C · GPL-3.0

## Links

- GitHub: https://github.com/ading2210/linuxpdf
- Homepage: https://linux.doompdf.dev
- awesome-repositories: https://awesome-repositories.com/repository/ading2210-linuxpdf.md

## Description

linuxpdf is a virtual machine and system emulator that boots and executes a full Linux kernel and root filesystem within a portable document format file. It utilizes a PDF-embedded JavaScript runtime to provide a self-contained, portable computing environment.

The project implements a RISC-V processor emulator using asm.js to achieve hardware-independent execution inside a document viewer. It simulates a visual screen by updating a grid of text fields with ASCII characters and captures user keystrokes through document input elements to translate them into virtual machine interrupts.

The system covers the full virtualization surface, including RISC-V instruction virtualization, virtual display rendering, and keyboard input capture. The Linux kernel and filesystem are bundled as static binary data arrays embedded directly within the document structure.

## Tags

### Operating Systems & Systems Programming

- [PDF-Based Virtualization](https://awesome-repositories.com/f/operating-systems-systems-programming/pdf-based-virtualization.md) — Runs a full operating system inside a PDF document to provide a self-contained, portable computing environment.
- [Document-Embedded](https://awesome-repositories.com/f/operating-systems-systems-programming/os-distributions/document-embedded.md) — Packages a Linux kernel and filesystem into a single PDF file that runs without installation.
- [Embedded Binary Filesystems](https://awesome-repositories.com/f/operating-systems-systems-programming/root-filesystem-generators/root-filesystem-bootstrapping/embedded-binary-filesystems.md) — Bundles the Linux kernel and root filesystem as static binary data arrays embedded directly in the PDF.
- [PDF-Resident Linux Virtual Machines](https://awesome-repositories.com/f/operating-systems-systems-programming/virtualization-emulation/virtualization-platforms/virtualization-technologies/virtual-machines/linux-provisioning/lightweight-linux-virtual-machines/pdf-resident-linux-virtual-machines.md) — Provides a portable PDF file that boots and executes a full Linux kernel and root filesystem.
- [Virtual Display Emulators](https://awesome-repositories.com/f/operating-systems-systems-programming/virtual-display-emulators.md) — Visualizes emulator output using a grid of text fields to simulate a hardware monitor. ([source](https://cdn.jsdelivr.net/gh/ading2210/linuxpdf@main/README.md))
- [Virtual Input Emulators](https://awesome-repositories.com/f/operating-systems-systems-programming/virtual-input-emulators.md) — Simulates keyboard peripheral input by sending keystrokes from PDF fields to the virtual machine. ([source](https://cdn.jsdelivr.net/gh/ading2210/linuxpdf@main/README.md))

### Game Development

- [Asm.js Emulator Cores](https://awesome-repositories.com/f/game-development/retro-game-emulation/web-based-emulators/javascript-emulator-cores/asm-js-emulator-cores.md) — Uses asm.js to execute a RISC-V processor emulator efficiently inside a PDF viewer.

### Hardware & IoT

- [RISC-V Hardware Emulation](https://awesome-repositories.com/f/hardware-iot/embedded-robotics/hardware-in-the-loop-simulators/binary-emulators/hardware-accelerated-emulators/risc-v-hardware-emulation.md) — Implements a virtual machine that runs a RISC-V processor inside a PDF document.
- [RISC-V Instruction Virtualization](https://awesome-repositories.com/f/hardware-iot/risc-v-instruction-virtualization.md) — Simulates the RISC-V architecture by mapping CPU instructions to equivalent JavaScript operations.

### Programming Languages & Runtimes

- [Embedded JavaScript Scripting](https://awesome-repositories.com/f/programming-languages-runtimes/embedded-javascript-scripting.md) — Leverages the PDF document's internal JavaScript runtime to drive the virtual machine's logic.
- [Emulated Linux Environments](https://awesome-repositories.com/f/programming-languages-runtimes/linux-based-runtimes/emulated-linux-environments.md) — Executes a full Linux kernel and root filesystem emulated within a PDF document viewer. ([source](https://cdn.jsdelivr.net/gh/ading2210/linuxpdf@main/README.md))

### DevOps & Infrastructure

- [Cross-Platform Execution](https://awesome-repositories.com/f/devops-infrastructure/cross-platform-deployment-targets/cross-platform-execution.md) — Provides a consistent Linux execution environment across different devices using only a PDF reader.

### Graphics & Multimedia

- [Text-Based Screen Emulators](https://awesome-repositories.com/f/graphics-multimedia/text-based-screen-emulators.md) — Implements a virtual screen by updating a matrix of PDF text fields with ASCII characters.

### User Interface & Experience

- [Virtual Machine Input Mappings](https://awesome-repositories.com/f/user-interface-experience/input-field-enhancements/input-field-clearing/input-field-automators/virtual-machine-input-mappings.md) — Captures keystrokes through document input elements and translates them into virtual machine interrupts.
- [PDF-Based System Emulators](https://awesome-repositories.com/f/user-interface-experience/os-interface-emulations/pdf-based-system-emulators.md) — Renders a virtual display and captures keyboard input using PDF form fields and text elements.
