blob: 6e27f02e14bde9625ac0b4f45c0833f6a798319e [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:///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",
},
{
name: "toolbox",
url: "fuchsia-boot:///toolbox#meta/toolbox.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.driver.BaseDrivers",
"fuchsia.driver.BindEager",
"fuchsia.driver.BootDrivers",
"fuchsia.driver.DelayFallbackUntilBaseDriversIndexed",
"fuchsia.driver.DisabledDrivers",
"fuchsia.driver.DriverLoadFuzzerMaxDelayMs",
"fuchsia.driver.EnableDriverLoadFuzzer",
"fuchsia.driver.EnableEphemeralDrivers",
"fuchsia.driver.manager.DelayFallbackUntilBaseDriversLoaded",
"fuchsia.driver.manager.EnableTestShutdownDelays",
"fuchsia.driver.manager.RootDriver",
"fuchsia.driver.UseHardwareIommu",
"fuchsia.fshost.Blobfs",
"fuchsia.fshost.BlobfsInitialInodes",
"fuchsia.fshost.BlobfsMaxBytes",
"fuchsia.fshost.BlobfsUseDeprecatedPaddedFormat",
"fuchsia.fshost.BootPart",
"fuchsia.fshost.CheckFilesystems",
"fuchsia.fshost.Data",
"fuchsia.fshost.DataFilesystemFormat",
"fuchsia.fshost.DataMaxBytes",
"fuchsia.fshost.DisableBlockWatcher",
"fuchsia.fshost.Factory",
"fuchsia.fshost.FormatDataOnCorruption",
"fuchsia.fshost.Fvm",
"fuchsia.fshost.FvmSliceSize",
"fuchsia.fshost.FxfsBlob",
"fuchsia.fshost.FxfsCryptUrl",
"fuchsia.fshost.Gpt",
"fuchsia.fshost.GptAll",
"fuchsia.fshost.InlineCrypto",
"fuchsia.fshost.Mbr",
"fuchsia.fshost.MergeSuperAndUserdata",
"fuchsia.fshost.NoZxcrypt",
"fuchsia.fshost.ProvisionFxfs",
"fuchsia.fshost.RamdiskImage",
"fuchsia.fshost.StarnixVolumeName",
"fuchsia.fshost.StorageHost",
"fuchsia.fshost.UseDiskMigration",
"fuchsia.fshost.WatchDeprecatedV1Drivers",
"fuchsia.pkgcache.AllPackagesExecutable",
"fuchsia.pkgcache.EnableUpgradablePackages",
"fuchsia.pkgcache.UseSystemImage",
"fuchsia.platform.bus.SoftwareDeviceIds",
"fuchsia.platform.bus.SoftwareDeviceNames",
"fuchsia.power.cpu.BoostEnabled",
"fuchsia.power.StoragePowerManagementEnabled",
"fuchsia.power.SuspendEnabled",
"fuchsia.power.UseSuspender",
"fuchsia.power.WaitForSuspendingToken",
"fuchsia.starnix.mcu.ExpectReady",
"fuchsia.ui.EnableButtonBatonPassing",
"fuchsia.ui.EnableMouseBatonPassing",
"fuchsia.ui.EnableTouchBatonPassing",
"fuchsia.usb.PeripheralConfig.Functions",
],
from: "#config",
to: "#bootstrap",
},
{
config: [
"fuchsia.blobfs.CacheEvictionPolicy",
"fuchsia.blobfs.WriteCompressionAlgorithm",
"fuchsia.driver.index.StopOnIdleTimeoutMillis",
"fuchsia.fshost.DisableAutomount",
"fuchsia.network.PrimaryInterface",
"fuchsia.sysmem.ContiguousGuardPagesUnused",
"fuchsia.sysmem.FixedContiguousMemorySize",
"fuchsia.sysmem.FixedProtectedMemorySize",
"fuchsia.sysmem.PercentContiguousMemorySize",
"fuchsia.sysmem.PercentProtectedMemorySize",
"fuchsia.ui.VisualDebuggingLevel",
"fuchsia.virtcon.BootAnimation",
"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.MexecResource",
"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.resolution.Resolver-full",
"fuchsia.component.SamplerBinder",
"fuchsia.exception.Handler",
"fuchsia.feedback.ComponentDataRegister",
"fuchsia.feedback.CrashReporter",
"fuchsia.feedback.DataProvider",
"fuchsia.metrics.MetricEventLoggerFactory",
"fuchsia.pkg.PackageResolver",
"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.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.sys2.ConfigOverride",
from: "framework",
as: "fuchsia.sys2.ConfigOverride.root",
to: "#toolbox",
},
{
protocol: "fuchsia.sys2.RealmQuery",
from: "framework",
as: "fuchsia.sys2.RealmQuery.root",
to: "#toolbox",
},
{
protocol: "fuchsia.sys2.LifecycleController",
from: "framework",
as: "fuchsia.sys2.LifecycleController.root",
to: "#toolbox",
},
{
protocol: "fuchsia.sys2.RouteValidator",
from: "framework",
as: "fuchsia.sys2.RouteValidator.root",
to: "#toolbox",
},
{
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",
},
{
service: [ "fuchsia.hardware.rtc.Service" ],
from: "#bootstrap",
to: "#toolbox",
},
],
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",
},
],
},
],
}