【发布时间】:2011-01-14 11:25:27
【问题描述】:
是否可以在浏览器之外作为进程沙箱运行 Google NaCl?
【问题讨论】:
-
我最近在讨论组上问了同样的问题。答案是肯定的,正如 Mark Seaborn 所回答的那样,使用 sel_ldr。
是否可以在浏览器之外作为进程沙箱运行 Google NaCl?
【问题讨论】:
是的。 Native Client 的独立版本包含一个名为“sel_ldr”的程序,该程序在 Web 浏览器之外运行 NaCl 沙箱。很多 NaCl 的测试套件通过在 sel_ldr 下而不是在浏览器下运行程序来测试 NaCl。
【讨论】:
Native Client documentation 可能是尝试弄清楚一切如何运作的一个很好的起点。
正如 Mark Seaborn 和 Bennet Yee 所指出的,您最好考虑使用 sel_ldr。有关如何将 sel_ldr 包含在“The life of sel_ldr”中的更多详细信息。
我个人没有在浏览器之外实现任何使用 NaCl 的东西,所以很遗憾我无法评论这样做的难易程度。
【讨论】:
要补充 Mark 的答案,请查看 sel_universal 目标。显然有些接口是不支持的,例如 Pepper 接口,因为这样的独立运行不涉及浏览器。此外,我们支持的稳定 ABI 是由“集成运行时”或 irt 公开的,并且 irt 代码 thunk 假定浏览器存在。通过 sel_ldr 独立使用 NaCl 最初可能必须使用 syscall 接口,直到编写替代 irt。 (注意:我们不保证系统调用接口的稳定性。)
【讨论】:
您可以尝试包含在 Native Client 源代码中的 run.py。
这是一个运行 hello world 程序的示例。
make test_hello_world_nexe
python native_client/run.py out/Debug/hello_world_newlib_x64.nexe
此脚本可以构建、搜索和调用sel_ldr,并自动将适当的参数传递给它。
【讨论】: