Ядро Linux можно запустить в веб-браузере

19 май, 2011 - 12:45

Независимый французский программист Фабрис Беллард (Fabrice Bellard) продемонстрировал возможности запуска Linux из браузера. Для этого он использовал собственную реализацию эмулятора x86-совместимого ПК (32-разрядного x86-совместимого CPU, контроллера прерываний 8259, таймера 8254 и приемопередатчика 1650 UART).

Предложенная реализация полностью написана на языке JavaScript, эмулирует набор инструкций i486, кроме поддержки FPU. Пока еще не реализованы поддержка наборов инструкций MMX и SSE, 16-разрядного защищенного режима, а также есть некоторые особенности выполнения проверок при работе с памятью. Зато предусмотрено несколько оптимизаций QEMU, которые позволяют эффективнее выполнять некоторые операции.

Новый эмулятор позволяет в окне Firefox 4 и Chrome 11 загрузить Linux-ядро 2.6.20 c созданием ram-диска, использующего файловую систему Ext2. Загрузка занимает несколько секунд, затем появляется стандартное приглашение командной оболочки из пакета busybox. Окружение имеет работоспособный TCP-стек (по умолчанию loopback-интерфейс), стандартные команды (ifconfig, ping и netstat), в качестве системной библиотеки используется uClibc. Кроме того, в загружаемом Linux-дистрибутиве имеются компилятор tcc, текстовые редакторы vi и qemacs, сетевые серверы dnsd, ntpd, ftpd, httpd, sendmail.

Как отмечает Фабрис Беллард, пока эмулятор в Firefox 4 работает примерно вдвое быстрее, чем в Chrome, по-видимому это объясняется тем, что не были учтены какие-то особенности движка V8.