Запустить Linux в браузере — поможет эмулятор jor1k (со встроенными Monkey Island, Doom и Frontier Elite II)

    В материале говорим о возможностях этого открытого инструмента и его технических параметрах. Также расскажем об аналогичных проектах, разрабатываемых в этой сфере.

    В предыдущих сериях:



    Фото — Faris Mohammed — Unsplash

    Что это за инструмент


    Jor1k представляет собой эмулятор микропроцессора, построенного на базе микроархитектуры OpenRISC 1000. Это — 32 разрядный чип, который открытое сообщество разрабатывает под лицензией LGPL. Устройство использовали в НАСА для создания наноспутника TechEdSat.

    Эмулятор написан на JavaScript и работает из браузера. Jor1k увидел свет в 2013 году и с тех пор поддерживается автором. Им выступил Себастьян Макке (Sebastian Macke). Ему помогали несколько коллег по цеху, среди которых значится Жерар Браад (Gerard Braad), ведущий инженер-программист из Red Hat. Авторы проекта говорят, что запустили его для демонстрации возможностей JavaScript.

    Инструмент можно использовать как образовательную платформу в университетах. Он также подходит на роль бенчмарка для тестирования JS-движков и может стать альтернативным способом портировать старое ПО на современные системы. Есть мнение, что jor1k сможет выступить в роли узла для TAILS-системы, исключив необходимость выделять отдельную машину.

    Что он умеет


    В качестве демо есть несколько системных образов — их список представлен в подразделе Demos на GitHub. Большая часть построена на Linux 3.16, позволяет работать с графикой X.Org и Wayland/Weston плюс запускать различные приложения. Например, в jor1k есть два встроенных бенчмарка — nbench и coremark. Первый разработали в 90-х годах специалисты из ныне закрытого журнала о микрокомпьютерах BYTE. nbench позволяет оценить производительность памяти, а также CPU и FPU. Что касается coremark, то это свод бенчмарков для процессора во встраиваемых системах. Среди заданий для тестов есть: обработка связных списков и матриц плюс подсчет суммы CRC.

    Также в jor1k можно воспроизвести несколько видеороликов и поиграть в компьютерные игры. Среди них есть Monkey Island, Doom и Frontier Elite II. В частности, Monkey Island запускается с помощью утилиты ScummVM, разработанной специально для загрузки игр студии LucasArts.

    Хотя стоит отметить, что производительность игр оставляет желать лучшего — курсор реагирует на движения мыши достаточно медленно, плюс присутствует задержка после клика.



    Картинка выводится при помощи эмулируемого фреймбуфера с разрешением 640x400 и поддержкой сенсорного экрана LPC32xx. Данные система хранит на виртуальном ATA-диске в 64 килобайта и обрабатывает их 32 мегабайтами оперативной памяти. Ввод организован с помощью драйвера виртуальной клавиатуры. В jor1k встроен ethernet-контроллер, позволяющий выходить в интернет из сэмулированной в браузере среды. Один из резидентов Hacker News в тематическом треде отмечает, что в этом случае разработчики перенаправляют все запросы через собственный сервер.

    Эмулятор поддерживает многопоточную работу с двумя, четырьмя, восемью и шестнадцатью ядрами. Каждая версия эмулятора загружается по отдельной ссылке — их можно найти в подразделе Demos официального репозитория. Отметим, что при увеличении числа ядер система начинает работать нестабильно — в будущем разработчики планируют решить эту проблему. При этом пользователи с Hacker News отмечают, что эмулятор функционирует быстрее в Firefox, чем в других браузерах. Такое поведение системы связано с более качественной оптимизацией под его JIT-компилятор.

    Другие эмуляторы


    В рамках проекта JSLinux также разработан эмулятор на JavaScript для 32-разрядного CPU (x86). Его автором выступил французский математик Фабрис Беллар (Fabrice Bellard), который написал библиотеку для декодирования аудио и видеофайлов libavcodec.

    Эмулятор построен на основе динамического транслятора из проекта QEMU. Система также задействует типизированные JavaScript-массивы, увеличивающие производительность и уменьшающие потребление памяти при работе с данными фиксированного размера.


    Фото — Ivy Barn — Unsplash

    Над Linux-эмулятором на JavaScript трудились и инженеры из RISC-V Foundation. Их система называлась riscv-angel и позволяла запустить riscv-linux с набором утилит BusyBox.

    Можно с уверенностью сказать, что если подобные решения продолжать совершенствоваться, они могут стать новым витком в развитии терминальных технологий и облачных решений. Особенно актуальными системы вроде jor1k будут для крупных компаний. Так, их сотрудники смогут получать доступ к удаленным рабочим столам с помощью обычного браузера.


    Мы в 1cloud.ru предлагаем услуги по аренде виртуальной инфраструктуры. На сайте работает калькулятор, который поможет оценить ориентировочную стоимость ресурсов.

    На дополнительные вопросы готовы ответить специалисты нашего центра компетенции — им можно позвонить или написать на почту.


    Что еще у нас есть на Хабре:

    • +10
    • 3,7k
    • 3
    1cloud.ru
    159,17
    IaaS, VPS, VDS, Частное и публичное облако, SSL
    Поделиться публикацией

    Комментарии 3

      0
      А зачем эмулировать железо в браузере? Разве не было идеи написать поддержку псевдо-архитектуры для gcc, чтобы при компиляции вместо ассемблера генерировался браузерный JS? А потом под это дело собрать Cooperative Linux.
        0
        Железо эмулируют, чтобы разрабатывать под него софт пока это железо не готово или недоступно массам. В браузере это частый случай.

        Linux уже портирован на более чем два десятка архитектур (это про активыне сейчас), лучше взять одну из них готовых, чем добавлять ещё одну псевдо-архитектуру.

        Больше будет пользователей OpenRISC, даже в эмуляторе, — больше шансов что в ядре не выпилят поддержку этой архитектуры (такое такое случается с архитектурами про которые народ начинает забывать).
          0
          Железо эмулируют, чтобы разрабатывать под него софт пока это железо не готово или недоступно массам.
          Только причём здесь браузер?
          В браузере это частый случай.
          Частый? Это вообще первая статья, где эмулируется Linux и вторая, где эмулируется железо в браузере(первая была про Windows95 на electron.js).
          лучше взять одну из них готовых, чем добавлять ещё одну псевдо-архитектуру.
          Угу, лучше. 4 слоя абстракции — мало (OS/hal, API, GUI, JS-интерпретатор), надо 5. А лучше 10, не?
          в ядре не выпилят поддержку этой архитектуры
          Из ядра выпиливают поддержку железки не когда не остаётся активных пользователей, а когда уходят разработчики/мейнтейнеры, которые тестируют собираемость и работоспособность новых ядер с данной железкой.
          случается с архитектурами про которые народ начинает забывать
          В gcc, llvm и binutils сохраняется поддержка многих ярхитектур, про которые в ядре давно «забыли».

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

        Самое читаемое