Linux на java script

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

JSLinux rewritten to be human readable, hand deobfuscated and annotated.

License

jslinux/jslinux

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

readme.md

I wanted to understand how the amazing JsLinux worked, so in a fit of mania I hand de-obfuscated the codebase while studying it over a few days’ time. In the off-chance someone else might be interested in this code as a basis for further weird in-browser x86 hacking I posted this redacted version of the code here, with permission of Mr. Bellard.

I highly recommend checking out another open-source x86 emulation project that includes vga support, «v86» (demo / source). There’s yet another open-source 386-style emulator in javascript called jslm32.

For a simpler RISC architecture, take a look at the linux on jor1k emulator project.

Finally, the Angel emulator (source) shows off the elegant open-ISA 64bit RISC-V architecture that is being brought to silicon by the lowrisc team. This is by far the cleanest architecture for studying general low-level hardware and operating system implementation details.

The current codebase should run on most modern versions of Chrome, Safari, and Firefox. If you’re running it locally, you will need to load it via a local server to allow the XHR requests to load the binaries.

jslinux-deobfuscated is still a dense, messy code base from any pedagogic point of view. However for those interested in Mr. Bellard’s code, this version is nowhere near so incomprehensible as the original. Nearly all of the global variables and function names have been named somewhat sensibly. Many pointers to references have been added to the source.

Читайте также:  Gdebi для alt linux

The core opcode execution loop has been commented to indicate what instruction the opcode refers to.

The CALL/RET/INT/IRET routines are still quite confused and haven’t yet been rewritten. The code dealing with segmentation, and some of the code for real-mode remains relatively messy.

Any recommendations / clarifications are welcome!

I highly recommend, by the way, the excellent JSShaper library for transforming large javascript code bases. The hacks I made from it are in this repo: a little symbol-name-transformer node.js script and an emacs function for doing this in live buffers.

This is a pedagogical/aesthetic derivative of the original JSLinux code Copyright (c) 2011-2014 Fabrice Bellard. It is posted here with permission of the original author subject to his original constraints : Redistribution or commercial use is prohibited without the (original) author’s permission.

Some other helpful references for understanding what’s going on:

Источник

6 Эмуляторов операционных систем, полностью написанных на JavaScript

Наверняка многие, как и я, испытывают противоречивые чувства любви и неприязни к JavaScript. Он повсеместно распространен в интернете, работает в браузерах и является основой почти всех веб-приложений. Однако JavaScript — не самый надежный язык. Он может быть запутанным и сложным, но все же это один из самых универсальных и широко используемых языков.

Этому способствует и то, что он единственный скриптовый язык, доступный в браузере.

JavaScript может быть использован для огромного количества различных приложений. Все, от фронтенда до бэкенда. От мобильных до десктопных и всего, что между ними. И самое ценное, что, поскольку многие разработчики разочарованы «эксцентричностью» JavaScript, он постоянно совершенствуется.

Появление стандартов ECMAScript позволило усовершенствовать и добавить новые возможности в JS, чтобы сделать его еще более гибким и совместимым. Сейчас в современном браузере можно создавать впечатляюще сложные приложения, которые практически не выходят за пределы движка браузера.

Что же можно сделать, имея в своем распоряжении такой гибкий инструмент?

Конечно же, запускать полноценную операционную систему.

В этой статье мы рассмотрим некоторые из лучших эмуляторов JavaScript OS (операционная система), которые работают исключительно внутри вашего браузера. Вам не придется ничего инсталлировать, и при этом в вашем распоряжении будет (в основном) функциональная операционная система. Давайте рассмотрим несколько замечательных примеров.

Играем в Minesweeper (компьютерная игра-головоломка

Каталог эмуляторов PCjs.org огромен. Здесь есть эмуляторы всего, начиная от аркад и заканчивая графическими калькуляторами TI (Texas Instruments). Наиболее впечатляющей из этой коллекции, безусловно, является версия для Windows 3.1. Это довольно функциональная версия ОС, и она действительно хорошо работает в браузере.

Что удобно в эмуляциях на PCjs.org, так это то, что они поставляются с набором инструментов для управления основной системой. Вы можете загружать различные флоппи-диски, изменять скорость процессора и другие основные элементы управления. Вы не всегда получаете эти опции с некоторыми эмуляторами браузера.

Просмотрите полный каталог PCjs.org, в котором вы найдете еще немало интересных ретро штучек.

Читайте также:  Управление права пользователей linux

Игра Lemmings на Mac OS 8 с помощью Infinite Mac

Проект Infinite Mac — невероятно быстрая браузерная эмуляция операционной системы System 7 и Mac OS 8. Это непосредственная эмуляция оригинальной машины Macintosh Quadra, которая являлась компьютером Mac начала 90-х годов, заточенным на более высокую производительность.

Эта эмуляция определенно одна из самых хорошо организованных, с которыми мне доводилось работать. Задержка ввода намного меньше, чем у большинства других эмуляторов. Хотя здесь не так много дополнительных возможностей, как вы бы могли найти на PCjs.org, тем не менее, данная эмуляция невероятно хорошо сделана. Безель монитора Mac вокруг эмулятора также является приятным винтажным штрихом.

Автор оригинала, Михай Парпарита (Mihai Parparita), ведет блог с очень подробной информацией о проекте, доступно здесь.

Просмотр веб-страниц на Alpine Linux с помощью JSLinux.

Следующим логичным шагом после эмуляции Mac и Windows будет попробовать Linux. К счастью, Фабрис Беллард (Fabrice Bellard) успешно создал рабочую эмуляцию Linux на JavaScript. Проект называется JSLinux и предлагает несколько дистрибутивов Linux, которые можно эмулировать.

Вы можете запускать версии с графическим интерфейсом или только консольные варианты таких дистрибутивов, как Alpine и Fedora. Этот эмулятор не самый совершенный и быстрый, но он достаточно гибкий и позволяет использовать несколько дистрибутивов, которые можно расширять и настраивать по своему усмотрению.

В JSLinux также доступны несколько эмуляторов архитектуры RISC-V.

Посетите официальный сайт JSLinux для получения дополнительной информации и вариантов эмуляции.

Эмулятор IBM 5110 от Норберта Керера (Norbert Kehrer). Источник: https://norbertkehrer.github.io/ibm_5110/emu5110.html

Ничто не сравнится с ностальгией по старым IBM.

Этот проект ставит своей целью эмуляцию компьютера IBM 5110. Это была урезанная «мобильная» версия огромных и мощных мэйнфреймов System/360. Модель 5110 появилась в эпоху, когда «портативный» компьютер, способный выполнять те же функции, что и мейнфрейм размером с комнату, был нечто совершенно особенным.

Эмуляция IBM 5110, созданная Норбертом Керером (Norbert Kehrer), удивительно лаконична и элегантна. Одна из моих любимых фич — встроенная клавиатура. Это почти обязательное требование, потому что старые клавиатуры в стиле мэйнфреймов имеют специальные функциональные клавиши, которых больше нет у современных клавиатур.

Строка состояния эмулятора IBM 5110. Источник: https://norbertkehrer.github.io/ibm_5110/emu5110.html

Еще одним приятным штрихом является строка состояния, которая включает в себя несколько переключателей в ретро стиле и имеет аккуратный индикатор обработки. Как и в оригинальном 5110, вы можете использовать BASIC или APL.

Если вам нужно освежить в памяти APL, это отличный учебник.

Эмулятор PDP 11/70, написанный на JS. Источник: https://skn.noip.me/pdp11/pdp11.html

PDP-11 — икона винтажной компьютерной техники. Этот мини-компьютер был одним из самых авторитетных, популярных и великолепно спроектированных компьютеров 20-го века. Он был увековечен в различных физических формах в виде клонов, копий и даже функционирующих kit-наборов Raspberry Pi.

Теперь PDP-11 существует в виде эмулятора. Данный эмулятор, написанный Полом Нанкервисом (Paul Nankervis), является замечательно разработанным трибьютом в память о классической машине. Он имеет прекрасно оформленную переднюю панель с функционирующими кнопками и индикаторами, а также интерактивную нижнюю консоль (это современная, но такая удобная функция).

Пол Нанкервис также предоставляет огромное количество подробной документации о том, как и почему он написал этот эмулятор. Здесь есть диаграммы, фрагменты различных загрузочных кодов и несколько ссылок на другие замечательные ресурсы.

Ознакомьтесь с действующим эмулятором и публикацией в блоге.

Читайте также:  Kali linux command line commands

Запуск Hot Dog Linux на DistroTest.net.

Как быть, если вам очень хочется попробовать конкретный дистрибутив Linux или десктопную среду, но нет желания тратить время на установку? Что же, DistroTest.net поможет справиться с этой задачей.

На этом сайте представлено более 380 различных уникальных версий ОС, которые вы можете опробовать. Это очень много.

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

Хотя DistroTest эффективно задействует виртуальные машины, работающие за кулисами, он по-прежнему использует библиотеку VNC на чистом JavaScript под названием noVNC для брокера соединений. Вам не придется ничего инсталлировать, у вас все равно будет «эмулированный» интерфейс из браузера.

Имейте в виду, что поскольку это услуга бесплатная и для запуска всех этих систем требуются ресурсы, вам, возможно, придется дождаться «слота», чтобы что-либо испробовать. Кроме того, как и во многих других эмуляторах, перечисленных ранее, вы не сможете сохранять файлы или полноценно пользоваться неограниченным интернет-соединением.

Завтра состоится открытое занятие для начинающих разработчиков, посвященное инструменту ESLint. Разберемся, как его установить и настроить, чтобы писать читаемый код; рассмотрим примеры применения. Регистрация открыта по ссылке.

Источник

Эмулятор компьютера с linux на JavaScript

Никакой серверной части. Только JS: полноценный эмулятор компьютера с линуксом на борту.

Эмулятор PC на JS с линуксом на борту

Я долго с ним игрался — это не имитация, линукс ведёт себя как настоящий линукс — компилированные программы работают, ошибки в них вызывают segmentation fault, повреждение корневой файловой системы вызывает бурю возмущения в dmesg и т.д.

dd показывает при работе с памятью более чем приличную производительность — более 40 мб/с (не забываем, что это эмулятор, и что это JS в вашем браузере!).

Я никогда не думал, что мы доживём до подобного.

… А теперь начинается оргия:

* С использованием локального хранилища мы можем организовать диски (каждый key-value соответствует одному сектору).
* С использованием web-socket мы можем создать паравиртуализированный драйвер сети с выходом на железный машрутизатор и получить нормальную сеть.
* С использованием существующих технологий (NUMA, DRBD, corosync) можно организовать вычислительный кластер из браузеров.

(Кстати, показывать консоль в этом случае не обязательно — вы запускаете виртуальную машину у клиента в бэкграунде, виртуальная машина присоединяется к кластеру, начинает считать, по её аварийному завершению — закрытию браузера — кластер автоматически переконфигурируется).

Я это пишу как хохму, но в реальности, если у вас есть линукс и есть — у вас есть все возможности для работы чего угодно. Любые сетевые приложения, любые системы синхронизации и управления.

Никто не мешает создать паравиртуализированный драйвер видео с помощью canvas, у вас есть webGL, для которого можно написать свой вариант cuda и получить довольно мощную акселерацию вычислений…

Ну и финал — запуск хрома внутри эмулируемой виртуальной машины.

Итак, эмуляция дошла до браузеров…

Источник

Оцените статью
Adblock
detector