blob: ca34d38f79fd6445759eb6b69ff319567d829f00 [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: "bootstrap",
url: "fuchsia-boot:///#meta/bootstrap.cm",
startup: "eager",
},
{
name: "startup",
url: "fuchsia-boot:///#meta/startup.cm",
startup: "eager",
},
],
offer: [
{
protocol: [
"fuchsia.appmgr.Startup",
"fuchsia.sessionmanager.Startup",
],
from: "#core",
to: "#startup",
},
{
protocol: "fuchsia.component.Binder",
from: "#core",
as: "fuchsia.component.CoreBinder",
to: "#startup",
},
{
protocol: "fuchsia.logger.LogSink",
from: "#bootstrap",
to: "#startup",
},
// Capabilities routed from "parent" at the root are either provided by
// bootsvc through component_manager's namespace or by component_manager
// itself as a builtin service
{
directory: "boot",
from: "parent",
to: [
"#bootstrap",
"#core",
],
},
{
protocol: [
"fuchsia.boot.Arguments",
"fuchsia.boot.FactoryItems",
"fuchsia.boot.Items",
"fuchsia.boot.ReadOnlyLog",
"fuchsia.boot.RootResource",
"fuchsia.boot.WriteOnlyLog",
"fuchsia.kernel.CpuResource",
"fuchsia.kernel.DebugResource",
"fuchsia.kernel.HypervisorResource",
"fuchsia.kernel.InfoResource",
"fuchsia.kernel.IoportResource",
"fuchsia.kernel.IrqResource",
"fuchsia.kernel.MmioResource",
"fuchsia.kernel.PowerResource",
"fuchsia.kernel.RootJob",
"fuchsia.kernel.RootJobForInspect",
"fuchsia.kernel.SmcResource",
"fuchsia.kernel.Stats",
"fuchsia.kernel.VmexResource",
"fuchsia.process.Launcher",
"fuchsia.sys2.CrashIntrospect",
],
from: "parent",
to: [
"#bootstrap",
"#core",
],
},
{
protocol: [
"fuchsia.sys2.EventSource",
"fuchsia.time.Maintenance",
],
from: "parent",
to: "#core",
},
{
protocol: [ "fuchsia.sys2.SystemController" ],
from: "parent",
to: "#bootstrap",
},
// ...and the rest of these are capabilities provided by components for each other
{
directory: [
"bin",
"blob",
"build-info",
"config-data",
"dev",
"durable",
"factory",
"minfs",
"mnt",
"pkgfs",
"root-ssl-certificates",
"system",
"tmp",
],
from: "#bootstrap",
to: "#core",
},
// Non-zircon services for svchost
{
protocol: [
"fuchsia.device.manager.Administrator",
"fuchsia.device.manager.DebugDumper",
"fuchsia.device.NameProvider",
"fuchsia.diagnostics.ArchiveAccessor",
"fuchsia.diagnostics.FeedbackArchiveAccessor",
"fuchsia.diagnostics.LegacyMetricsArchiveAccessor",
"fuchsia.driver.development.DriverDevelopment",
"fuchsia.driver.registrar.DriverRegistrar",
"fuchsia.fshost.BlockWatcher",
"fuchsia.hardware.power.statecontrol.Admin",
"fuchsia.hardware.power.statecontrol.RebootMethodsWatcherRegister",
"fuchsia.hardware.pty.Device",
"fuchsia.hardware.usb.DeviceWatcher",
"fuchsia.kernel.Counter",
"fuchsia.kernel.DebugBroker",
"fuchsia.logger.Log",
"fuchsia.logger.LogSink",
"fuchsia.paver.Paver",
"fuchsia.pkg.PackageCache",
"fuchsia.pkg.RetainedPackages",
"fuchsia.power.button.Monitor",
"fuchsia.power.clientlevel.Connector",
"fuchsia.power.profile.Watcher",
"fuchsia.power.systemmode.ClientConfigurator",
"fuchsia.power.systemmode.Requester",
"fuchsia.scheduler.ProfileProvider",
"fuchsia.space.Manager",
"fuchsia.sysinfo.SysInfo",
"fuchsia.sysmem.Allocator",
"fuchsia.thermal.ClientStateConnector",
"fuchsia.tpm.cr50.Cr50",
"fuchsia.tpm.cr50.PinWeaver",
"fuchsia.tracing.kernel.Controller",
"fuchsia.tracing.kernel.Reader",
"fuchsia.update.verify.BlobfsVerifier",
"fuchsia.vboot.FirmwareParam",
"fuchsia.virtualconsole.SessionManager",
],
from: "#bootstrap",
to: "#core",
},
// Non-zircon services for archivist and svchost
{
protocol: [
"fuchsia.cobalt.LoggerFactory",
"fuchsia.component.DetectBinder",
"fuchsia.component.KcounterBinder",
"fuchsia.component.LogStatsBinder",
"fuchsia.component.PersistenceBinder",
"fuchsia.component.SamplerBinder",
"fuchsia.exception.Handler",
"fuchsia.feedback.CrashReporter",
"fuchsia.metrics.MetricEventLoggerFactory",
"fuchsia.pkg.PackageResolver",
"fuchsia.pkg.RepositoryManager",
"fuchsia.pkg.rewrite.Engine",
"fuchsia.process.Resolver",
"fuchsia.settings.Input",
"fuchsia.sys.Environment",
"fuchsia.sys.internal.ComponentEventProvider",
"fuchsia.sys.internal.LogConnector",
"fuchsia.sys.Launcher",
"fuchsia.sys.Loader",
"fuchsia.tracing.controller.Controller",
"fuchsia.tracing.provider.Registry",
"fuchsia.ui.activity.Provider",
"fuchsia.update.CommitStatusProvider",
"fuchsia.virtualization.DebianGuestManager",
"fuchsia.virtualization.LinuxManager",
"fuchsia.virtualization.TerminaGuestManager",
"fuchsia.virtualization.ZirconGuestManager",
],
from: "#core",
to: "#bootstrap",
dependency: "weak_for_migration",
},
// driver_manager needs the v1 hub for the serial console
{
directory: "hub-legacy",
from: "#core",
to: "#bootstrap",
dependency: "weak_for_migration",
},
// RCS uses the root hub for service discovery.
{
directory: "hub",
from: "framework",
to: [
"#bootstrap",
"#core",
],
},
{
protocol: "fuchsia.sys2.RealmExplorer",
from: "framework",
as: "fuchsia.sys2.RealmExplorer.root",
to: "#core",
},
{
protocol: "fuchsia.sys2.RealmQuery",
from: "framework",
as: "fuchsia.sys2.RealmQuery.root",
to: "#core",
},
{
protocol: "fuchsia.sys2.LifecycleController",
from: "framework",
as: "fuchsia.sys2.LifecycleController.root",
to: "#core",
},
{
protocol: "fuchsia.sys2.RouteValidator",
from: "framework",
as: "fuchsia.sys2.RouteValidator.root",
to: "#core",
},
// Offer events to `bootstrap` for diagnostics usage.
{
event: [
"running",
"started",
"stopped",
],
from: "framework",
to: "#bootstrap",
},
{
event: "directory_ready",
from: "parent",
to: "#bootstrap",
filter: { name: "diagnostics" },
},
{
event: "capability_requested",
from: "framework",
to: "#bootstrap",
filter: { name: "fuchsia.logger.LogSink" },
},
{
protocol: [ "fuchsia.sys2.EventSource" ],
from: "parent",
to: "#bootstrap",
},
{
protocol: [ "fuchsia.component.resolution.Resolver" ],
from: "#bootstrap",
to: "#core",
},
// Offer boot resolver to `bootstrap` for driver usage.
{
resolver: "boot_resolver",
from: "parent",
to: "#bootstrap",
},
],
expose: [
// For reboot_on_terminate
{
protocol: "fuchsia.hardware.power.statecontrol.Admin",
from: "#bootstrap",
},
],
environments: [
{
name: "core-env",
extends: "realm",
resolvers: [
{
resolver: "base_resolver",
from: "#bootstrap",
scheme: "fuchsia-pkg",
},
],
},
],
}