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

Software isolation model

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

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

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

Exercise: Namespaces

In this exercise, you‘ll explore the contents of a component’s namespace in more detail using the shell.

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

Find a component in the hub

Fuchsia provides the Hub as a diagnostic interface to obtain information about component instances running on the system. You can explore the components and their namespaces using the hub's directory structure.

From the device shell prompt, enter the ls command to list the components of the core realm under /hub-v2/children/core/children:

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

This is a list of many of the core Fuchsia system components. To see more details about a specific component, list its directory contents.

Try this for the http-client component:

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

Explore the namespace and outgoing directory

You‘ll find a running component’s namespace under the exec/in path inside the hub.

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

Here are some quick highlights of each element:

  • config/: configuration data for the component
  • pkg/: the contents of the component's package
  • svc/: system services available to the component

List the contents of the incoming svc/ directory. This directory contains service nodes representing the system services provided to this component.

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

Each of these services is accessible over a well-known protocol defined by a [Fuchsia Interface Definition Language (FIDL)][glossary.FIDL] interface. Components provide system services through their outgoing directory, which is mapped to the exec/out path inside the hub.

List the contents of the outgoing svc/ directory to see the system services this component provides.

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

We'll explore FIDL protocols and how to access various services in more detail later on.