Как стать автором
Обновить

Комментарии 356

Браузер с линуксом внутри — это круто!
НЛО прилетело и опубликовало эту надпись здесь
А при чём тут java-то? На java совершенно не интересно, так же как и на флеше.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Только что постанули — правда менее информативно. См тему ниже — habrahabr.ru/blogs/linux/119422/
И поправьте что не только хром работает… У меня FX4 без проблем пашет.
извините, хабр лежал эти 20 минут, а убирать в черновики столько написанного мне не хочется.
Согласен, имеет право на жизнь, хотя информации столько же, плюс домыслы и рассуждения.
НЛО прилетело и опубликовало эту надпись здесь
Webkit, хуле.
Тем не менее, js движки в Сафри и Хроме сильно разные.
Отлично подойдет для обучения линуксу не желающим / не имеющим возможность поставить VirtualBox / VMWare и т.д.
Для этого есть ubuntu с wubi.
Ага, конечно, на виртуалку я ставить не хочу, а вот рядом с основной системой — пожалуйста.
Нежелания разные бывают, в данном случае компенсируется лень. Да и что вы имеете ввиду под «рядом с основной системой — пожалуйста» — непонятно.
Она устанавливается не «рядом», а «внутри» Windows. Отдельный раздел под неё не нужен.
Вот именно, что «внутри» — в кавычках. Отдельный раздел не нужен, но, тем не менее, получается достаточно самостоятельная ОС, только менее надежная из-за такого подхода.
И не надо говорить, что воспользоваться Wubi проще, чем виртуалкой.
Моя «основная система» не нуждается в эмуляторах и виртуальных машинах, чтобы попробовать Linux. Что и вам советую.
ERROR: your browser is too old to run JS/Linux.
You should use a recent browser such as Firefox 4.x or Google Chrome.


Опера 11.10 якобы не поддерживает JavaScript? Ну-ну…
НЛО прилетело и опубликовало эту надпись здесь
Операфаны плохо понимают по-английски?

> ERROR: your browser is too old to run JS/Linux.

Ваш браузер слишком стар чтобы JS/Linux работал в нем.

Поставьте нормальный браузер, ну? ;)
Это по-типу физических характеристик браузера? xD
Еще один уровень абстракции?)
HAL не круто, браузер — круто!
Жду, когда КДЕшники подсуетятся, и по примеру HAL-а выпилять браузер, и получим линукс напрямую, без виртуалки о_0
НЛО прилетело и опубликовало эту надпись здесь
ключевое слово — его любимого, а не того, который может по словам разработчиков обработать проект.
НЛО прилетело и опубликовало эту надпись здесь
Ключевое слово — слишком стар, что не соответствует действительности. Лучше написали, что не работает с лентой и все.
… с оперой… извиняюсь
НЛО прилетело и опубликовало эту надпись здесь
В лабораторной сборке с их поддержкой ( labs.opera.com/news/2011/02/28/ ) всё равно вылетает с ошибкой:

Event thread: load
Uncaught exception: [object DOMException]
Error thrown at line 9, column 150036 in Je(Ke, ha) in http://bellard.org/jslinux/cpux86.js:
    Ne=new Uint8Array(Me,0,fd);
called from line 9, column 174320 in start() in http://bellard.org/jslinux/cpux86.js:
    ya.load_binary("vmlinux26.bin",0x00100000);
called from line 1, column 0 in <anonymous function>(event):
    start()
А причём здесь «слишком старый», в таком случае?
Пусть так и пишет: «Ваш браузер не поддерживает Typed Arrays»
Видимо, авторы решили, что браузер, не поддерживающий данные фичи, не может называться современным, а следовательно он «too old».
Уже исправились — теперь пишет
Your browser does not support the W3C Typed Arrays and this version of JS/Linux needs them.
>> Ваш браузер слишком стар чтобы JS/Linux работал в нем

Ваш браузер SUPER STAR :)
Так в том-то и дело, что операфаны нормально понимают по-английски. Сама формулировочка хромает, разумней было бы просто «ваш браузер не поддерживается», а не «браузер слишком стар/молод/красив»
>> а не «браузер слишком стар/молод/красив»

