| // 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. |
| { |
| include: [ |
| "inspect/client.shard.cml", |
| "syslog/client.shard.cml", |
| ], |
| program: { |
| runner: "elf", |
| binary: "bin/appmgr", |
| |
| // Run appmgr in a job with ZX_POL_AMBIENT_MARK_VMO_EXEC job policy, so that it can in turn |
| // implement the v1 'deprecated-ambient-replace-as-executable' feature. |
| job_policy_ambient_mark_vmo_exec: "true", |
| lifecycle: { stop_event: "notify" }, |
| }, |
| capabilities: [ |
| { |
| directory: "hub-legacy", |
| rights: [ "rw*" ], |
| path: "/hub", |
| }, |
| |
| // These protocols exposed by appmgr are implemented by appmgr. |
| { |
| protocol: "fuchsia.appmgr.Startup", |
| path: "/appmgr_svc/fuchsia.appmgr.Startup", |
| }, |
| { |
| protocol: "fuchsia.sys.internal.LogConnector", |
| from: "self", |
| path: "/appmgr_svc/fuchsia.sys.internal.LogConnector", |
| }, |
| { |
| protocol: "fuchsia.sys.internal.ComponentEventProvider", |
| from: "self", |
| path: "/appmgr_svc/fuchsia.sys.internal.ComponentEventProvider", |
| }, |
| |
| // `svc_from_sys` and `svc_for_sys` contain protocols that are routed from `appmgr` to |
| // `core` and `core` to `appmgr` respectively. This makes it possible to add a declaration |
| // that routes a protocol to or from the `sys` realm without having to change `appmgr.cml`. |
| // This is particulary helpful for core shards, because it allows the routes between v1 and |
| // v2 to be contained within the core shard itself. `core` runs a `core_proxy` executable |
| // which manages the task of proxying protocols used by or offered from `self` to or from |
| // these directories. |
| // |
| // For more information on how to route protocols between v1 and v2, read: |
| // https://fuchsia.dev/fuchsia-src/development/components/v2/migration/components#v1-component-provides-service |
| // https://fuchsia.dev/fuchsia-src/development/components/v2/migration/components#route-to-v1 |
| { |
| directory: "svc_from_sys", |
| rights: [ "rw*" ], |
| path: "/svc", |
| }, |
| ], |
| use: [ |
| { |
| directory: "svc_for_sys", |
| rights: [ "rw*" ], |
| path: "/svc_for_sys", |
| }, |
| { |
| directory: "blob", |
| rights: [ "rw*" ], |
| path: "/blob", |
| }, |
| { |
| directory: "boot", |
| rights: [ "rx*" ], |
| path: "/boot", |
| }, |
| { |
| directory: "dev", |
| rights: [ "rw*" ], |
| path: "/dev", |
| }, |
| { |
| directory: "durable", |
| rights: [ "rw*" ], |
| path: "/durable", |
| }, |
| { |
| directory: "factory", |
| rights: [ "r*" ], |
| path: "/factory", |
| }, |
| { |
| directory: "minfs", |
| rights: [ "rw*" ], |
| path: "/data", |
| }, |
| { |
| directory: "mnt", |
| rights: [ "rw*" ], |
| path: "/mnt", |
| }, |
| { |
| directory: "pkgfs", |
| rights: [ "rx*" ], |
| path: "/pkgfs", |
| }, |
| { |
| directory: "system", |
| rights: [ "rx*" ], |
| path: "/system", |
| }, |
| { |
| directory: "tmp", |
| rights: [ "rw*" ], |
| path: "/tmp", |
| }, |
| { |
| directory: "hub", |
| rights: [ "rw*" ], |
| path: "/hub-v2", |
| }, |
| |
| // These services are used by appmgr directly |
| { |
| protocol: [ |
| "fuchsia.boot.WriteOnlyLog", |
| |
| // For triggering reboot when sysmgr exits |
| "fuchsia.hardware.power.statecontrol.Admin", |
| "fuchsia.process.Launcher", |
| ], |
| }, |
| ], |
| expose: [ |
| { |
| directory: [ |
| "hub-legacy", |
| "svc_from_sys", |
| ], |
| from: "self", |
| }, |
| { |
| protocol: [ |
| "fuchsia.appmgr.Startup", |
| "fuchsia.sys.internal.ComponentEventProvider", |
| "fuchsia.sys.internal.LogConnector", |
| ], |
| from: "self", |
| }, |
| ], |
| } |