blob: f6b4fac15a1ce0d767d655756c7bb191b6bef2e5 [file] [log] [blame]
// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
{
children: [
{
name: "archivist",
url: "fuchsia-boot:///archivist#meta/archivist.cm",
},
{
name: "device_name_provider",
url: "fuchsia-boot:///device-name-provider#meta/device-name-provider.cm",
},
{
name: "driver_manager",
url: "fuchsia-boot:///driver_manager#meta/driver_manager.cm",
environment: "#driver_manager-env",
},
{
name: "driver_index",
url: "fuchsia-boot:///driver-index#meta/driver-index.cm",
on_terminate: "reboot",
},
{
// Exists to augment capability graph with information about when #boot-drivers should
// be stopped. Most components should prefer depending on capabiliites provided by
// #devfs-with-pkg over this component
name: "devfs",
url: "fuchsia-boot:///devfs#meta/devfs.cm",
environment: "#devfs-env",
},
{
// Exists to augment capability graph with information about when #pkg-drivers and
// #full-pkg-drivers should be stopped. Most components should prefer depending on
// capabiliites provided by this component over #devfs.
name: "devfs-with-pkg",
url: "fuchsia-boot:///devfs#meta/devfs.cm",
environment: "#devfs-env",
},
{
name: "flashmap",
url: "fuchsia-boot:///#meta/flashmap.cm",
},
{
name: "fshost",
url: "fuchsia-boot:///#meta/fshost.cm",
environment: "#fshost-env",
on_terminate: "reboot",
},
{
name: "console",
url: "fuchsia-boot:///console#meta/console.cm",
// Usually, console is started when console-launcher starts. But, startup eager is
// required because in products with console.shell=false, console-launcher exits
// early and does not start console; it should be started in order to get serial logs.
startup: "eager",
},
{
name: "console-launcher",
url: "fuchsia-boot:///console-launcher#meta/console-launcher.cm",
startup: "eager",
},
{
name: "miscsvc",
url: "fuchsia-boot:///miscsvc#meta/miscsvc.cm",
},
{
name: "live_usb",
url: "fuchsia-boot:///live-usb#meta/live-usb.cm",
startup: "eager",
},
{
name: "netsvc",
url: "fuchsia-boot:///netsvc#meta/netsvc.cm",
startup: "eager",
},
{
name: "ptysvc",
url: "fuchsia-boot:///ptysvc#meta/ptysvc.cm",
},
{
name: "pwrbtn-monitor",
url: "fuchsia-boot:///pwrbtn-monitor#meta/pwrbtn-monitor.cm",
// pwrbtn-monitor should start eagerly - the only services it offers may never be called
// on some builds, so there's no other way to start it.
startup: "eager",
},
{
name: "shutdown_shim",
url: "fuchsia-boot:///shutdown-shim#meta/shutdown-shim.cm",
},
{
name: "svchost",
url: "fuchsia-boot:///svchost#meta/svchost.cm",
// Start eager in order to register the crash handler as early as
// possible.
startup: "eager",
},
{
name: "sysinfo",
url: "fuchsia-boot:///sysinfo#meta/sysinfo.cm",
},
{
name: "cr50_agent",
url: "fuchsia-boot:///#meta/cr50_agent.cm",
},
{
name: "vboot-fwparam",
url: "fuchsia-boot:///#meta/vboot-fwparam.cm",
},
{
// base_resolver is present on all product configurations except
// bringup builds, as its dependency pkgfs is not available on
// bringup builds either.
name: "base_resolver",
url: "fuchsia-boot:///#meta/base-resolver.cm",
},
{
name: "power_manager",
url: "fuchsia-boot:///power-manager#meta/power-manager.cm",
},
{
name: "virtual_console",
url: "fuchsia-boot:///virtual-console#meta/virtual-console.cm",
},
// TODO(fxb/98535): Remove need for separate full_resolver component here.
// Full resolver clone to be used by the full-pkg-drivers collection
{
name: "full_resolver",
url: "fuchsia-pkg://fuchsia.com/full-resolver#meta/full-resolver.cm",
environment: "#base-resolver-env",
},
{
name: "pkg-cache",
url: "fuchsia-pkg://fuchsia.com/pkg-cache#meta/pkg-cache.cm",
environment: "#base-resolver-env",
},
],
collections: [
{
name: "driver-hosts",
environment: "#driver-host-env",
durability: "single_run",
},
{
name: "boot-drivers",
environment: "#boot-driver-env",
durability: "single_run",
allowed_offers: "static_and_dynamic",
allow_long_names: true,
},
{
name: "pkg-drivers",
environment: "#pkg-driver-env",
durability: "single_run",
allowed_offers: "static_and_dynamic",
allow_long_names: true,
},
{
name: "full-pkg-drivers",
environment: "#full-pkg-driver-env",
durability: "single_run",
allowed_offers: "static_and_dynamic",
allow_long_names: true,
},
],
offer: [
// Disable the required offer for Archivist
{
protocol: [
"fuchsia.inspect.InspectSink",
"fuchsia.logger.LogSink",
],
from: "void",
to: "#archivist",
availability: "optional",
},
{
protocol: [
"fuchsia.boot.Arguments",
"fuchsia.boot.ReadOnlyLog",
"fuchsia.boot.WriteOnlyLog",
],
from: "parent",
to: "#virtual_console",
},
{
protocol: "fuchsia.tracing.provider.Registry",
from: "parent",
to: [
"#archivist",
"#boot-drivers",
"#console-launcher",
"#driver-hosts",
"#driver_manager",
"#fshost",
"#full-pkg-drivers",
"#netsvc",
"#pkg-cache",
"#pkg-drivers",
"#power_manager",
"#virtual_console",
],
availability: "optional",
},
{
protocol: [
"fuchsia.boot.Arguments",
"fuchsia.boot.FactoryItems",
"fuchsia.boot.Items",
"fuchsia.boot.ReadOnlyLog",
"fuchsia.boot.RootResource",
"fuchsia.boot.WriteOnlyLog",
"fuchsia.exception.Handler",
"fuchsia.kernel.RootJob",
"fuchsia.kernel.RootJobForInspect",
"fuchsia.kernel.Stats",
"fuchsia.metrics.MetricEventLoggerFactory",
"fuchsia.pkg.RepositoryManager",
"fuchsia.pkg.rewrite.Engine",
"fuchsia.process.Launcher",
],
from: "parent",
to: [
"#console-launcher",
"#netsvc",
],
},
{
protocol: [
"fuchsia.dash.Launcher",
"fuchsia.tracing.controller.Controller",
],
from: "parent",
to: [ "#console-launcher" ],
availability: "optional",
},
// Allow shell tools launched from the console to use the root Realm
// querying protocols.
{
protocol: [
"fuchsia.sys2.LifecycleController.root",
"fuchsia.sys2.RealmExplorer.root",
"fuchsia.sys2.RealmQuery.root",
"fuchsia.sys2.RouteValidator.root",
],
from: "parent",
to: "#console-launcher",
},
{
// Allow launching shell tools from the console,
// including from universe packages.
protocol: [
"fuchsia.pkg.PackageResolver",
"fuchsia.process.Resolver",
],
from: "parent",
to: "#console-launcher",
},
{
// Allow the console to run `snapshot`.
protocol: "fuchsia.feedback.DataProvider",
from: "parent",
to: "#console-launcher",
},
{
// Allow networking from programs running in the console.
protocol: [
"fuchsia.net.name.Lookup",
"fuchsia.posix.socket.Provider",
],
from: "parent",
to: "#console-launcher",
},
{
// Allow launching / managing guests from the console.
protocol: [
"fuchsia.virtualization.DebianGuestManager",
"fuchsia.virtualization.LinuxManager",
"fuchsia.virtualization.TerminaGuestManager",
"fuchsia.virtualization.ZirconGuestManager",
],
from: "parent",
to: "#console-launcher",
// Virtualization is not present in all configurations.
// See: fxbug.dev/103301
availability: "optional",
},
{
protocol: [
"fuchsia.diagnostics.ArchiveAccessor",
"fuchsia.diagnostics.FeedbackArchiveAccessor",
"fuchsia.diagnostics.LegacyMetricsArchiveAccessor",
],
from: "#archivist",
to: "#console-launcher",
},
{
protocol: "fuchsia.pkg.PackageResolver",
from: "#base_resolver",
as: "fuchsia.pkg.PackageResolver-base",
to: [
"#driver_index",
"#driver_manager",
],
// base_resolver depends on fshost for blobfs and fshost depends transitively on
// driver_index and driver_manager, but driver_index and driver_manager don't need base
// packages to provide fshost's (transitive) dependencies.
dependency: "weak",
},
{
// This is only used when the #driver_index |enable_ephemeral_drivers| config
// is set, which enables loading drivers ephemerally. This is intended for
// eng builds only and is set through product assembly.
protocol: "fuchsia.pkg.PackageResolver",
from: "parent",
as: "fuchsia.pkg.PackageResolver-full",
to: "#driver_index",
},
{
directory: "boot",
from: "parent",
to: [
"#console-launcher",
"#driver_index",
"#driver_manager",
"#fshost",
"#miscsvc",
"#netsvc",
],
rights: [ "rx*" ],
},
{
directory: "boot",
from: "parent",
as: "config-profiles",
to: "#svchost",
rights: [ "r*" ],
subdir: "config/profiles",
},
{
directory: "boot",
from: "parent",
as: "boot-data",
to: [ "#virtual_console" ],
rights: [ "r*" ],
subdir: "data",
},
{
directory: "boot",
from: "parent",
as: "config",
to: [ "#power_manager" ],
rights: [ "r*" ],
subdir: "config/power_manager",
},
{
protocol: [
"fuchsia.boot.Arguments",
"fuchsia.boot.Items",
"fuchsia.boot.RootResource",
"fuchsia.boot.WriteOnlyLog",
"fuchsia.kernel.MexecResource",
"fuchsia.kernel.PowerResource",
"fuchsia.kernel.RootJob",
"fuchsia.process.Launcher",
],
from: "parent",
to: "#driver_manager",
},
{
protocol: "fuchsia.pkg.PackageResolver",
from: "parent",
as: "fuchsia.pkg.PackageResolver-full",
to: "#driver_manager",
},
{
protocol: "fuchsia.component.Realm",
from: "framework",
to: "#driver_manager",
},
{
protocol: [
"fuchsia.driver.development.DriverIndex",
"fuchsia.driver.index.DriverIndex",
"fuchsia.driver.registrar.DriverRegistrar",
],
from: "#driver_index",
to: "#driver_manager",
},
{
// The dependency relationship between power-manager and
// driver-manager is inverted. In other words, driver-manager
// depends on power-manager for its policy, but the relationship is
// expressed in reverse in the driver framework using weak
// dependencies. This "protocol" is a phantom used to ensure that
// driver-manager is shut down before power-manager is.
//
// TODO(https://fxbug.dev/119962): Change the APIs used here so that
// driver-manager pulls policy from power-manager, rather
// power-manager pushing it to driver-manager.
protocol: [ "power-manager-outlives-driver-manager" ],
from: "#power_manager",
to: "#driver_manager",
},
{
protocol: [ "fuchsia.boot.WriteOnlyLog" ],
from: "parent",
to: "#driver-hosts",
},
{
protocol: [
"fuchsia.boot.Items",
"fuchsia.boot.RootResource",
"fuchsia.kernel.IoportResource",
"fuchsia.kernel.IrqResource",
"fuchsia.kernel.MmioResource",
"fuchsia.kernel.SmcResource",
],
from: "parent",
to: "#boot-drivers",
},
{
protocol: "fuchsia.kernel.InfoResource",
from: "parent",
to: [
"#boot-drivers",
"#full-pkg-drivers",
"#pkg-drivers",
],
},
{
protocol: "fuchsia.boot.Arguments",
from: "parent",
to: [
"#boot-drivers",
"#full-pkg-drivers",
"#pkg-drivers",
],
},
{
protocol: [
"fuchsia.boot.Arguments",
"fuchsia.kernel.DebugResource",
],
from: "parent",
to: "#console",
},
{
protocol: [
"fuchsia.boot.Arguments",
"fuchsia.boot.Items",
"fuchsia.feedback.CrashReporter",
"fuchsia.process.Launcher",
],
from: "parent",
to: "#fshost",
},
{
protocol: [ "fuchsia.memorypressure.Provider" ],
from: "parent",
to: "#fshost",
availability: "optional",
},
{
protocol: [
"fuchsia.boot.Arguments",
"fuchsia.pkg.rewrite.Engine",
],
from: "parent",
to: "#live_usb",
},
{
protocol: [
"fuchsia.boot.Arguments",
"fuchsia.boot.WriteOnlyLog",
"fuchsia.process.Launcher",
],
from: "parent",
to: "#miscsvc",
},
{
protocol: [
"fuchsia.boot.RootResource",
"fuchsia.boot.WriteOnlyLog",
"fuchsia.exception.Handler",
"fuchsia.kernel.RootJob",
],
from: "parent",
to: "#svchost",
},
{
protocol: [
"fuchsia.boot.Arguments",
"fuchsia.boot.WriteOnlyLog",
],
from: "parent",
to: "#device_name_provider",
},
{
protocol: [ "fuchsia.boot.WriteOnlyLog" ],
from: "parent",
to: [
"#console",
"#fshost",
"#ptysvc",
"#pwrbtn-monitor",
"#shutdown_shim",
"#sysinfo",
],
},
{
protocol: [ "fuchsia.metrics.MetricEventLoggerFactory" ],
from: "parent",
to: [
"#fshost",
"#power_manager",
],
},
{
protocol: [
"fuchsia.boot.WriteOnlyLog",
"fuchsia.kernel.CpuResource",
],
from: "parent",
to: "#power_manager",
},
{
protocol: [ "fuchsia.kernel.VmexResource" ],
from: "parent",
to: "#fshost",
},
{
protocol: [ "fuchsia.scheduler.ProfileProvider" ],
from: "#svchost",
to: [
"#boot-drivers",
"#fshost",
"#full-pkg-drivers",
"#pkg-drivers",
],
},
{
protocol: [ "fuchsia.virtualconsole.SessionManager" ],
from: "#virtual_console",
to: [
"#console-launcher",
"#netsvc",
],
},
{
protocol: [
"fuchsia.tracing.kernel.Controller",
"fuchsia.tracing.kernel.Reader",
],
from: "#svchost",
to: [
"#console-launcher",
"#netsvc",
],
},
{
protocol: [
"fuchsia.driver.development.DriverDevelopment",
"fuchsia.hardware.usb.DeviceWatcher",
],
from: "#driver_manager",
to: [
"#console-launcher",
"#netsvc",
],
},
{
protocol: [
"fuchsia.device.composite.DeprecatedCompositeCreator",
"fuchsia.driver.framework.CompositeNodeManager",
],
from: "#driver_manager",
to: [
"#boot-drivers",
"#full-pkg-drivers",
"#pkg-drivers",
],
},
{
protocol: [ "fuchsia.device.fs.lifecycle.Lifecycle" ],
from: "#driver_manager",
to: [ "#devfs" ],
},
{
protocol: "fuchsia.device.fs.with.pkg.lifecycle.Lifecycle",
from: "#driver_manager",
as: "fuchsia.device.fs.lifecycle.Lifecycle",
to: [ "#devfs-with-pkg" ],
},
{
directory: "dev",
from: "#driver_manager",
to: [ "#devfs" ],
},
{
directory: "dev-topological",
from: "#devfs",
as: "dev",
to: [ "#devfs-with-pkg" ],
},
// These protocols are not actually used but exist to increase the lifetime
// of components. The capabilities are named after their place in the topology.
// We cannot use a single service due to the lack of service merging.
{
service: [ "bootstrap.driver-hosts" ],
from: "#driver-hosts",
to: [
"#devfs",
"#devfs-with-pkg",
],
},
{
service: [ "bootstrap.boot-drivers" ],
from: "#boot-drivers",
to: [ "#devfs" ],
},
{
service: [ "bootstrap.pkg-drivers" ],
from: "#pkg-drivers",
to: [ "#devfs-with-pkg" ],
},
{
service: [ "bootstrap.full-pkg-drivers" ],
from: "#full-pkg-drivers",
to: [ "#devfs-with-pkg" ],
},
{
protocol: [ "fuchsia.scheduler.ProfileProvider" ],
from: "#svchost",
to: "#driver_manager",
},
{
protocol: [
"fuchsia.kernel.DebugBroker",
"fuchsia.scheduler.ProfileProvider",
],
from: "#svchost",
to: [
"#console-launcher",
"#netsvc",
],
},
{
protocol: [
"fuchsia.sysmem.Allocator",
"fuchsia.sysmem2.Allocator",
],
from: "#miscsvc",
to: [
"#console-launcher",
"#netsvc",
],
},
{
protocol: [ "fuchsia.sysmem.Allocator" ],
from: "#miscsvc",
to: [
"#boot-drivers",
"#full-pkg-drivers",
"#pkg-drivers",
],
// This must be weak because miscsvc needs sysmem from devfs, which creates
// a cycle. sysmem can be made into a non-driver to fix this.
dependency: "weak_for_migration",
},
{
protocol: [ "fuchsia.sysmem.Allocator" ],
from: "#miscsvc",
to: "#virtual_console",
},
{
directory: "dev-topological",
from: "#devfs",
to: [ "#fshost" ],
},
{
directory: "dev-topological",
from: "#devfs-with-pkg",
to: [
"#console-launcher",
"#flashmap",
"#miscsvc",
"#sysinfo",
"#vboot-fwparam",
],
},
{
directory: "dev-topological",
from: "#devfs-with-pkg",
to: "#power_manager",
dependency: "weak",
},
{
directory: "dev-class",
from: "#devfs-with-pkg",
as: "dev-class-network",
to: [
"#device_name_provider",
"#netsvc",
],
subdir: "network",
},
{
directory: "dev-class",
from: "#devfs",
as: "dev-class-block",
to: "#live_usb",
subdir: "block",
},
{
directory: "dev-class",
from: "#devfs-with-pkg",
as: "dev-class-tpm",
to: "#cr50_agent",
subdir: "tpm",
},
{
directory: "dev-class",
from: "#devfs-with-pkg",
as: "input-report",
to: "#virtual_console",
subdir: "input-report",
},
{
directory: "dev-class",
from: "#devfs-with-pkg",
as: "display-coordinator",
to: "#virtual_console",
subdir: "display-coordinator",
},
{
directory: [ "tmp" ],
from: "#fshost",
to: [
"#console-launcher",
"#netsvc",
],
dependency: "weak_for_migration",
},
{
directory: [
"pkgfs",
"root-ssl-certificates",
"system",
],
from: "#pkg-cache",
to: "#console-launcher",
dependency: "weak_for_migration",
},
{
directory: "shell-commands-bin",
from: "#base_resolver",
as: "bin",
to: "#console-launcher",
dependency: "weak_for_migration",
},
{
directory: [
"blob",
"data",
],
from: "#fshost",
to: [ "#console-launcher" ],
dependency: "weak_for_migration",
},
// Offer the log services to the console
{
protocol: [ "fuchsia.logger.Log" ],
from: "#archivist",
to: "#console",
},
// Offer the kernel serial console to the console-launcher
{
protocol: "fuchsia.hardware.pty.Device",
from: "#console",
as: "console",
to: "#console-launcher",
},
{
protocol: "fuchsia.device.NameProvider",
from: "#device_name_provider",
to: [
"#console-launcher",
"#netsvc",
],
},
{
protocol: "fuchsia.hardware.pty.Device",
from: "#ptysvc",
to: [
"#console-launcher",
"#netsvc",
"#virtual_console",
],
},
{
protocol: "fuchsia.sysinfo.SysInfo",
from: "#sysinfo",
to: [
"#console-launcher",
"#netsvc",
],
},
{
// TODO(fxb/65708) This is only needed for an ordered shutdown.
// Driver_manager has to shut down before shutdown_shim.
protocol: "fuchsia.hardware.power.statecontrol.Admin",
from: "#shutdown_shim",
to: "#driver_manager",
},
{
// TODO(fxb/65708) This is only needed for an ordered shutdown.
// Console should outlive driver_manager so that logs at the end of the boot process
// can still be seen.
protocol: "fuchsia.hardware.pty.Device",
from: "#console",
to: "#driver_manager",
},
{
protocol: "fuchsia.hardware.power.statecontrol.Admin",
from: "#shutdown_shim",
to: [
"#console-launcher",
"#netsvc",
"#pwrbtn-monitor",
"#svchost",
"#virtual_console",
],
},
// Things shutdown_shim and power_manager need
{
protocol: [ "fuchsia.sys2.SystemController" ],
from: "parent",
to: [
"#power_manager",
"#shutdown_shim",
],
},
{
protocol: [ "fuchsia.device.manager.SystemStateTransition" ],
from: "#shutdown_shim",
to: [
"#boot-drivers",
"#driver-hosts",
"#driver_manager",
"#full-pkg-drivers",
"#pkg-drivers",
],
},
{
protocol: [ "fuchsia.hardware.power.statecontrol.Admin" ],
from: "#power_manager",
to: "#shutdown_shim",
},
{
protocol: [ "fuchsia.device.manager.Administrator" ],
from: "#driver_manager",
to: "#fshost",
},
{
protocol: [
"fuchsia.feedback.CrashReporter",
"fuchsia.kernel.Stats",
"fuchsia.ui.activity.Provider",
],
from: "parent",
to: "#power_manager",
},
{
protocol: "fuchsia.settings.Input",
from: "parent",
to: "#power_manager",
availability: "optional",
},
{
protocol: [
"fuchsia.kernel.Counter",
"fuchsia.paver.Paver",
],
from: "#miscsvc",
to: [
"#console-launcher",
"#netsvc",
],
},
{
protocol: [ "fuchsia.paver.Paver" ],
from: "#miscsvc",
to: "#live_usb",
},
{
protocol: "fuchsia.logger.Log",
from: "#archivist",
to: [
"#console-launcher",
"#netsvc",
],
},
{
protocol: [
"fuchsia.inspect.InspectSink",
"fuchsia.logger.LogSink",
],
from: "#archivist",
to: [
"#base_resolver",
"#boot-drivers",
"#console",
"#console-launcher",
"#cr50_agent",
"#devfs",
"#devfs-with-pkg",
"#device_name_provider",
"#driver-hosts",
"#driver_index",
"#driver_manager",
"#flashmap",
"#fshost",
"#full-pkg-drivers",
"#live_usb",
"#miscsvc",
"#netsvc",
"#pkg-drivers",
"#power_manager",
"#ptysvc",
"#pwrbtn-monitor",
"#shutdown_shim",
"#svchost",
"#sysinfo",
"#vboot-fwparam",
"#virtual_console",
],
},
{
protocol: [ "fuchsia.vboot.FirmwareParam" ],
from: "#vboot-fwparam",
to: [
"#console-launcher",
"#miscsvc",
],
},
{
protocol: [ "fuchsia.kernel.RootJob" ],
from: "parent",
to: "#pwrbtn-monitor",
},
{
protocol: [ "fuchsia.power.button.Monitor" ],
from: "#pwrbtn-monitor",
to: "#cr50_agent",
},
{
protocol: [
"fuchsia.fshost.Admin",
"fuchsia.fshost.BlockWatcher",
],
from: "#fshost",
to: [
"#console-launcher",
"#netsvc",
],
},
{
protocol: [ "fuchsia.tpm.cr50.Cr50" ],
from: "#cr50_agent",
to: [
"#console-launcher",
"#miscsvc",
],
},
{
directory: "dev-class",
from: "#devfs-with-pkg",
as: "input",
to: "#pwrbtn-monitor",
subdir: "input",
},
{
protocol: [ "fuchsia.fshost.BlockWatcher" ],
from: "#fshost",
to: "#miscsvc",
},
{
protocol: "fuchsia.nand.flashmap.Manager",
from: "#flashmap",
to: [
"#miscsvc",
"#vboot-fwparam",
],
},
{
protocol: [ "fuchsia.fshost.BlockWatcher" ],
from: "#fshost",
to: "#live_usb",
},
// -- Archivist offers below here --
// Required events
{
event_stream: "stopped",
from: "parent",
to: "#archivist",
},
{
event_stream: "capability_requested",
from: "parent",
to: "#archivist",
},
{
event_stream: "directory_ready",
from: "parent",
to: "#archivist",
},
{
protocol: [
"fuchsia.boot.ReadOnlyLog",
"fuchsia.boot.WriteOnlyLog",
"fuchsia.component.KcounterBinder",
"fuchsia.component.PersistenceBinder",
"fuchsia.component.SamplerBinder",
],
from: "parent",
to: "#archivist",
// Weak to resolve dependency cycles
dependency: "weak",
},
{
protocol: [ "fuchsia.component.DetectBinder" ],
from: "parent",
to: "#archivist",
dependency: "weak",
availability: "same_as_target",
},
// Optional services from appmgr
{
protocol: [
"fuchsia.sys.internal.ComponentEventProvider",
"fuchsia.sys.internal.LogConnector",
],
from: "parent",
to: "#archivist",
dependency: "weak_for_migration",
availability: "optional",
},
// Configuration
{
directory: "boot",
from: "parent",
as: "config-data",
to: "#archivist",
rights: [ "r*" ],
subdir: "config/archivist",
},
// -- End Archivist offers --
{
protocol: "fuchsia.boot.Arguments",
from: "parent",
to: "#base_resolver",
},
{
directory: "blob-exec",
from: "#fshost",
to: [
"#base_resolver",
"#pkg-cache",
],
},
{
protocol: "fuchsia.boot.Arguments",
from: "parent",
to: "#pkg-cache",
},
{
protocol: "fuchsia.logger.LogSink",
from: "#archivist",
to: "#pkg-cache",
},
{
protocol: "fuchsia.inspect.InspectSink",
from: "#archivist",
to: "#pkg-cache",
},
{
protocol: [
"fuchsia.metrics.MetricEventLoggerFactory",
"fuchsia.update.CommitStatusProvider",
],
from: "parent",
to: "#pkg-cache",
dependency: "weak",
},
// Full resolver dependencies
{
protocol: "fuchsia.pkg.PackageResolver",
from: "parent",
to: "#full_resolver",
},
{
protocol: "fuchsia.logger.LogSink",
from: "#archivist",
to: "#full_resolver",
},
{
protocol: "fuchsia.inspect.InspectSink",
from: "#archivist",
to: "#full_resolver",
},
],
expose: [
{
directory: [
"build-info",
"config-data",
"pkgfs",
"root-ssl-certificates",
"system",
],
from: "#pkg-cache",
},
{
directory: "shell-commands-bin",
from: "#base_resolver",
as: "bin",
},
{
directory: [
"dev-builtin",
"dev-class",
"dev-topological",
],
from: "#devfs-with-pkg",
},
{
directory: [
"blob",
"data",
"factory",
"tmp",
],
from: "#fshost",
},
{
protocol: "fuchsia.pkg.PackageResolver",
from: "#base_resolver",
as: "fuchsia.pkg.PackageResolver-base",
},
{
protocol: [
"fuchsia.fshost.Admin",
"fuchsia.fshost.BlockWatcher",
],
from: "#fshost",
},
{
protocol: "fuchsia.update.verify.BlobfsVerifier",
from: "#fshost",
},
{
protocol: "fuchsia.fxfs.Volumes",
from: "#fshost",
},
{
protocol: "fuchsia.device.NameProvider",
from: "#device_name_provider",
},
{
protocol: [
"fuchsia.driver.development.DriverDevelopment",
"fuchsia.hardware.usb.DeviceWatcher",
],
from: "#driver_manager",
},
{
protocol: "fuchsia.driver.registrar.DriverRegistrar",
from: "#driver_index",
},
{
protocol: [ "fuchsia.vboot.FirmwareParam" ],
from: "#vboot-fwparam",
},
{
protocol: [ "fuchsia.virtualconsole.SessionManager" ],
from: "#virtual_console",
},
{
protocol: [
"fuchsia.tpm.cr50.Cr50",
"fuchsia.tpm.cr50.PinWeaver",
],
from: "#cr50_agent",
},
{
protocol: "fuchsia.hardware.power.statecontrol.Admin",
from: "#shutdown_shim",
},
{
protocol: "fuchsia.hardware.pty.Device",
from: "#ptysvc",
},
{
protocol: [
"fuchsia.kernel.Counter",
"fuchsia.paver.Paver",
"fuchsia.sysmem.Allocator",
"fuchsia.sysmem2.Allocator",
],
from: "#miscsvc",
},
{
protocol: "fuchsia.power.button.Monitor",
from: "#pwrbtn-monitor",
},
{
protocol: "fuchsia.sysinfo.SysInfo",
from: "#sysinfo",
},
{
protocol: [
"fuchsia.hardware.power.statecontrol.RebootMethodsWatcherRegister",
"fuchsia.power.clientlevel.Connector",
"fuchsia.power.profile.Watcher",
"fuchsia.power.systemmode.ClientConfigurator",
"fuchsia.power.systemmode.Requester",
"fuchsia.thermal.ClientStateConnector",
],
from: "#power_manager",
},
{
protocol: [
"fuchsia.diagnostics.ArchiveAccessor",
"fuchsia.diagnostics.FeedbackArchiveAccessor",
"fuchsia.diagnostics.LegacyMetricsArchiveAccessor",
"fuchsia.diagnostics.LoWPANArchiveAccessor",
"fuchsia.inspect.InspectSink",
"fuchsia.logger.Log",
"fuchsia.logger.LogSink",
],
from: "#archivist",
},
{
protocol: [
"fuchsia.kernel.DebugBroker",
"fuchsia.scheduler.ProfileProvider",
"fuchsia.tracing.kernel.Controller",
"fuchsia.tracing.kernel.Reader",
],
from: "#svchost",
},
{
resolver: "base_resolver",
from: "#base_resolver",
},
{
protocol: "fuchsia.nand.flashmap.Manager",
from: "#flashmap",
},
{
protocol: [
"fuchsia.pkg.PackageCache",
"fuchsia.pkg.RetainedPackages",
"fuchsia.space.Manager",
],
from: "#pkg-cache",
},
],
environments: [
{
name: "base-resolver-env",
extends: "realm",
resolvers: [
{
resolver: "base_resolver",
from: "#base_resolver",
scheme: "fuchsia-pkg",
},
],
},
{
name: "fshost-env",
extends: "realm",
// 20 minutes
__stop_timeout_ms: 1200000,
},
{
name: "driver_manager-env",
extends: "realm",
// 1 minute
__stop_timeout_ms: 60000,
},
{
name: "devfs-env",
extends: "realm",
// 1 minute
__stop_timeout_ms: 60000,
},
{
name: "driver-host-env",
extends: "realm",
// 2 seconds
__stop_timeout_ms: 2000,
},
{
name: "boot-driver-env",
extends: "none",
runners: [
{
runner: "driver",
from: "#driver_manager",
},
],
resolvers: [
{
resolver: "boot_resolver",
from: "parent",
scheme: "fuchsia-boot",
},
],
// 1 second
__stop_timeout_ms: 1000,
},
{
name: "pkg-driver-env",
extends: "none",
runners: [
{
runner: "driver",
from: "#driver_manager",
},
],
resolvers: [
{
resolver: "boot_resolver",
from: "parent",
scheme: "fuchsia-boot",
},
{
resolver: "base_resolver",
from: "#base_resolver",
scheme: "fuchsia-pkg",
},
],
// 1 second
__stop_timeout_ms: 1000,
},
{
name: "full-pkg-driver-env",
extends: "none",
runners: [
{
runner: "driver",
from: "#driver_manager",
},
],
resolvers: [
{
resolver: "boot_resolver",
from: "parent",
scheme: "fuchsia-boot",
},
{
resolver: "full-resolver",
from: "#full_resolver",
scheme: "fuchsia-pkg",
},
],
// 1 second
__stop_timeout_ms: 1000,
},
],
}