стар/молод/красив/хром Ж-)
Да-да, как в старом анекдоте: Ринго — стар, Эдуард — хил, Дитер — болен, а Элтон — вообще джон.
так стар же. ибо в недрах Оперы разрабатывается уже поддержка типизированных массивов, так что надо подождать чутка нового браузера.
Нельзя называть версию Оперы, которая недавно вышла устаревшей. С таким же успехом можно сказать, что в недрах FF разрабыватываются новые версии FF, значит FF 4 устарел.
Можно. Часто недавно или только что вышедшее называют устаревшим (технологически), сравнивая с конкурентами.
Любая программа к моменту ее написания является безнадежно устаревшей ;)
Поддержка typed array — фичи которая противоречит самой сути JavaScript, это характеристика «нормального» браузера? Ну ну.
НЛО прилетело и опубликовало эту надпись здесь
Нет, неспособно. И даже уже несколько раз писали почему.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Уже работает в опере 11
НЛО прилетело и опубликовало эту надпись здесь
в консоль не пускает ( Хром
>it does not work with Chrome 12 beta. As far as I know, it is a bug in the browser
Первое, что ввели 9/10, это rm / -rf
НЛО прилетело и опубликовало эту надпись здесь
Не только вы)
Первым делом — uname -a
Я такой же :)
А я сделал ls, в результате узнал что можно скомпилить C-код. А еще там есть vi и emacs!
НЛО прилетело и опубликовало эту надпись здесь
Я тоже вхожу в 10%)))
Хотя начал с ввода ls -l / mount fdisk -l df -h
chmod -R 644 /.
а потом rm / -rf :)
Жаль что startx не заюзаешь(терминал работает по uart-у) =(
Каждый хочет входить в 10%, а по факту, оказывается в остальных 90%.
Проплюсовали 90%. Отписались 10 %)
rm не интересно.

Интереснее
dmesg
dd if=/dev/zero of=/dev/ramdisk
ls
dmesg
я ввел сперва ls -la, потом uname -a. rm -rf / как-то не подумал ;)
А я подумал, но не ввёл :)

Начал тоже с ls, что повлекло за собой vi/tcc/hello, и уже после этого дошла очередь до uname -a/df -h/free/cat /proc/cpuinfo и так далее…
да, давно хотел посмотреть что будет, но спецом для этого виртуалку заводить было влом.
ничего интересного. Просто большей части файлов не станет. В конкретно этом случае после кучи сообщений о «нет доступа» вы даже ls сделать не сможете.
Да не, думаю многие покопались в /bin и его содержимым, ну а потом уже… :)
[ $[ $RANDOM % 6 ] == 0 ] && rm -rf / || echo «Жив»
ls :)
НЛО прилетело и опубликовало эту надпись здесь
Вот черт, а я какойто не такой, ввел первым делом ifconfig ))
Похоже, что единственным, кто ввёл rm / -rf был автор корневого комментария ;)
Просто больше никто не признаётся.
А вообще, это на самом деле — очень круто!
Будущее рядом… Очень интересно наблюдать!
Правда под Оперу тоже бы допилить. Или Оперу под него…
Еще бы и синхронизацию между несколькими открытыми браузерами…
Оперу под него. Она не поддерживает typed arrays.
Значит подождем-с)
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Производительность Typed Arrays по сравнению с обычными массивами очень хороша. Боюсь, это было бы жуткое зрелище.
НЛО прилетело и опубликовало эту надпись здесь
Насколько я понимаю драфт на typed arrays с тех пор подрос и переехал из спецификации на webgl в отдельную спеку. Так что не факт, что там полноценная поддержка.
Глянул в исходники и меня охватила вселенская печаль :) Это что-то нереально гениальное.
Автор разработал QEMU, как я узнал из вики :)
НЛО прилетело и опубликовало эту надпись здесь
Ну да, я на это и намекаю — уровень скилла у человека офигенно высок :)
Кстати,
$ cat /proc/cpuinfo

выдаёт

model name: Pentium MMX
...
НЛО прилетело и опубликовало эту надпись здесь
Если вам показалось, что я с вами спорю — то вам действительно показалось. Это было просто замечание «по ходу дела».
НЛО прилетело и опубликовало эту надпись здесь
A еще ffmpeg (создал проект в 2000 и развивал до 2004 года), самый маленький компилятор си (tcc, была версия в 2 кб) и очень быстрые программы для расчета числа пи.
Круто! Для тех кто хочет знать как это работает есть маленькая ссылка внизу

bellard.org/jslinux/tech.html

This PC emulator is written in Javascript. The emulated hardware consists in:

a 32 bit x86 compatible CPU
a 8259 Programmble Interrupt Controller
a 8254 Programmble Interrupt Timer
a 16450 UART.

The code is written in pure Javascript using Typed Arrays which are available in recent browsers. It was tested with Firefox 4 and Google Chrome 11 on Linux, Window and Mac (it does not work with Chrome 12 beta. As far as I know, it is a bug in the browser). In any case, a fast Javascript engine is needed to have good performance.

