| // 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:///bootstrap#meta/bootstrap.cm", | |
| startup: "eager", | |
| environment: "#elf-env", | |
| }, | |
| { | |
| name: "elf_runner", | |
| url: "fuchsia-builtin://#elf_runner.cm", | |
| }, | |
| { | |
| name: "config", | |
| url: "fuchsia-boot:///config#meta/config.cm", | |
| }, | |
| ], | |
| offer: [ | |
| { | |
| config: [ | |
| "fuchsia.diagnostics.AllowSerialLogs", | |
| "fuchsia.diagnostics.BindServices", | |
| "fuchsia.diagnostics.ComponentInitialInterests", | |
| "fuchsia.diagnostics.DenySerialLogs", | |
| "fuchsia.diagnostics.ExceptionHandlerAvailable", | |
| "fuchsia.diagnostics.LogsMaxCachedOriginalBytes", | |
| "fuchsia.diagnostics.MaximumConcurrentSnapshotsPerReader", | |
| "fuchsia.display.FallbackHorizontalSizeMm", | |
| "fuchsia.display.FallbackVerticalSizeMm", | |
| "fuchsia.driver.BaseDrivers", | |
| "fuchsia.driver.BindEager", | |
| "fuchsia.driver.BootDrivers", | |
| "fuchsia.driver.DelayFallbackUntilBaseDriversIndexed", | |
| "fuchsia.driver.devicetree.EnabledNodes", | |
| "fuchsia.driver.DisabledDrivers", | |
| "fuchsia.driver.DriverLoadFuzzerMaxDelayMs", | |
| "fuchsia.driver.EnableDriverLoadFuzzer", | |
| "fuchsia.driver.EnableEphemeralDrivers", | |
| "fuchsia.driver.ExposeDebugCapabilities", | |
| "fuchsia.driver.manager.DelayFallbackUntilBaseDriversLoaded", | |
| "fuchsia.driver.manager.EnableTestShutdownDelays", | |
| "fuchsia.driver.manager.RootDriver", | |
| "fuchsia.driver.UseHardwareIommu", | |
| "fuchsia.pkgcache.AllPackagesExecutable", | |
| "fuchsia.pkgcache.EnableUpgradablePackages", | |
| "fuchsia.pkgcache.RequireSystemImage", | |
| "fuchsia.pkgcache.UseDriverBlobPaging", | |
| "fuchsia.platform.bus.SoftwareDeviceIds", | |
| "fuchsia.platform.bus.SoftwareDeviceNames", | |
| "fuchsia.power.cpu.BoostEnabled", | |
| "fuchsia.power.DeepSuspendEnabled", | |
| "fuchsia.power.GpuPowerManagementEnabled", | |
| "fuchsia.power.LongWakeLeaseTimeout", | |
| "fuchsia.power.PowerFrameworkEnabledForWlanDriver", | |
| "fuchsia.power.RebootOnStalledSuspendBlocker", | |
| "fuchsia.power.RuntimeProcessorPowerManagementEnabled", | |
| "fuchsia.power.StoragePowerManagementEnabled", | |
| "fuchsia.power.SuspendEnabled", | |
| "fuchsia.power.SuspendResumeStuckWarningTimeout", | |
| "fuchsia.power.UseSuspender", | |
| "fuchsia.power.WaitForSuspendingToken", | |
| "fuchsia.starnix.fastrpc.ExpectReady", | |
| "fuchsia.starnix.mcu.ExpectReady", | |
| "fuchsia.storage.SdmmcCommandQueueingEnabled", | |
| "fuchsia.ui.EnableMergeTouchEvents", | |
| "fuchsia.usb.PeripheralConfig.Functions", | |
| ], | |
| from: "#config", | |
| to: "#bootstrap", | |
| }, | |
| { | |
| config: [ | |
| "fuchsia.device.BootItemInterfaceFlipLowMacBit", | |
| "fuchsia.device.BootItemInterfaceForNodeName", | |
| "fuchsia.driver.index.StopOnIdleTimeoutMillis", | |
| "fuchsia.network.PrimaryInterface", | |
| "fuchsia.sysmem.ContiguousGuardPagesUnused", | |
| "fuchsia.sysmem.FixedContiguousMemorySize", | |
| "fuchsia.sysmem.FixedProtectedMemorySize", | |
| "fuchsia.sysmem.PercentContiguousMemorySize", | |
| "fuchsia.sysmem.PercentProtectedMemorySize", | |
| "fuchsia.ui.VisualDebuggingLevel", | |
| "fuchsia.virtcon.BufferCount", | |
| "fuchsia.virtcon.ColorScheme", | |
| "fuchsia.virtcon.Disable", | |
| "fuchsia.virtcon.DisplayRotation", | |
| "fuchsia.virtcon.DotsPerInch", | |
| "fuchsia.virtcon.FontSize", | |
| "fuchsia.virtcon.KeepLogVisible", | |
| "fuchsia.virtcon.KeyMap", | |
| "fuchsia.virtcon.KeyRepeat", | |
| "fuchsia.virtcon.RoundedCorners", | |
| "fuchsia.virtcon.ScrollbackRows", | |
| "fuchsia.virtcon.ShowLogo", | |
| ], | |
| from: "#config", | |
| to: "#bootstrap", | |
| availability: "optional", | |
| }, | |
| { | |
| protocol: "fuchsia.process.Launcher", | |
| from: "parent", | |
| to: "#elf_runner", | |
| }, | |
| // 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", | |
| }, | |
| { | |
| protocol: [ | |
| "fuchsia.boot.Arguments", | |
| "fuchsia.boot.FactoryItems", | |
| "fuchsia.boot.Items", | |
| "fuchsia.boot.ReadOnlyLog", | |
| "fuchsia.boot.SvcStashProvider", | |
| "fuchsia.boot.WriteOnlyLog", | |
| "fuchsia.kernel.CpuResource", | |
| "fuchsia.kernel.DebuglogResource", | |
| "fuchsia.kernel.DebugResource", | |
| "fuchsia.kernel.EnergyInfoResource", | |
| "fuchsia.kernel.HypervisorResource", | |
| "fuchsia.kernel.InfoResource", | |
| "fuchsia.kernel.IommuResource", | |
| "fuchsia.kernel.IoportResource", | |
| "fuchsia.kernel.IrqResource", | |
| "fuchsia.kernel.MmioResource", | |
| "fuchsia.kernel.MsiResource", | |
| "fuchsia.kernel.PowerResource", | |
| "fuchsia.kernel.ProfileResource", | |
| "fuchsia.kernel.RootJob", | |
| "fuchsia.kernel.RootJobForInspect", | |
| "fuchsia.kernel.SamplingResource", | |
| "fuchsia.kernel.SmcResource", | |
| "fuchsia.kernel.Stats", | |
| "fuchsia.kernel.TracingResource", | |
| "fuchsia.kernel.VmexResource", | |
| "fuchsia.pkg.PackageResolver-boot", | |
| "fuchsia.process.Launcher", | |
| "fuchsia.sys2.CrashIntrospect", | |
| "fuchsia.update.verify.HealthVerification", | |
| ], | |
| from: "parent", | |
| to: "#bootstrap", | |
| }, | |
| { | |
| event_stream: [ | |
| "capability_requested", | |
| "debug_started", | |
| "destroyed", | |
| "started", | |
| "stopped", | |
| ], | |
| from: "parent", | |
| to: "#bootstrap", | |
| }, | |
| { | |
| protocol: [ | |
| "fuchsia.net.name.Lookup", | |
| "fuchsia.posix.socket.Provider", | |
| ], | |
| from: "#core", | |
| to: "#bootstrap", | |
| dependency: "weak", | |
| source_availability: "unknown", | |
| }, | |
| { | |
| protocol: [ | |
| "fuchsia.component.resolution.Resolver", | |
| "fuchsia.sys2.SystemController", | |
| ], | |
| from: "parent", | |
| to: "#bootstrap", | |
| }, | |
| // Non-zircon services for archivist, pwrbtn-monitor, sysmem and console. | |
| { | |
| protocol: [ | |
| "fuchsia.component.PersistenceBinder", | |
| "fuchsia.component.SamplerBinder", | |
| "fuchsia.exception.Handler", | |
| "fuchsia.feedback.ComponentDataRegister", | |
| "fuchsia.feedback.CrashReporter", | |
| "fuchsia.feedback.DataProvider", | |
| "fuchsia.metrics.MetricEventLoggerFactory", | |
| "fuchsia.pkg.RepositoryManager", | |
| "fuchsia.pkg.rewrite.Engine", | |
| "fuchsia.settings.Input", | |
| "fuchsia.ui.activity.Provider", | |
| "fuchsia.update.CommitStatusProvider", | |
| ], | |
| from: "#core", | |
| to: "#bootstrap", | |
| dependency: "weak", | |
| source_availability: "unknown", | |
| }, | |
| { | |
| protocol: [ "fuchsia.memorypressure.Provider" ], | |
| from: "#core", | |
| to: "#bootstrap", | |
| dependency: "weak", | |
| availability: "optional", | |
| source_availability: "unknown", | |
| }, | |
| // TODO(https://fxbug.dev/324494668): remove this when Netstack2 is gone. | |
| { | |
| directory: "netstack-diagnostics", | |
| from: "#core", | |
| to: "#bootstrap", | |
| dependency: "weak", | |
| availability: "optional", | |
| source_availability: "unknown", | |
| }, | |
| // Trace manager may be excluded from builds where tracing is not | |
| // expected to be used for observability, such as in the bringup | |
| // product and non-eng builds of any product. | |
| { | |
| protocol: [ | |
| "fuchsia.tracing.controller.Provisioner", | |
| "fuchsia.tracing.provider.Registry", | |
| ], | |
| from: "#core", | |
| to: "#bootstrap", | |
| dependency: "weak", | |
| availability: "optional", | |
| source_availability: "unknown", | |
| }, | |
| { | |
| protocol: [ | |
| "fuchsia.virtualization.DebianGuestManager", | |
| "fuchsia.virtualization.LinuxManager", | |
| "fuchsia.virtualization.TerminaGuestManager", | |
| "fuchsia.virtualization.ZirconGuestManager", | |
| ], | |
| from: "#core", | |
| to: "#bootstrap", | |
| dependency: "weak", | |
| availability: "optional", | |
| source_availability: "unknown", | |
| }, | |
| { | |
| protocol: [ | |
| "fuchsia.power.battery.BatteryManager", | |
| "fuchsia.power.topology.test.SystemActivityControl", | |
| ], | |
| from: "#core", | |
| to: "#bootstrap", | |
| dependency: "weak", | |
| availability: "optional", | |
| source_availability: "unknown", | |
| }, | |
| { | |
| protocol: "fuchsia.sys2.RealmExplorer", | |
| from: "framework", | |
| as: "fuchsia.sys2.RealmExplorer.root", | |
| to: "#bootstrap", | |
| }, | |
| { | |
| protocol: "fuchsia.sys2.RealmQuery", | |
| from: "framework", | |
| as: "fuchsia.sys2.RealmQuery.root", | |
| to: "#bootstrap", | |
| }, | |
| { | |
| protocol: "fuchsia.component.Introspector", | |
| from: "framework", | |
| as: "fuchsia.component.Introspector.root", | |
| to: "#bootstrap", | |
| }, | |
| { | |
| protocol: "fuchsia.sys2.LifecycleController", | |
| from: "framework", | |
| as: "fuchsia.sys2.LifecycleController.root", | |
| to: "#bootstrap", | |
| }, | |
| { | |
| protocol: "fuchsia.sys2.RouteValidator", | |
| from: "framework", | |
| as: "fuchsia.sys2.RouteValidator.root", | |
| to: "#bootstrap", | |
| }, | |
| { | |
| protocol: "fuchsia.sys2.ConfigOverride", | |
| from: "framework", | |
| as: "fuchsia.sys2.ConfigOverride.root", | |
| to: "#bootstrap", | |
| }, | |
| { | |
| protocol: "fuchsia.process.Launcher", | |
| from: "parent", | |
| to: "self/toolbox-root", | |
| target_availability: "unknown", | |
| }, | |
| { | |
| directory: "boot", | |
| from: "parent", | |
| to: "self/toolbox-root-directories", | |
| target_availability: "unknown", | |
| }, | |
| { | |
| protocol: "fuchsia.sys2.RealmExplorer", | |
| from: "framework", | |
| as: "fuchsia.sys2.RealmExplorer.root", | |
| to: "self/toolbox-root", | |
| target_availability: "unknown", | |
| }, | |
| { | |
| protocol: "fuchsia.sys2.ConfigOverride", | |
| from: "framework", | |
| as: "fuchsia.sys2.ConfigOverride.root", | |
| to: "self/toolbox-root", | |
| target_availability: "unknown", | |
| }, | |
| { | |
| protocol: "fuchsia.sys2.RealmQuery", | |
| from: "framework", | |
| as: "fuchsia.sys2.RealmQuery.root", | |
| to: "self/toolbox-root", | |
| target_availability: "unknown", | |
| }, | |
| { | |
| protocol: "fuchsia.sys2.LifecycleController", | |
| from: "framework", | |
| as: "fuchsia.sys2.LifecycleController.root", | |
| to: "self/toolbox-root", | |
| target_availability: "unknown", | |
| }, | |
| { | |
| protocol: "fuchsia.sys2.RouteValidator", | |
| from: "framework", | |
| as: "fuchsia.sys2.RouteValidator.root", | |
| to: "self/toolbox-root", | |
| target_availability: "unknown", | |
| }, | |
| { | |
| runner: [ | |
| "builtin_devfs", | |
| "builtin_shutdown_shim", | |
| ], | |
| from: "parent", | |
| to: "#bootstrap", | |
| }, | |
| // Offer boot resolver to `bootstrap` for driver usage. | |
| { | |
| resolver: "boot_resolver", | |
| from: "parent", | |
| to: "#bootstrap", | |
| }, | |
| { | |
| dictionary: "toolbox", | |
| from: "#bootstrap", | |
| as: "toolbox-bootstrap", | |
| to: "#toolbox", | |
| target_availability: "unknown", | |
| }, | |
| { | |
| dictionary: "toolbox-directories", | |
| from: "#bootstrap", | |
| as: "toolbox-bootstrap-directories", | |
| to: "#toolbox", | |
| target_availability: "unknown", | |
| }, | |
| { | |
| dictionary: "diagnostics", | |
| from: "#bootstrap", | |
| to: "#toolbox", | |
| target_availability: "unknown", | |
| }, | |
| { | |
| runner: "elf", | |
| from: "#elf_runner", | |
| to: "#toolbox", | |
| target_availability: "unknown", | |
| }, | |
| { | |
| protocol: [ | |
| "fuchsia.boot.Arguments", | |
| "fuchsia.boot.FactoryItems", | |
| "fuchsia.boot.Items", | |
| "fuchsia.boot.ReadOnlyLog", | |
| "fuchsia.boot.WriteOnlyLog", | |
| "fuchsia.kernel.DebugResource", | |
| "fuchsia.kernel.HypervisorResource", | |
| "fuchsia.kernel.InfoResource", | |
| "fuchsia.kernel.IoportResource", | |
| "fuchsia.kernel.IrqResource", | |
| "fuchsia.kernel.MmioResource", | |
| "fuchsia.kernel.PowerResource", | |
| "fuchsia.kernel.ProfileResource", | |
| "fuchsia.kernel.RootJob", | |
| "fuchsia.kernel.RootJobForInspect", | |
| "fuchsia.kernel.SmcResource", | |
| "fuchsia.kernel.Stats", | |
| "fuchsia.kernel.TracingResource", | |
| "fuchsia.kernel.VmexResource", | |
| "fuchsia.sys2.CrashIntrospect", | |
| "fuchsia.time.Maintenance", | |
| ], | |
| from: "parent", | |
| to: "self/toolbox-root", | |
| target_availability: "unknown", | |
| }, | |
| ], | |
| expose: [ | |
| // For reboot_on_terminate | |
| { | |
| protocol: [ | |
| "fuchsia.hardware.power.statecontrol.Admin", | |
| "fuchsia.hardware.power.statecontrol.RebootMethodsWatcherRegister", | |
| ], | |
| from: "#bootstrap", | |
| }, | |
| ], | |
| environments: [ | |
| { | |
| name: "elf-env", | |
| extends: "realm", | |
| runners: [ | |
| { | |
| runner: "elf", | |
| from: "#elf_runner", | |
| }, | |
| ], | |
| }, | |
| ], | |
| } |