The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Ядро и драйверы NetBSD скомпилированы в JavaScript для запуска в web-браузере

08.11.2012 13:23

Один из разработчиков NetBSD провёл интересный эксперимент, в полной мере продемонстрировавший гибкость средств портирования NetBSD под новые платформы. Используя Emscripten, в представление на языке JavaScript было скомпилировано изначально написанное на языке Си ядро NetBSD и набор связанных с ним драйверов. Таким образом была добавлена поддержка новой архитектуры "sys/arch/javascript", подразумевающей возможность запуска ядра NetBSD под управлением web-браузера.

В отличие от проекта JSLinux, в рамках которого написан полноценный эмулятор ПК, способный загрузить Linux, порт NetBSD имеет определённую практическую направленность. Целью разработки является обеспечение компиляции в JavaScript отдельных драйверов NetBSD с возможностью обращения к их функциям из JavaScript-приложений. Например, можно создать web-сервис, способный напрямую работать с образами файловых систем, используя скомпилированные в JavaScript драйверы NetBSD.

Для демонстрации озвученной идеи подготовлен рабочий прототип подобного web-сервиса, способный работать с системными образами в формате FFS. Выполняемый в браузере демонстрационный образ ядра NetBSD с поддержкой FFS, Tmpfs и kernfs, а также минимальное системное окружение NetBSD можно загрузить на данной странице (5 Мб). Прототип сервиса может быть выполнен в любом современном web-браузере, за исключением Internet Explorer. Сервис позволяет передавать запущенному в браузере ядру произвольные команды и просматривать результат их выполнения. При запуске демонстрации осуществляется загрузка образа файловой системы FFS (rump.data), запуск ядра NetBSD и монтирование FFS-раздела, после чего можно выполнить произвольные команды в интерактивном режиме.

