Skip to content

Latest commit

 

History

History
183 lines (151 loc) · 5.33 KB

sandboxing.md

File metadata and controls

183 lines (151 loc) · 5.33 KB

{% import 'docs/_common/_doc_widgets.md' as widgets %}

软件隔离模型

<<../../_common/intro/_sandboxing_intro.md>>

<<../../_common/intro/_sandboxing_sandboxing.md>>

<<../../_common/intro/_sandboxing_namespaces.md>>

练习:命名空间

在本练习中,您将使用命令行来更详细地探索组件的命名空间(namespace)的内容。

<<../_common/_start_femu.md>>

在 hub 中找到一个组件

Fuchsia 提供了 Hub 作为诊断接口, 用于获取系统中运行的组件实例的信息。 您可以使用 hub 的目录结构来探索组件及其命名空间。

hub 的内容按照系统中 {{ widgets.glossary_simple ('realm', '组件领域') }}的层次结构组织。 您将很快探索更多关于这种结构的含义。

连接到设备命令行并输入以下 ls 命令 来列出 /hub-v2/children/core/children 下的 core 领域(realm)的组件:

fx shell ls /hub-v2/children/core/children
activity
appmgr
brightness_manager
bt-avrcp
build-info
...

这是许多核心 Fuchsia 系统组件的一个列表。要查看更多关于特定组件的详细信息,可以列出它的目录内容。

http-client 组件试试这个:

fx shell ls /hub-v2/children/core/children/network/children/http-client
children
component_type
debug
deleting
exec
id
resolved
url

探索命名空间和出口目录

您将在 hub 内部的 exec/in 路径下找到运行中组件的命名空间

fx shell ls /hub-v2/children/core/children/network/children/http-client/exec/in
config
pkg
svc

对每个元素简单说明如下:

  • config/: 组件的配置数据
  • pkg/: 组件的包的内容
  • svc/: 可供组件使用的系统服务

列出 svc/ 目录的内容。这个目录包含 服务节点, 表示提供给这个组件的系统服务。

fx shell ls /hub-v2/children/core/children/network/children/http-client/exec/in/svc
fuchsia.logger.LogSink
fuchsia.net.name.Lookup
fuchsia.posix.socket.Provider

每个服务都通过一个公有协议访问,其由一个 [Fuchsia 接口定义语言(Fuchsia Interface Definition Language,FIDL)][glossary.FIDL]接口定义。 组件通过其出口目录(outgoing directory)来提供系统服务, 这个目录被映射到 hub 内部的 exec/out 路径。

列出 svc/ 出口目录来查看这个组件提供的系统服务。

fx shell ls /hub-v2/children/core/children/network/children/http-client/exec/out/svc
fuchsia.net.http.Loader

我们将在以后更详细地探索 FIDL 协议及如何访问各种服务。

附加题

看看 hub 中的其他目录项,试试看还能发现什么!