{% 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.

Connect to a device shell prompt and enter the following ls command to list the components of the core realm under /hub-v2/children/core/children:

fx shell 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:

fx shell 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.

fx shell 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.

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

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.

fx shell 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.