Операционную систему Linux смогли запустить внутри файла PDF
Согласно Media az, передает Icma.az Операционную систему Linux смогли запустить внутри файла PDF.
Операционная система Linux была успешно запущена внутри PDF-файла, открываемого браузером на базе Chromium. За этим уникальным проектом, получившим название LinuxPDF и весящим всего 6 МБ, стоит подросток, выступающий под ником Ading2210, который прежде прославился аналогичным проектом — DoomPDF. Об этом сообщает издание Tom's Hardware.
Ading2210 объясняет, что Linux работает внутри PDF благодаря модифицированной версии эмулятора TinyEMU RISC-V. LinuxPDF функционирует по аналогии с DoomPDF, однако страдает от значительных проблем с производительностью — скорость работы заявлена как «более чем в 100 раз медленнее», чем должна быть.
Эмулятор TinyEMU RISC-V запускается в PDF благодаря компиляции кода с использованием старой версии Emscripten, ориентированной на asm.js вместо WebAssembly. Этот код внедряется в PDF и автоматически запускает минимальное ядро Linux, предназначенное для данной архитектуры. После нажатия кнопки «Start Emulator» в браузере появляется пользовательский интерфейс LinuxPDF и приветственное сообщение в окне Linux, сигнализирующее о процессе загрузки операционной системы.
Пользователи, знакомые с DoomPDF, узнают характерный для проекта серый дисплей с низкой контрастностью. Вывод изображения также осуществляется посредством построчного ASCII-вывода, как и в DoomPDF.
Под окном Linux в PDF расположена программная клавиатура, реализованная с помощью набора кнопок PDF. Однако ввод команд через поле «type here for keyboard inputs», расположенное справа от клавиатуры, вероятно, будет более удобным для большинства пользователей с физической клавиатурой.
Для тестирования LinuxPDF требуется браузер на базе Chromium (проект не работает в Firefox). Как и в случаях с предыдущими проектами Ading2210, исходный код LinuxPDF доступен на GitHub для изучения и модификации.
![see](https://icma.az/template/assets/label.png)
![see](https://icma.az/template/assets/see.png)