我不太了解 Javascript,我想托管集成 Linux 的 Web 浏览器(可以在 here 找到)。原因是我并不总是连接到网络,想知道它是如何工作的。无意不尊重作者的许可。
我尝试将三个文件(
term.js
、cpux86.js
和 HTML 文件本身)的源复制到一个文件夹中,并运行 HTML,但它不起作用。
有什么办法让它发挥作用吗?
另外:如果它不起作用,为什么会这样?目录结构是我复制的,几乎是一样的
PS:我还使用了 Firefox 的 Javascript deobfuscator 插件,但这也没有多大帮助。我确实缩进了所有代码以使其更具可读性,但仍然无法理解:P
JS 代码本身不是“Linux 克隆”,它是一个适当的 x86 虚拟机加载 Linux 内核。
因此,您需要至少包含已编译的Linux内核的文件才能正常工作。
查看源码发现(至少)从
cpux86.js
加载了3个文件,分别是:vmlinux26.bin
(Linux内核)、root.bin
(可能是根文件系统)和linuxstart.bin
(这似乎是引导加载程序)。
这些是您需要的文件:
将它们与此文件一起放入文件夹中,然后就可以开始了:
<html>
<head>
<title>Javascript PC Emulator</title>
<style>
.term {
font-family: courier,fixed,swiss,sans-serif;
font-size: 14px;
color: #f0f0f0;
background: #000000;
}
.termReverse {
color: #000000;
background: #00ff00;
}
#note {
font-size: 12px;
}
#copyright {
font-size: 10px;
}
</style>
</head>
<body onload="start()">
<script src="term.js"></script>
<script src="cpux86.js"></script>
<div id="copyright">© 2011 Fabrice Bellard - <a href="tech.html">Technical notes</a></div>
</body>
</html>
除了给出的答案之外,您还可以尝试查看我在 jsmodem 项目中的本地服务器上托管 jslinux 的方式,网址为 http://github.com/ewiger/jsmodem(允许互联网连接)。
如果您安装了 python,只需启动本地 Web 服务器即可
python -m SimpleHTTPServer
我尚未检查该页面,但您所需要做的就是确保正确引用了所需的所有资产。 js 资源在页面中引用,linux 二进制文件从这些脚本中的某个位置加载。您必须深入研究它们并找到位置,并适当地更改 URL。
至于弄清楚仿真等是如何工作的,这个项目是一项相当不错的黑客壮举,祝你好运:)