Как запустить Линукс в браузере

Jun 09, 2011 By Michael Reed
in fun
tags: javascript virtual machine web

Фабрис Беллард, создатель мультиплатформенного эмулятора QEMU и проекта FFmpeg, среди множества своих опенсорсных проектов имеет эмулятор персонального компьютера, написанного на Javascript. Выбранная платформа позволяет запустить этот эмулятор прямо в окне браузера. На текущий момент он умеет стартовать в современных браузерах и запускать внутри себя некую реализацию Linux в режиме командной строки. Как думаете, это интересный программистский трюк или вещь потенциально полезная?

Запуск Linux до приглашения командной строки происходит где-то за минуту на моем компе (Sempron 3000, FF 4.1). [Update: сравнительно быстрее, чем на моем CoreDuo]. Браузер требуется именно современный, например, Firefox 4 или последний Chrome.

Вещь пока еще в стадии концепта, но уже можно с ней поиграться. Естественно, первое, что я сделал, сидя в командной строке, это ввёл команду ls. Вывод показал, что в текущем каталоге имеется единственный файл, называющийся hello.c. Попытка его скомпилировать с помощью GCC провалилась, поскольку GCC не установлен. Исходный код можно посмотреть с помощью cat:

~ # cat hello.c
/* This C source can be compiled with:
tcc -o hello hello.c
*/
#include <tcclib.h>
int main(int argc, char **argv)
{
printf("Hello World\n");
return 0;
}
~ #

Система имеет Tiny C Compiler (не путать со Small-C), что в общем-то имеет смысл, поскольку это еще один проект Белларда. Получить представление о том, какие еще утилиты имеют место, можно с помощью

ls /bin

Итак, для чего бы это могло быть использовано, слышу я ваш вопрос. В текущем состоянии мало для чего. Первое: сеть еще не реализована. Для передачи файла внутрь эмулятора пользователь должен воспользоваться системным буфером обмена с одной стороны и виртуальным устройством /dev/clipboard с другой. Далее: невозможно передавать данные из/в систему. С другой стороны, интерпретатор выполняется локально а не где-то на сервере, что полезно для безопасности. Для того, чтобы подтереть систему, достаточно нажать кнопку "Обновить" в браузере.

Возможно, такой подход может быть использован для построения неких тренировочных окружений в учебных целях, это поможет объяснять людям, как использовать командную строку Linux. Можно выполнять компилирование простых примеров на C, если, например, в учебном классе установлены системы без компилятора.

[Update: Крис Вильямс использует эту штуку для демонстрации своего микроядерного проекта Diosix]

Реализация полного машинного эмулятора - это не та задача, для которой разрабатывался язык Javascript. Если вы хотите доступ к командной строке Linux, ничего не устанавливая на свой хост, лучше использовать SSH-доступ к удаленному серверу. Если же это нужно делать в окне браузера, возможно Java based PC emulator был бы несколько медленный, но всё же быстрее, чем на интерпретируемом языке. Сайт JPC предлагает несколько примеров, демонстрирующих работу Linux, но, естественно, для их использования вы должны иметь установленную Java.

Javascript PC Emulator Белларда забавная штучка, но вряд ли имеет практическую ценность. Скорее это показатель крутизны программиста, не более того.

The Javascript PC Emulator website



Назад в тематический каталог
Назад на страницу переводов из Linux Journal