Ядро собрано в режиме RUMP (Runnable Userspace Meta Program), позволяющем организовать выполнение частей ядра в адресном пространстве пользователя. В частности, Rump позволяет в виде оформленного в стиле микроядра серверного процесса выполнять в пространстве пользователя драйверы, изначально работающие на уровне монолитного ядра системы. По сути rump-ядро является частично паравиртуализированным ядром, запускаемым поверх высокоуровневного гипервизора. Указанная возможность позволяет легко портировать NetBSD под различные системы, так как по сути для обеспечения работы rump-ядра достаточно подготовить для платформы только соответствующий небольшой гипервизор. В рассмотренном эксперименте rump-гипервизор был написан для браузерного JavaScript движка (гипервизор был написан на Си на базе стандартного POSIX-гипервизора), после чего гипервизор, ядро и компоненты NetBSD были преобразованы в JavaScript в автоматическом режиме при помощи компилятора Emscripten.

  1. Главная ссылка к новости (http://blog.netbsd.org/tnf/ent...)
  2. OpenNews: В NetBSD добавлена поддержка автозагрузки модулей ядра для работы на пользовательском уровне
  3. OpenNews: В написанном на JavaScript эмуляторе ПК появилась поддержка постоянного хранилища
  4. OpenNews: Представлен проект JSMad, с реализацией проигрывателя MP3 на языке JavaScript
  5. OpenNews: На языке JavaScript написан полноценный эмулятор ПК, способный загрузить Linux
  6. OpenNews: Увидел свет Emscripten 1.4, компилятор байткода LLVM в JavaScript-представление
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/35268-rump
Ключевые слова: rump, netbsd, kernel, driver, javascript
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (33) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 14:24, 08/11/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +10 +/
    Вот уж реальные извращенцы
     
     
  • 2.3, Zenitur (ok), 14:29, 08/11/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А видел работающий 8-битный процессор с памятью и монохромным монитором, смоделированный в Minecraft?
     
     
  • 3.9, Аноним (-), 14:59, 08/11/2012 [^] [^^] [^^^] [ответить]  
  • –4 +/
    А еще был 8-битный процессор (AtMega) с запущенной на нем убунтой, которую ты так нежно любишь своим фругуртом :)
     
     
  • 4.28, Аноним (-), 21:40, 08/11/2012 [^] [^^] [^^^] [ответить]  
  • +3 +/
    А что такое «фругурт»?
     
     
  • 5.30, Аноним (-), 23:52, 08/11/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > А что такое «фругурт»?

    Это то что у некоторых возникает при упоминании некоторых кейвордов как условный рефлекс. Политкорректная версия названия :)

     
     
  • 6.38, iFRAME (ok), 07:18, 09/11/2012 [^] [^^] [^^^] [ответить]  
  • +/
    У меня для Вас плохие новости: http://ru.wikipedia.org/wiki/%D0%91%D1%83%D0%B3
     
  • 4.41, metallic (ok), 11:54, 12/11/2012 [^] [^^] [^^^] [ответить]  
  • +/
    На аьмеге убунту запускали? Как?
     
  • 3.26, Аноним (-), 20:56, 08/11/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Годно!
     
  • 3.42, шестиклассник (?), 15:49, 12/11/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > 8-битный процессор с памятью и монохромным монитором, смоделированный в Minecraft

    Где, где его можно посмотреть?

     
  • 2.43, iCat (ok), 05:10, 14/11/2012 [^] [^^] [^^^] [ответить]  
  • +/
    ...и ту пришёл поручик Ржевский и заявил: "А давайте запустим wine на Dart!"
     

  • 1.4, x0r (??), 14:34, 08/11/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А что я считаю тем же USB драйверам для всяких "свистков" не место в ядре и они должны быть максимально переносимыми между разными ОС...
     
     
  • 2.11, Аноним (-), 15:00, 08/11/2012 [^] [^^] [^^^] [ответить]  
  • +7 +/
    > А что я считаю тем же USB драйверам для всяких "свистков" не
    > место в ядре и они должны быть максимально переносимыми между разными ОС...

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

     
     
  • 3.23, x0r (??), 17:48, 08/11/2012 [^] [^^] [^^^] [ответить]  
  • +/
    спасибо) а еще надо формат USB драйверов (каком нибудь python/lua) протащить как ietf стандард.
     
     
  • 4.31, Аноним (-), 23:53, 08/11/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > спасибо) а еще надо формат USB драйверов (каком нибудь python/lua) протащить как ietf стандард.

    Протаскивайте. Я правда пользоваться этим буллшитом не буду, пусть оно хоть трижды стандарт.

     
  • 2.17, lucentcode (ok), 16:07, 08/11/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Не только к свисткам. Драйвера ко всему должны быть в USER-space...
     
     
  • 3.18, Elhana (ok), 16:20, 08/11/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Это может и правильно, но получается медленнее чем в ядре.
     
     
  • 4.21, filosofem (ok), 17:07, 08/11/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >но получается медленнее чем в ядре.

    Достойно скапитанил.

     
  • 4.24, Анонимчег (?), 18:15, 08/11/2012 [^] [^^] [^^^] [ответить]  
  • +/
    сумничаю: а почему не реализовать сразу "пакетные операции"...
     
     
  • 5.29, rshadow (ok), 23:02, 08/11/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В 96 мы с Линусом завалились по пьяни к Ванге. Так она нам пророчила: в 2012 появится некий Анонимчег! Он сделает драйвера в юзерспейсе с пакетным режимом! Так что вы двое пока так не делайте...
     
     
  • 6.34, VoDA (ok), 00:02, 09/11/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > В 96 мы с Линусом завалились по пьяни к Ванге.

    Да, забористая была трава ;)))

     
  • 3.32, Аноним (-), 23:54, 08/11/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Не только к свисткам. Драйвера ко всему должны быть в USER-space...

    Ну раз вам должны - попробуйте стребовать долги через суд. Правда боюсь что придется предоставить какие-то доказательства того что вам кто-то что-то задолжал.

     

  • 1.5, Аноним (-), 14:37, 08/11/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Однако, новые горизонты открываются. Мне кажется, это можно применить в распределённых вычислениях, ну или в ботнетах :)
     
     
  • 2.6, anonymous (??), 14:40, 08/11/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Будущее уже сейчас. Ваш браузер заражен ботнетом...))
     

  • 1.10, Нету имени (?), 14:59, 08/11/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +13 +/
    Прототип сервиса может быть выполнен в любом современном web-браузере, за исключением Internet Explorer.

    Наличие слов современном и web-браузере уже как бы намекает, что про IE тут речи не ведётся.

     
     
  • 2.12, denis111 (ok), 15:10, 08/11/2012 [^] [^^] [^^^] [ответить]  
  • –2 +/
    A IE10? :)
     
     
  • 3.14, Андрей (??), 15:27, 08/11/2012 [^] [^^] [^^^] [ответить]  
  • +/
    туда же)))
     
  • 3.15, Антон (??), 15:56, 08/11/2012 [^] [^^] [^^^] [ответить]  
  • +13 +/
    "IE10 - теперь скачивание Firefox (Chrome) стало еще удобнее!"
     

  • 1.25, an. (?), 19:39, 08/11/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Ну осталось только поверх это NetBSD запустить Xen, в котором уже, например, запустить Linux или даже Windows... :)
     
     
  • 2.33, Аноним (-), 00:00, 09/11/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну осталось только поверх это NetBSD запустить Xen, в котором уже, например,
    > запустить Linux или даже Windows... :)

    В котором запустить еще какой нибудь виртуализатор, в котором... wait, oh sh--!

     
  • 2.36, Aleks Revo (ok), 03:22, 09/11/2012 [^] [^^] [^^^] [ответить]  
  • +/
    А в нём запустить браузер с транслированными в JS... ))
     
     
  • 3.39, cbs (?), 18:44, 09/11/2012 [^] [^^] [^^^] [ответить]  
  • +/
    "...в доме, который построил Джек."
     

  • 1.27, YetAnotherOnanym (?), 21:25, 08/11/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > прототип подобного web-сервиса

    ... с которого можно будет загрузить образ NetBSD, работающей в браузере
    (чтобы понять рекурсию, надо сначала понять рекурсию)

     
  • 1.40, Аноним (-), 19:26, 09/11/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ох уж этот финн, Анти... Не сидится всё ему на месте. То rump, то теперь это...
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру