在Web上运行Linux
一个叫Fabrice Bellard的程序员写了一段Javascript在Web浏览器中启动Linux(原网页,我把这个网页iframe在了下面),目前,你只能使用Firefox 4和Chrome 11运行这个Linux。这不是什么假的模仿Linux的东西,这是实实在在的运行一个Linux。这一举动还引起了很多很牛人的关注,包括Javascript的创建者Brendan Eich。
随后,Fabrice Bellard发布了相关的技术说明:http://bellard.org/jslinux/tech.html,从这份文档中我们可以看到:
- 这个模似器完全由Javascript写成
- CPU仿真器使用的是QEMU(接近于原古的486),为了装上Linux,其做了一些改动。
- Javascript的终端本来可以使用termlib,但他还是自己写了一个,因为OS的按键和Web浏览器不一样(here)
- Linux 使用了2.6.20内核,编译配置在这里,并做了一些小改动。
- 磁盘用的是Ram Disk,在启动的时候装载。其文件系统由Buildroot 和BusyBox产生。
- 在Home目录下有一个hello.c的程序,你可以使用TinyCC编译(tcc,参看酷壳的这篇文章)
从这个事我有这些感触,
- 在Web上运行一个Linux的操作系统不是问题。那么在Web上还有什么不能做的吗?
- Linux真是性能很高,在Javascript下运行感觉也不慢啊。
- 真是Techno-Geek。
(转载本站文章请注明作者和出处 酷 壳 – CoolShell ,请勿用于任何商业用途)
《在Web上运行Linux》的相关评论
压力巨大。。膜拜
这个没有什么技术性吧, 几前年我就研究过了!
额 难怪他会写模拟器,原来qemu是人家写的
哈哈,是在root目下有一个Hello.c 我还运行了一把
@大海无量
噗
@大海无量
如果只是研究过的话,基本上就是狗屁
为啥我用chrome12 bata版,运行到Freeing unused kernel memory: 124k freed就跑不动了呢
果断执行rm -rf /
输入的时候看不见我输入的字符啊,虽然是执行了。
肃然起敬啊, 回显慢了点
@小缺
参照http://bellard.org/jslinux/tech.html作者的notes
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).
bellard这家伙顺便推广了自家的编译器和虚拟机
倍感压力,太牛了!
niubi
这家伙就是去年用个人计算机破了算pi世界纪录的牛人~~
我第一想法就是halt关机。。。但是不管用,呵呵
膜拜吧,
让人感觉技术无极限啊,我等真是太浮躁了
大虎
@airtrack
ramdisk,你删了/ 又不能怎么样,都是内存里面的东西。
膜拜,我等依旧太浮躁
真的是很牛逼啊,在Web中运行OS,从来没有想像过可以这样弄!真牛!
@大海无量
这就是你永远都是无名之辈,而人家获得认可的原因
@winddy
是没啥,好玩而已,自己电脑上从来不敢执行这个命令,用这个过过删/ 的瘾。
纯SB嘛……你研究出来啥了?@大海无量
世外有高人啊,佩服!
话说,我是在linuxtoy上面看到的,还去玩了
不过我还没有发现这件事情有意思的地方,不是LOA还装在一个真正的土豆里去了嘛
@小缺 Chrome 13 也是停在那里了。还是火狐给力啊。
拜摸 有空去我那 http://www.shoujikanshu.net多多交流
拜摸 有空去我那 http://www.shoujikanshu.net
多多交流
这家伙是神一级的。
talk is cheap, show us your work
这牛人啊, ffmpeg的作者, QEMU的开发者.
还是最快速的计算圆周率的算法的作者.
简直是神人.
可以看到加载了vmlinux26.bin内核, 才1.67 MB, 真他妈牛…
还有一个root.bin包含了/目录下所有文件, 包含那个tcc.
还有一个看名字应该是加载linux内核用的,linuxstart.bin. 14.5 KB
然后这些东西就在Js写的虚拟机里跑起来了, 这真他妈是神人啊…
可以下载回来,无需网络本地运行
Firefox4通过
http://www.vdisk.cn/down/index/7838267A6661
技术无止境,我辈多多努力呀
我要学linux!
试了一下,vi也是可以运行的. 有人说运行了hello.c,我试了一下,没有gcc编译器,这个C代码是如何运行的呢?
文中说了,是TCC
每次打开这个页面都卡一下!
wget似乎不能用
另外,要怎么用复制粘贴功能呀?右上角的剪贴板意义不明
我想保存下来。可是好像保存下来的不太好用。。。。。
新人 刚学linux 编译了一下hello.c 再次膜拜
膜拜。
看了半天,我还是不能理解,这个虚拟机运行的架构。模拟的x86在哪?服务器,浏览器?linux内核在哪?整体的数据交互是怎么样的?
就是模拟个终端,然后通过ajax和那边的终端代理telnet虚拟机里的linux。
@lee
没搞清楚就不要乱说。
这个东西是用Javascript写的PC模拟器,你用Chrome看看它的网络请求就知道了,不是什么ajax做的telnet终端那种下三滥技术。
整个模拟器是在一个叫cpux86.js或者cpux86-ta.js(如果浏览器的JavascriptEngine支持typedArray的话用这个)模拟出来的,运行的时候会从网上动态抓下vmlinux26.bin, root.bin 和 linuxstart.bin,用这个模拟器运行里面的代码。
如果要抓这个网页的话这些文件都要抓,而且自己要架个web服务器才能用(ajax的原因),不能直接拖到浏览器里。
建议博主把浮动框架去了,改用其他方式嵌入,不是所有人都用火狐,我谷歌chrome11,打开博客首页就卡在那了,最后还崩溃。。。
拜托读懂原文。。。你真的理解为这个引擎使用 QEMU 来虚拟 x86?
作者说的只是借鉴了 QEMU 中的编程思想而已。。。
poet 我也覺得博主 那句話說的有點模糊
牛逼啊。