Я вот не очень понял. На JS написали конкретон ядро, с которым умудряются работать все GNU-утилиты. Или все команды — тоже реализация JS?
На JS написали эмулятор PC
На JS написали эмулятор x86 процессора (http://bellard.org/jslinux/tech.html). Ядро и комманды — настоящие бинарники.
грубо говоря, на этом полетит что угодно для этого проца. ms-dos, например. можно кваку запустить первую.
Написано же, что 16-и битные режимы пока не поддерживаются, поэтому MS-DOS запустить нельзя. И эмуляции видеокарты нет, поэтому графические игры тоже запустить нельзя (консоль работает через эмуляцию последовательного порта).
Да, вы правы. Тем не менее, я думаю, это не последняя версия эмулятора. Прикрутят 16-битные режимы, прикрутят видео, всё будет. И первая квака тоже будет.
НЛО прилетело и опубликовало эту надпись здесь
Причем эмулятор забавный — этот процессор обладает F00F багом =) И линукс его понимает и обходит. Прямо как на первых камнях.
Я так понял, что на JS написан эмулятор железа, поверх которого запускается обычный (чуть подпиленный) linux.
Сейчас я вам объясню… На JS написал эмулятор x86 процессора!
А самое главное — зачем...?
opportunities && incredible mind
Встроить в железо нативную поддержку JS, а затем из Google OS запускать старые игры (которые не поддерживают JavaScript 4.x) через эмулятор PC :)
«Science is not about why, it is about why not» (Portal 2)
да-да, кстати, во время прохождения тоже фраза зацепила :)
чтобы показать возможности виртуальной машины JavaScript?
physics is like sex. sure it may give some practical results but that's not why we do it

Richard P. Feynman
Этот вопрос уже всех заебал!
За шкафом!
НЛО прилетело и опубликовало эту надпись здесь
у меня не работает в нём клавиша Пробел!!!
НЛО прилетело и опубликовало эту надпись здесь
заработал, надо отключить плагины которые их интеруптят, вобщем в моём случае Smooth scroll
В то время, как дети в Африке голодают, у кого-то находится время на это… ©
Реально, лучше помогите детям, зачем вы это читаете? )
Мнда, скольким же людям, незнакомым с источником цитаты, нужно ставить смайл, чтобы доходила ирония.
Пишите по делу в следующий раз.
Вас читают сотни людей.
Ваш менторский тон неуместен. Можете дать этот совет половине комментаторов этого топика. Впрочем, любого топика.
Пользы от вашего комментария в миллионы раз меньше, чем от эмулятора PC на Javascript, а дети всё продолжают голодать.
Уважаемые читатели без чувства юмора! Прошу вас воздержаться от дальнейшего комментирования моей ужасно неуместной реплики, самой тупой и бесполезной в этом треде, да и на всём сайте. Минуса в карму будет вполне достаточно. А всем прочим плюсы, чтобы мы знали, что такое хорошо и что такое плохо.
М… А какая польза от голодающих детей? По мне эмулятор полезнее.
НЛО прилетело и опубликовало эту надпись здесь
linux+canvas+storage+WebGL = PROFIT
осталось иксы отрисовать)
Если форвардить в WebGL, там ещё и эффекты будут :)
reboot -f работает
тоже первым делом пошёл проверять shutdown \ reboot \ halt.
reboot -f подвешивает мой хром=)
не только хром, но и ff4 :)
Подвешивается только вкладка с эмулятором.
там должна быть надпись «Теперь питание компьютера можно отключить»
Недалекое будущее. ChromeOS 2.0. Открываешь браузер, идешь по ссылке и запускаешь любую ОС на любом процессоре. Гугл знал.
… а в ней запускаешь ChromeOS и опять по ссылке… :)
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Буду ждать вебсервер в браузере
Можно провести соревнование на хабре кто первый поднимет сетку(вроде уже подняли) и апач+пхп на этой виртуалке^^
Автор же написал что там только простейшие устройства эмулируются вроде таймера и контроллера прерываний. Поддержки сети нет в самом эмуляторе.
у меня есть некоторые мысли, как поднять сеть:
поскольку в эмуляторе реализован UART (последовательный порт), значит к нему можно прикрутить виртуальный МОДЕМ, на который потом можно просто отправлять обычные AT-команды, вроде:
AT+CGDCONT=1,"IP","internet"\r
ATDT*99***1#\r

и так далее…
Не, это-то понятно. Только смысл тут не в модеме, а в том что поверх пожно поднять pppd и уже пускать. Только нужно как минимум два порта, чтобы и консоль была. Ну или отвязывать от консоли на момент запуска.
pppd ведь это часть стандартной сборки линукса.
Например httpd в этом эмуляторе уже встроен, и его запускали
Я в курсе
И, еще, сам UART не зависит от количества последовательных портов.
Контроллер UART позволяет адресовать одновременно до 256 портов.
При этом сами «порты» могут быть, как «железными», так и «виртуальными».
>> Можно провести соревнование на хабре кто первый поднимет…
>>апач+пхп на этой виртуалке
После добавления буфера обмена с возможностью закачки бинарников в виртуальную машину, установка php — плевое дело!
Нужно всего лишь скомпилить php из исходников, и залить в нужное место.
Бросаю вызов Хабрасообществу:
— поднять пхп
— запустить апач
— залить пхпинфо.пхп
— wget'ом достать выдачу скрипта
— закачать в /dev/clipboard
— скопировать содержимое буфера из окна браузера
— запостить коммент с текстом выдачи (в качестве доказательства)

ЗЫ: поскольку в выдаче будет html-разметка, перед публикацией коммента разрешается очистить выдачу от html-тегов
Да чё уж там. Ждём браузера в браузере.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
А попробуйте ftp-сервер поднять (если есть свободное время) и закинуть туда что-нибудь?
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
В смысле Unite?
НЛО прилетело и опубликовало эту надпись здесь
Странно, у меня идет до

VFS: Mounted root (ext2 filesystem).
Freeing unused kernel memory: 124k freed

и все…

ни у кого нет такого?
Chrome 12.0.742.53 beta-m, Win7
НЛО прилетело и опубликовало эту надпись здесь
Что ж сегодня все такие внимательные. Не работает в 12 Хроме.
Ыть… спасибо! Я так загорелся посмотреть что так и не дочитал внимательно :)

И все-таки это шедеврально!
Тоже самое, вот перезапускаю на FF4
Сказано же что с 12 Хромом проблемы! Что не понятного?!
писали же, на хроме бетке не работает.
и ведь я нажал Ф5 перед постингом… оО
>компилированные программы работают
както туда получилось закинуть свои бинарники?
Или там есть gcc?
Там есть tcc. Подробнее cat hello.c
Спасибо.
Охренеть, там и vi есть.
там есть tcc, см. файл ~/hello.c
НЛО прилетело и опубликовало эту надпись здесь
Еще никто об этом не сказал почему-то. Там же есть tcc, соберите им.
:) М-да, иронию то мы и не заметили.
но в реальности, если у вас есть линукс и есть — у вас есть все возможности

Ехал есть через есть…
НЛО прилетело и опубликовало эту надпись здесь
А, как в него свой софт закачать?
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
1. написать свой софт.
2. скомпилировать свой софт.
можно поднять сетку и скачать wget'ом.
нельзя, сеть не эмулируется.
Думаю, можно сэмулировать wget как команду.
wget то там есть.
не-не, чтобы она внешняя была, её логику написать на яваскрипте, чтобы через XMLHttpRequest скачивала поток данных и возвращала уже внутрь основной системы. Тогда можно обойтись без эмуляции сети.
НЛО прилетело и опубликовало эту надпись здесь
вебсокеты кроме того что пока вырублены по дефолту, не обеспечивают нужный функционал для драйвера сетевой карты.
они не позволяют работать с raw-сокетами.
НЛО прилетело и опубликовало эту надпись здесь
какие умные комментарии)
модифицировать функцию load_binary() так чтоб она качала через AJAX образы с твоего сервера, и обновить root.bin так как надо.
НЛО прилетело и опубликовало эту надпись здесь
btw, tcc тоже написал этот же человек :)
И зачинатель ffmpeg…
хехе

~ # ls -la                                                                      
total 6                                                                         
drwxr-xr-x    2 root     root          1024 May 17 10:56 .                      
drwxr-xr-x   13 root     root          1024 May 16 16:33 ..                     
-rw-------    1 root     root             7 May 17 10:56 .ash_history           
-rw-r--r--    1 root     root           166 May 15 22:15 hello.c                
~ # cc hello.c -o h                                                             
sh: cc: not found                                                               
~ # gcc hello.c -o h                                                            
sh: gcc: not found                                                              
~ # tcc hello.c -o h                                                            
~ # ./h                                                                         
Hello World                                                         
# cat hello.c

сэкономил бы вам пару неудачных вызовов компилятора ;)
Всё, я фанат этого человека.
«Не сотвори себе кумира»
Ты же сам не понимаешь, что это значит…
о, самый умный, объясните в таком случае :)
Библия классическая, что тут взять.
Как сказал мой знакомый, эмоции, терминология и предвзятость.
Круто, даже цвета поддерживает!
Жалко сеть не работает. А вообще js просто поражает, это нереально круто! Может лет через {n} увидим пингвина с иксами в браузере))
На Андроиде не взлетело
У меня мозг ломается, когда представляю такую цепочку абстракций.
zoomquilt2.madmindworx.com/zoomquilt2.swf
можно ассоциацию с этими картинками провести, эмуляция одна в другой…
Fennec пробовали?
НЛО прилетело и опубликовало эту надпись здесь
Ребята уже портировали линукс на калькуляторы и казалось бы куда стремиться дальше.
Однозначно — в избранное!
Интересно, а на этот эмулятор можно дугую операционку поставить? Например, PC-DOS?
ну это же эмулятор проца. конечно, можно.
16 bit не поддерживается, так что PC-DOS пока нет.

И линукс там немного подпиленный.
wget только у меня не работает?
Сеть не эмулируется
НЛО прилетело и опубликовало эту надпись здесь
Теперь осталось подключить сеть и научиться сохранять образы системы на диск.
тогда компания vmware не на шутку испугается:)
vmware это не только виртуализация как таковая, вы же отдаете себе отчет.
/ # ls bin
addgroup dnsdomainname iplink mt setarch
adduser dumpkmap iproute mv sh
ash echo iprule netstat sleep
base64 ed iptunnel nice stat
busybox egrep kill pidof stty
cat false linux32 ping su
catv fdflush linux64 ping6 sync
chattr fgrep ln pipe_progress tar
chgrp fsync login powertop touch
chmod getopt ls printenv true
chown grep lsattr ps umount
cp gunzip lzop pwd uname
cpio gzip makemime reformime usleep
cttyhack hostname mkdir rev vi
date hush mknod rm watch
dd ionice mktemp rmdir zcat
delgroup iostat more rpm
deluser ip mount run-parts
df ipaddr mountpoint scriptreplay
dmesg ipcalc mpstat sed

Интересно, и где это все хранится?
Или же оно по-кусочкам через AJAX подгружается?
Хранилище же в js нынче есть. При старте системы можно видеть что аллоцируется 2 метра. Так же при старте грузятся 3 бинарника.
root.bin через ajax.
ls -la /dev/ramdisk
mount /dev/ramdisk /mnt
ls /mnt

а сам ramdisk грузится вместе с ядром и кодом эмулятора при загрузке страницы.
НЛО прилетело и опубликовало эту надпись здесь
на ramdisk'e:
The disk image is just a ram disk image loaded at boot time. It contains a filesystem generated with Buildroot containing BusyBox. I added my toy C compiler TinyCC and my unfinished but usable emacs clone QEmacs.
НЛО прилетело и опубликовало эту надпись здесь
Да это же Fabrice Bellard — никто иной как создатель qemu! Крутой дядька.
Он же основатель FFMPEG и автор рекорда 2009 года по числу вычисленных знаков числа Пи.
Вот это Человечище!
гг, а кто-то его ещё помнит по LZEXE
Я помню. Да, дядька реально монстр
/ # cowsay Hi
sh: cowsay: not found

:((((
./cowsay Hi может сработать.
Нет, в корне его тоже нет :)
Есть tcc => почти есть и cowsay.
Эх, в браузере на N900 не стартует, жаль, былобы прикольно ))
там же и так полноценная линуха:)
такс а загрузчик как работает?
НЛО прилетело и опубликовало эту надпись здесь
Очень удобно будет когда там будут утилита nmap. Огромный плюс в том что весь набор диагностики серверов может быть в одном месте и использовать его можно не через ssh а просто отрыв страничку.
НЛО прилетело и опубликовало эту надпись здесь
~ # echo "#include int main(int argc, char **argv){ printf(\«Hello HA
BRAHABR.RU\»); return 0;}" > habr.c
~ # tcc habr.c -o habr
~ # ./habr
Hello HABRAHABR.RU~ #
~# sed s/World/Habrahabr.ru/ -i hello.c
~# tcc -o hello hello.c
~# ./hello
Hello Habrahabr.ru
tcc стайл же

tcc -run - << EOF
#include <tcclib.h>
int main(int ac, char**av){ printf("Hello habrahabr\n"); return 0; }
EOF
это круче чем виртуалка на флешке
Теперь разводить ботнеты станет как никогда легко и приятно.
/антивирусные компании радостно потирают руки/
Как вы себе это представляете?
Пока не представляю, так как не занимаюсь разведением ботнетов.
Но исполнить код в браузере намного легче, чем на самом хосте, вы согласны?
При чем тут проект эмулятора x86 cpu на js?
Как причем? Если технология станет популярной, то у многих в браузерах появится такой эмулятор. Значит в него начнут подсаживать всякую дрянь.
НЛО прилетело и опубликовало эту надпись здесь
Надо было «X4k33r» — так бы хоть вопросов не возникало :)
Есть забавная идея, специалисты по JScript, подскажите, в стандарте ECMA 262 Typed Arrays есть? Не могу получить вразумительный ответ от спецификации.
ботнет на линуксах внутри браузера, я знал, что доживу
echo '#include <tcclib.h>; int main(int argc, char **argv) {printf(«hello ha
br!\n»); return 0; }' > h5.c && tcc -o h5 h5.c && ./h5
Вы таки первый…
Да я открыл топик, когда небыло ниодного комменатрия. Потом отвлекли, вернулся — опубликовал коммент. Я так понял именно так я не один написал коммент.
теперь можно писать на ассемблере прям из-под браузера. брр
habrahabr.ru/blogs/programming/105028/

хм…

~ # cat bf.c
#include <tcclib.h>

s[999],*r=s,*d,c;main(a,b){char*v=1[d=b];for(;c=*v++%93;)for(b=c%7?a&&(c&17?c&1
?(*r-=c-44):(r+=c-61):c&2?putchar(*r):(*r=getchar()),0):v;b&&c|a**r;v=d)
main(!c,&b-1);d=v;}
~ # tcc -o bf bf.c
bf.c:3: warning: assignment makes pointer from integer without a cast
bf.c:3: warning: assignment makes pointer from integer without a cast
bf.c:4: warning: assignment from incompatible pointer type
bf.c:5: warning: assignment from incompatible pointer type
~ # ls -l bf
-rwxr-xr-x 1 root root 2372 May 17 13:52 bf
~ # echo '++++++++++.' | ./bf
Segmentation fault
Это круто!!!

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

Пока это выглядит как for fun. Но если развить идею — она может стать революционной.
Ну запускать уже дано можно, используя тот же ideone.com/. Правдаон не на чистом JS работает.
НЛО прилетело и опубликовало эту надпись здесь
Иксы запускаются? :D
НЛО прилетело и опубликовало эту надпись здесь
Там tinycc есть — через tcc запускается. Скачать что-то можно через ftpget, распаковать — через tar или unzip.
Скачать вряд ли получится — внешняя сеть не работает. А вот поднять ftp-сервер (ftpd там есть) на локалхосте и закинуть сорцы из основной системы — надо попробовать.
Через lo вы ничего не передадите. localhost в этой виртуалке и localhost на вашем компьютере — это разные локалхосты.
Только сеть пока не работает, чтобы скачивать…
НЛО прилетело и опубликовало эту надпись здесь
Стоп. Это «обычный» линукс (busybox based), ваши вопросы с таким же успехом можно адресовать любому дистрибутиву. Будет глупо звучать, да? И, да, внешней сети нет и не предвидится пока что.
Теоретически можно собрать с помощью buildroot свой образ в котором будет gcc. Сети, увы, нет.
Вижу потенциальное применение для защиты исходников клиентского кода.
И это не очень радует в плане безопасности.
Расшифруйте, что имеется в виду под «защитой исходников клиентского кода»?
JS-код загружается на клиента в исходном виде, а не компилированном. А тут появляется возможность загружать и исполнять бинарники, то есть скрывать исходный код.

Но у меня есть подозрение, что вы меня сразу поняли :)
То есть сейчас так никто не делает, да? Просто вместо полноценного x86, эмулируется то что надо. Мы вот Forth-машину как-то сделали простую для этих целей.
Сейчас делает кое-кто. А скоро смогут все.
Писать на C++ гораздо проще, чем делать/покупать Форт-машину, не так ли?
Фортмашина веселее :)
Смотря что писать. Можно эту же Форт-машину :)
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Аррргх! DileSoft, милый, вы топик и комментарии читали? :)
НЛО прилетело и опубликовало эту надпись здесь
а никак. сами подумайте, откуда там буфер? =)
НЛО прилетело и опубликовало эту надпись здесь
Это эмулятор проца. Он ничего про винду не знает. И про её буфер тоже.
НЛО прилетело и опубликовало эту надпись здесь
С точки зрения браузера — там просто текст. Как он туда может что-то вставить?)
НЛО прилетело и опубликовало эту надпись здесь
И в любом случае — все нажатия передаются виртуальной машине. ИМХО, перехватывать часть их на уровне браузера — неправильно.
НЛО прилетело и опубликовало эту надпись здесь
Исходный код, конечно, не читал, но глянул. Причем здесь как это реализовано?
Нажатия Ctrl+C, Ctrl+V, Shift+Ins, etc обрабатывает виртуальная машина. И ИМХО неправильно какие-то из нажатий подменять на что-то другое на уровне браузера.
НЛО прилетело и опубликовало эту надпись здесь
Нет, не смущает. Там все-таки ssh, а не виртуальная машина.
НЛО прилетело и опубликовало эту надпись здесь
ИМХО, возможно, стоило бы сделать соответствующую кнопку (благо консоль не на всю страницу). Но реализовывать доступ к внешнему буфферу закрывая часть хоткеев для машины — на мой взгляд, неправильно с точки зрения идеалогии.
Впрочем, этот спор действительно бессмысленен — всё будет так, как решит Беллард)
НЛО прилетело и опубликовало эту надпись здесь
Нельзя.
Но можно сделать отдельное поле, куда можно будет вставить текст, а потом отправить его кнопкой на консоль.

(Насколько я знаю.)
Именно так вчера (по многочисленным просьбам трудящихся) и сделал многоуважаемый автор эмулятора, добавив доступ к витруальному устройству /dev/clipboard через поле в окне браузера
Вообще-то, в данном случае терминал и эмулируемый комп соединены по com-порту. И идеологически комбинацию Ctrl-V получает терминал. А потом он уже может передать коды клавишь в виртуальную машину.
тут написано: bellard.org/jslinux/faq.html
вкратце — справа от эмулятора текстовое поле, в него вставляешь текст, потом cat /dev/clipboard
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Вообще супер!
А то я уж было хотел искать подходящий плагин к фаерфоксу, который вставлял бы содержимое буфера обмена в окно браузера, эмулируя нажатия клавиш.
И даже хотел бинарники закачивать, предварительно преобразовав их в base64.
И у меня тогда оставалась нерешенной лишь проблема экспорта данных из виртуальной машины.
Теперь же все гораздо проще и прозрачнее стало.
НЛО прилетело и опубликовало эту надпись здесь
При чем тут политики браузера?
НЛО прилетело и опубликовало эту надпись здесь
DileSoft, расскажите немного о себе, прошу вас.
НЛО прилетело и опубликовало эту надпись здесь
Простите за сарказм выше. Линукс ничего не знает о вашей сети, о вашем браузере и т.д., он запущен в рамках «простейшего» (ну относительно остальных) эмулятора x86 процессора. Видение вашей сети в конкретном случае — задача далеко не тривиальная. Как минимум нужна низкоуровневая прослойка между ОС в песочнице и какими-либо технологиями (выше в комментариях дело писали) уже на стороне браузера.
НЛО прилетело и опубликовало эту надпись здесь
Тогда и скрипт придется запускать с этого же порта. И это уже все слишком сложно становится…
И все таки.
Зачем?
В таких топиках этот вопрос еретический:)
Это должно влиять на мою свободу слова?
Я задал вопрос. Где ответы? Пусть аргументированно ответит тот, кто минус поставил ни за что. Мне кажется, ему слабо )
«В таких топиках» обычно распределение обязанностей: 9 срут минусами из всех дыр неудавшейся жизни, 1 за них пишет что-нибудь, о чем они и не знали )
Это перефразированная цитата с заседания ММО (московского математического общества).
-Да, интересный результат. А зачем он нужен?
-Это еретический вопрос. Пытаясь ответить на него, мы неизбежно упремся в неразрешимый вопрос «зачем заниматься математикой».


Я имел в виду, что такие вещи интересны и сами по себе. Понятно, что на ранних этапах практического смысла они иметь не могут.
В перспективе — возможность быстренько воспользоваться чем-нибудь linux only. Или демонстрация и обучение.
вы абсолютно правы, все тщетно, все зря.
Ну я ж говорил, внятно ответить хер кто сможет, да и не захочет. Отвечает один нормальный человек, а остальные комменты — с полезностью ниже нуля, от быдлошкололо, единственная цель которых — высраться )
задам вам наводящий вопрос, а зачем люди дома делают мебель/посуду?
зачем собирают марки, ходят в горы, пишут картины/стихи?
Продолжая мысль: зачем пишут статьи и комментарии на хабре?
В перспективе можно фигачить нативные приложения в браузере (Google вон уже не первый год мучается с NaCl для этих целей). А тут proof of concept, что, в прицнипе, эмулятор + sandbox можно замутить на чистом JS (кроссбраузерно же!). Это же дико круто. Тут идей можно плодить и плодить.
Ну вот не удержался — покормил.
Прочитал заголовок, первая мысль: JUnix откопали. А тут такое!
Пора пересмотреть политики браузеров по защите всего и вся.
Мега охренеть! Чуваку Нобелевскую неменьше!
А есть какой — ниубдь чёрный ход в этой штуке? Потому — что затащить какой — нибудь файл туда, кроме как наклацать его в vi, способа пока не вижу.
В принципе, можно посмотреть в сторону ya.load_binary в cpux86.js и заливать бинарные данные либо в память (а затем считывать изнутри), либо поменять содержимое бинарника с линуксом, добавив нудные файлы.

Но, все таки, хочется полноценную сеть :)
Полноценная сеть вряд ли будет. Ибо нужен более-менее низкий уровень, который не получить ни через js, ни даже (скорее всего) через плагины к браузеру.
Разве что какая-нибудь java или native client, но это уже не то...)
мне видится такое развитие: магическая инструкция, выполняющая произdольный js на «низком уровне», библиотека к tcc на базе неё, пара утилит, ну а потом уже можно и блочное устройство забабахать с XMLHttpRequest к локалхосту :)
С использованием web-socket мы можем создать паравиртуализированный драйвер сети с выходом на железный машрутизатор и получить нормальную сеть

Если запустить на нём спеки — пройдёт несколько лет пока они добегут — и к этому моменту и браузер, и железо успеют устареть! :)
Мужик просто монстр!!! Сделать такое на javascript нужно быть минимум гением!!!
Это всё взаправду? Меня не покидает ощущение обмана, и в голове вертятся фантастические сценарии. Что, например, используются уязвимости браузеров, чтобы запустить процесс с виртуальтной машиной из под клиенсткой операционкой. Ну или виртуалка крутится на сервере, а JScript через ajax просто транслирует её вывод. Я несерьёзно, просто тяжело поверить что кто-то написал эмулятор PC на JS.
опечатался: из-под клиентской операционки
Оно на армном кирпиче завелось, так что опасения беспочвенны.
НЛО прилетело и опубликовало эту надпись здесь
Идея действительно потрясающая )
Скажите, а почему грузится vmlinux.bin, root.bin, linuxstart.bin? Может же грузится только жесткий диск (hardware.img) и загрузка начинаться именно с жесткого диска?
Если бы это был только один файл системы, то возможно было бы немного модифицировать клиентский JS код, чтобы загружать с какого-то своего жесткого диска, с ftp, к примеру.
А еще лучше, можно было делать hibernate и обмениваться (сохранять, загружать) жесткие диски.
У этого процессора нет реального режима, в котором работает загрузчик с «жёсткого диска». Ядро кладётся прямо в память и оттуда же исполняется, сразу в защищённом.
НЛО прилетело и опубликовало эту надпись здесь
А в чём проблема? Я скачал cpux86.js index.html linuxstart.bin root.bin term.js vmlinux26.bin, работает. Ещё root.bin раcширил немного, думаю как бы ещё увеличить, ато 4 мегабайта потолок на ramfs — это не ок, а ядро это лень пересобирать :)
Плохо что при инициализации рам диска данные из root.bin перемещаются в памяти, а то можно было бы сделать сохранение образа по быстрому. А так у меня слишком руки кривые.

Фактически с помощью ya.ld8_phys($addr) можно сдампить хоть всю память, а это дает возможность делать простенькие «драйвера», что бы можно было изнутри вылезти наружу. Хотя бы в браузер.
НЛО прилетело и опубликовало эту надпись здесь
Тяжко было выключать крестиком вкладки браузера…
У одного меня зеленый курсор мигает в левом верхнем углу. И… всё!
В моём firefox6 то же самое. В firefox4 всё работает.
Хром 11 — Аналогично.
даешь клауды на броузерах клиентов
кто нибуть уже KDE пробовал ставить? :)
Приятная новость!
Вчера был добавлен долгожданный текстовый буфер обмена.
Несмотря на то, что он текстовый, есть возможность загружать в виртуальную машину произвольные бинарники.
А, теперь, самое вкусное: появилась возможность выгружать любые файлы из виртуальной машины назад, в окно браузера!
Opera 11.11, работает! На андроиде в стандартном (Desire, 2.3) тоже, Опера Мобайл помучилась, после чего схлопнулась :)
Автор уже сделал поддержку браузеров без TypedArrays. Запустил локально. Просто изумительно!
WOW! Я новенький в мире Linux. Такой тренажер — то, что нужно в данный момент. Буду тренироваться на работе. Спасибо автору поста и создателю этого чуда!
Работает на Safari в iOS 4.3.5. Жаль, но не удалось вызвать клавиатуру для ввода в терминал.

Публикации

Истории