The OpenNET Project / Index page

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

Представлен порт ядра Linux для WebAssembly, запускаемый в браузере

02.11.2025 11:47

В списке рассылки разработчиков ядра Linux опубликованы патчи с реализацией архитектуры "Wasm" для ядра Linux, позволяющей компилировать ядро в промежуточный код WebAssembly для последующего прямого выполнения в web-браузере без задействования эмуляторов. Кроме того, для ядра Linux проектом реализована возможность запускать исполняемые файлы в формате ".wasm" и подготовлен драйвер "web console" для симуляции работы с консолью в браузере. Также подготовлен инструментарий для упрощения сборки запускаемых в браузере системных окружений.

В качестве примера сформировано окружение на базе скомпилированных в WebAssembly набора утилит BusyBox и системной библиотеки musl. В качестве эмулятора терминала для работы с подобным окружением задействован Xterm.js. Отдельно запущен демонстрационный сайт, позволяющий оценить работу порта без самостоятельно компиляции. Заявлена полная поддержка браузеров на движке Chromium и частичная поддержка Firefox, в котором ограничены возможности отладки. На современных компьютерах загрузка Wasm-сборки ядра в браузере занимает менее секунды.

Проект развивается уже около двух лет и на текущем этапе позволяет загружать ядро в браузерах и выполнять типовые программы. Работа ещё не завершена и порт имеет отдельные проблемы и ограничения. Например, ещё не реализована поддержка вызовов vfork и longjmp (к BusyBox применены патчи для работы без них), отсутствует возможность прерывания задач, недоступен MMU (ядро и процессы работают в одном адресном пространстве), невозможно изменение уже загруженного кода, наблюдается зависание консоли примерно через 5 минут из-за проблем с таймером. Отмечается, что имеющиеся ограничения преодолимы, но для некоторых из них требуется реализация в браузерах дополнительных расширений к WebAssembly. Подобные расширения предложено реализовать для MMU и приостановки потоков.

Невозможность приостановки выполнения потоков в WebAssembly не сочетается с работой планировщика задач в ядре, но многозадачность удалось реализовать обходным путём, через привязку каждого потока/задачи к своему виртуальному CPU, обрабатываемому в отдельном Web Worker. Таким способом удалось добиться параллельного выполнения процессов за счёт браузерного движка и ядра хостовой ОС без использования вытесняющей многозадачности и переключения задач в запускаемом в браузере ядре. Прерывания и сигналы при такой схеме полноценно не работают, а для доставки прерываний таймера и IPI (Inter-Processor Interrupt) задействован отдельный виртуальный CPU.

Область применения проекта выходит за рамки простого запуска Linux-окружений в браузерах. Например, порт может применяться для создания многоплатформенных WebAssembly программ, использующих специфичные для Linux системные вызовы. Реализация подобных системных вызовов может быть отдельно преобразована в WebAssembly и прикреплена к приложению, что позволит использовать его без привязки к системному ядру. Порт также будет полезен для организации изолированного выполнения приложений при помощи WASI (WebAssembly System Interface).

Из планов упоминаются эксперименты с реализацией поддержки графики в окружениях c ядром, собранным в WebAssembly - на базе браузерного API WebGL планируют реализовать EGL и обеспечить работу OpenGL ES. Также планируется реализовать поддержку отладочного формата Dwarf для построчной отладки кода.

  1. Главная ссылка к новости (https://news.ycombinator.com/i...)
  2. OpenNews: Опубликован стандарт WebAssembly 3.0
  3. OpenNews: Доступен Emscripten 4.0, компилятор из C/C++ в WebAssembly
  4. OpenNews: Доступен Wasmer 5.0, инструментарий для создания приложений на базе WebAssembly
  5. OpenNews: Анонсирован язык программирования Moonbit, оптимизированный для WebAssembly
  6. OpenNews: Разработчики ядра Linux на пути к удалению поддержки процессоров i486
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/64163-kernel
Ключевые слова: kernel, linux, webassembly
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (48) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 12:00, 02/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Chrome 109.0.5414.120 (32 бит), uBlock Origin 1.67.0 - консоль не работает.
     
     
  • 2.8, Аноним (8), 12:24, 02/11/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Мобильный Firefox Fennec 144.0.0 (aarch64), uBlock Origin 1.67.0 — работает, ядро грузится секунды за две.
     
  • 2.9, Аноним (9), 12:27, 02/11/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ваш браузер устарел.
     
  • 2.11, AleksK (ok), 12:52, 02/11/2025 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Ты там на семерочке что ли сидишь? 109 хром кажется был последней версией хромого под семёрку.
     
     
  • 3.22, RM (ok), 13:52, 02/11/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    и васьмёрку, всего что до дисяточки
     
  • 2.20, RM (ok), 13:51, 02/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    "я узнаю её из тысячи...." - версию
    А вот нечего пробовать запускать всякое баловство на [old] old old stable оффтопике.
    Хотя он и хороший ;)
    p.s. руками надо было ставить 109.0.5414.165
    хромиум ваапще есть .169 в исходниках.
     
  • 2.50, Пожилая лысая женщина (?), 18:24, 02/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    На 7-ку есть Supermium, порт современного хромиума.
     
     
  • 3.51, Пожилая лысая женщина (?), 18:26, 02/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А под линукс, увы, пока без подобного
     

  • 1.2, Аноним (2), 12:01, 02/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Сначала WSL, теперь это.
     

  • 1.3, nebularia (ok), 12:01, 02/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    По описанию выглядит как едва работающий набор костылей с невнятной целью.
     
     
  • 2.24, hrmhmmhtbdr (?), 14:27, 02/11/2025 Скрыто ботом-модератором     [к модератору]
  • –2 +/
     
     
  • 3.25, nebularia (ok), 14:28, 02/11/2025 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 2.28, hrmhmmhtbdr (?), 14:48, 02/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Emscripten позволяет компилировать сишный код под WASM. Лично я этим не пользовался, но судя по инструкциям, там куча "мелких нюансов". И потом: что, если сишного кода нет, а есть только исполняемый файл закрытой коммерческой софтины? А тут запускаешь ядро, запускаешь бинарник и работаешь.
     
     
  • 3.39, nebularia (ok), 16:28, 02/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >  а есть только исполняемый файл закрытой коммерческой софтины? А тут запускаешь ядро, запускаешь бинарник и работаешь.

    Бинарник в какой архитектуре, боюсь спросить? Это же не эмулятор x86, тут как я понял нужно тоже скомпиленный в wasm софт.

     
  • 2.32, penetrator (?), 14:59, 02/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    там чтобы зумммеры запустить докер и кубер, юный падаван
     
  • 2.48, Бертолетова соль (?), 18:18, 02/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Как это с невнятной, что бы юзверю не пришлось корячится ставить Линукс что бы его потом обматерить и проклянуть
     
  • 2.55, Аноним (55), 20:19, 02/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Да как раз вполне понятный, но чтобы понять надо немного в современных технологиях разбираться. И это явно не про местную публику.
     

  • 1.5, kravich (ok), 12:04, 02/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вряд ли нужно
     
     
  • 2.27, Аноним (27), 14:48, 02/11/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Если это избавить от браузера с его стуками, то почему нет? Для кроссплатфоменных и кроссархитектурных сборок пакетов.
     

  • 1.12, Аноним (12), 12:56, 02/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    хоть где-то 'rm -rf /' попробую
     
  • 1.15, Аноним (15), 13:33, 02/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Эта гадость требует сервисворкеров и имеет какую-то неполадку, связанную с CSP, от которой ломается в файрфоксе при наличи аддонов. При этом совершенно не понятно, нахрена там сервис воркеры, для оных вообще не существует легитимных применений в принципе
     
     
  • 2.18, Аноним (18), 13:47, 02/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    чукча не читатель, чукча - писатель?
    в тексте самой новости указано зачем оно их юзает
     
     
  • 3.37, Аноним (37), 16:18, 02/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Не читатель это ты. Web Workers - это фоновые потоки, которые работают пока вкладка открыта, и без доступа к IO, чисто посчитать. А Service Workers - это способ сайту закинуть тебе на комп поток, который будет домой звонить, даже когда ты сайт закроешь и об его существовании забудешь, именно благодаря им тебе вылезают всплывающие уведомления с рекламой после того, как на одном из сайтов ты их разрешил, потому что если бы не разрешил - то прошёл бы в пешее.
     
     
  • 4.44, Аноним (44), 17:51, 02/11/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > благодаря им тебе вылезают всплывающие уведомления с рекламой после того, как на одном из сайтов ты их разрешил, потому что если бы не разрешил - то прошёл бы в пешее

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

     
     
  • 5.52, Аноним (52), 18:33, 02/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    То есть что иногда родственникам лечить эту гадость приходится - вам такая мысль в голову не приходила?
     

  • 1.16, Аноним (15), 13:35, 02/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >недоступен MMU

    Ядро же дропнуло все системы без MMU...

     
  • 1.17, Аноним (15), 13:37, 02/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Порт также будет полезен для организации изолированного выполнения приложений при помощи WASI (WebAssembly System Interface).

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

     
     
  • 2.26, hrmhmmhtbdr (?), 14:32, 02/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    "сколько-нибудь полезный" != "требующий мощного процессора и многопоточности"
     
     
  • 3.38, Аноним (37), 16:19, 02/11/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Сколько-нибудь полезное любое приложение завязано на потоки. А игрушку можно и без васма на яваскрипте написать.
     

  • 1.19, Аноним (19), 13:51, 02/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Крутяк, скоро можно будет майнер в браузере реализовать. Жаль сеть пока не поддерживается.
     
     
  • 2.34, penetrator (?), 15:09, 02/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    а какая проблема JS дернуть и fetch/XHR?
     

  • 1.21, Аноним (21), 13:52, 02/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Где-то инновации свернули куда-то не туда.
     
  • 1.29, Аноним (29), 14:51, 02/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Без systemd не взлетит.
     
  • 1.33, Аноним (27), 15:02, 02/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > наблюдается зависание консоли примерно через 5 минут из-за проблем с таймером

    Т.е. в браузере нужно улучшить таймер. А для чего его ухудшили? А Spectre не спят ;)

     
  • 1.35, penetrator (?), 15:13, 02/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > Например, порт может применяться для создания многоплатформенных WebAssembly программ, использующих специфичные для Linux системные вызовы.

    какой же бред написан )))

     
     
  • 2.43, Аноним (43), 17:31, 02/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Сама идея ядра Linux, запускаемого в браузере уже клинически бредовая.
    Сдается мне, что обсуждение этой идиотской идеи нужно исключительно для убеждения инвесторов в стартап.
     
     
  • 3.46, Аноним (44), 17:53, 02/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    WASM и без браузера бывает, но откуда тебе об этом знать?
     

  • 1.36, Шизгорин (?), 15:27, 02/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Я конечно ожидал, что браузер будет PID 1, но не ожидал что это будет в другую сторону.
     
     
  • 2.41, Аноним (41), 16:35, 02/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А если запустить в браузере ядро и там запустить браузер и ещё одно ядро кто с какой стороны будет?
     

  • 1.42, L10N (ok), 16:42, 02/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Ну, пусть будет и это. Больше - не меньше. Ubuntu 25.10, Firefox 145.0b9 полёт нормальный :)
     
  • 1.45, Аноним (-), 17:51, 02/11/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     
  • 1.54, Аноним (54), 19:00, 02/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    А будут ли вертуальные машины работать?
     

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



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

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