| { |
| children: [ |
| { |
| name: "bootstrap", |
| url: "fuchsia-boot:///#meta/bootstrap.cm", |
| startup: "eager", |
| }, |
| { |
| name: "core", |
| url: "fuchsia-pkg://fuchsia.com/core#meta/core.cm", |
| environment: "#core-env", |
| }, |
| { |
| name: "startup", |
| url: "fuchsia-boot:///#meta/startup.cm", |
| startup: "eager", |
| }, |
| ], |
| offer: [ |
| { |
| protocol: [ "fuchsia.appmgr.Startup" ], |
| from: "#core", |
| 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.DebugResource", |
| "fuchsia.kernel.HypervisorResource", |
| "fuchsia.kernel.InfoResource", |
| "fuchsia.kernel.IoportResource", |
| "fuchsia.kernel.IrqResource", |
| "fuchsia.kernel.MmioResource", |
| "fuchsia.kernel.RootJob", |
| "fuchsia.kernel.RootJobForInspect", |
| "fuchsia.kernel.SmcResource", |
| "fuchsia.kernel.Stats", |
| "fuchsia.kernel.VmexResource", |
| "fuchsia.process.Launcher", |
| ], |
| from: "parent", |
| to: [ |
| "#bootstrap", |
| "#core", |
| ], |
| }, |
| { |
| protocol: [ |
| "fuchsia.sys2.BlockingEventSource", |
| "fuchsia.sys2.EventSource", |
| "fuchsia.time.Maintenance", |
| ], |
| from: "parent", |
| to: [ "#core" ], |
| }, |
| { |
| protocol: [ "fuchsia.sys2.SystemController" ], |
| from: "parent", |
| to: [ "#bootstrap" ], |
| }, |
| |
| // ...and the rest of these are services provided by components for each other |
| { |
| directory: "dev", |
| from: "#bootstrap", |
| to: [ "#core" ], |
| }, |
| { |
| directory: "durable", |
| from: "#bootstrap", |
| to: [ "#core" ], |
| }, |
| { |
| directory: "factory", |
| from: "#bootstrap", |
| to: [ "#core" ], |
| }, |
| { |
| directory: "minfs", |
| from: "#bootstrap", |
| to: [ "#core" ], |
| }, |
| { |
| directory: "pkgfs", |
| from: "#bootstrap", |
| to: [ "#core" ], |
| }, |
| { |
| directory: "config-data", |
| from: "#bootstrap", |
| to: [ "#core" ], |
| }, |
| { |
| directory: "system", |
| from: "#bootstrap", |
| to: [ "#core" ], |
| }, |
| { |
| directory: "blob", |
| from: "#bootstrap", |
| to: [ "#core" ], |
| }, |
| { |
| directory: "tmp", |
| from: "#bootstrap", |
| to: [ "#core" ], |
| }, |
| |
| // Non-zircon services for svchost |
| { |
| protocol: [ |
| "fuchsia.device.manager.Administrator", |
| "fuchsia.device.manager.BindDebugger", |
| "fuchsia.device.manager.DebugDumper", |
| "fuchsia.device.NameProvider", |
| "fuchsia.diagnostics.ArchiveAccessor", |
| "fuchsia.diagnostics.FeedbackArchiveAccessor", |
| "fuchsia.diagnostics.LegacyMetricsArchiveAccessor", |
| "fuchsia.hardware.power.statecontrol.Admin", |
| "fuchsia.hardware.power.statecontrol.RebootMethodsWatcherRegister", |
| "fuchsia.hardware.pty.Device", |
| "fuchsia.kernel.Counter", |
| "fuchsia.kernel.DebugBroker", |
| "fuchsia.logger.Log", |
| "fuchsia.logger.LogSink", |
| "fuchsia.paver.Paver", |
| "fuchsia.scheduler.ProfileProvider", |
| "fuchsia.sysinfo.SysInfo", |
| "fuchsia.thermal.Controller", |
| "fuchsia.tracing.kernel.Controller", |
| "fuchsia.tracing.kernel.Reader", |
| "fuchsia.virtualconsole.SessionManager", |
| ], |
| from: "#bootstrap", |
| to: [ "#core" ], |
| }, |
| |
| // Non-zircon services for archivist and svchost |
| { |
| protocol: [ |
| "fuchsia.amber.Control", |
| "fuchsia.cobalt.LoggerFactory", |
| "fuchsia.diagnostics.internal.DetectController", |
| "fuchsia.diagnostics.internal.LogStatsController", |
| "fuchsia.diagnostics.internal.SamplerController", |
| "fuchsia.exception.Handler", |
| "fuchsia.feedback.CrashReporter", |
| "fuchsia.metrics.MetricEventLoggerFactory", |
| "fuchsia.net.NameLookup", |
| "fuchsia.net.stack.Log", |
| "fuchsia.net.stack.Stack", |
| "fuchsia.netstack.Netstack", |
| "fuchsia.pkg.PackageResolver", |
| "fuchsia.pkg.RepositoryManager", |
| "fuchsia.pkg.rewrite.Engine", |
| "fuchsia.posix.socket.Provider", |
| "fuchsia.process.Resolver", |
| "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", |
| ], |
| from: "#core", |
| to: [ "#bootstrap" ], |
| dependency: "weak_for_migration", |
| }, |
| |
| // driver_manager needs the v1 hub for the serial console |
| { |
| directory: "hub", |
| from: "#core", |
| to: [ "#bootstrap" ], |
| dependency: "weak_for_migration", |
| }, |
| |
| // RCS uses the root hub for service discovery. |
| { |
| directory: "hub", |
| from: "framework", |
| to: [ "#core" ], |
| }, |
| |
| // Offer events to `bootstrap` for diagnostics usage. |
| { |
| event: [ |
| "running", |
| "started", |
| "stopped", |
| ], |
| from: "framework", |
| to: [ "#bootstrap" ], |
| modes: [ "async" ], |
| }, |
| { |
| event: "capability_ready", |
| from: "framework", |
| to: [ "#bootstrap" ], |
| filter: { name: "diagnostics" }, |
| modes: [ "async" ], |
| }, |
| { |
| event: "capability_requested", |
| from: "framework", |
| to: [ "#bootstrap" ], |
| filter: { name: "fuchsia.logger.LogSink" }, |
| }, |
| { |
| protocol: [ "fuchsia.sys2.EventSource" ], |
| from: "parent", |
| to: [ "#bootstrap" ], |
| }, |
| ], |
| environments: [ |
| { |
| name: "core-env", |
| extends: "realm", |
| resolvers: [ |
| { |
| resolver: "base_resolver", |
| scheme: "fuchsia-pkg", |
| from: "#bootstrap", |
| }, |
| ], |
| __stop_timeout_ms: 60000, |
| }, |
| ], |
| } |