| { |
| include: [ |
| "inspect/client.shard.cml", |
| "syslog/client.shard.cml", |
| "syslog/elf_stdio.shard.cml", |
| ], |
| program: { |
| runner: "elf", |
| binary: "bin/starnix_runner", |
| job_policy_create_raw_processes: "true", |
| use_next_vdso: "true", |
| }, |
| capabilities: [ |
| { |
| runner: "starnix", |
| path: "/svc/fuchsia.component.runner.ComponentRunner", |
| }, |
| { |
| protocol: [ |
| "fuchsia.component.runner.ComponentRunner", |
| "fuchsia.starnix.developer.Manager", |
| ], |
| }, |
| ], |
| use: [ |
| { |
| directory: "dev-gpu", |
| rights: [ "rw*" ], |
| path: "/dev/class/gpu", |
| }, |
| { |
| protocol: [ |
| // Note that this is the parent's realm. This is used to create children in |
| // starnix_manager's collection. |
| "fuchsia.component.Realm", |
| "fuchsia.kernel.VmexResource", |
| "fuchsia.sysmem.Allocator", |
| |
| // Wayland bridge protocols. |
| "fuchsia.tracing.provider.Registry", |
| "fuchsia.ui.composition.Allocator", |
| "fuchsia.ui.composition.Flatland", |
| "fuchsia.ui.input3.Keyboard", |
| "fuchsia.ui.scenic.Scenic", |
| "fuchsia.vulkan.loader.Loader", |
| ], |
| from: "parent", |
| }, |
| ], |
| expose: [ |
| { |
| runner: "starnix", |
| from: "self", |
| }, |
| { |
| protocol: [ |
| "fuchsia.component.runner.ComponentRunner", |
| |
| // In principle, this protocol should be exposed by a separate |
| // starnix_manager component, but that is blocked behind fxb/74087 |
| "fuchsia.starnix.developer.Manager", |
| ], |
| from: "self", |
| }, |
| ], |
| config: { |
| // Hack for specifying apexes. |
| apex_hack: { |
| type: "vector", |
| element: { |
| type: "string", |
| max_size: 256, |
| }, |
| max_count: 100, |
| }, |
| |
| // The features to run in the galaxy (e.g., wayland support). |
| features: { |
| type: "vector", |
| element: { |
| type: "string", |
| max_size: 256, |
| }, |
| max_count: 100, |
| }, |
| |
| // The arguments for the `init` task. The first argument must be an absolute path to the binary. Specify an empty vector to not start an init task. |
| init: { |
| type: "vector", |
| element: { |
| type: "string", |
| max_size: 256, |
| }, |
| max_count: 100, |
| }, |
| |
| // The user string used when creating the `init` task. |
| init_user: { |
| type: "string", |
| max_size: 256, |
| }, |
| |
| // The command line arguments for the kernel. |
| kernel_cmdline: { |
| type: "string", |
| max_size: 256, |
| }, |
| |
| // The filesystems that get mounted when the galaxy is created. |
| mounts: { |
| type: "vector", |
| element: { |
| type: "string", |
| max_size: 256, |
| }, |
| max_count: 100, |
| }, |
| |
| // The name of the galaxy. |
| name: { |
| type: "string", |
| max_size: 256, |
| }, |
| |
| // A file path that will be used to determine whether or not the system is ready to execute |
| // tasks. Prior to the existence of this file (if specified), the system will only run the |
| // `init` task (and any tasks `init` spawns). The `init` task is expected to create a file |
| // at this path. |
| startup_file_path: { |
| type: "string", |
| max_size: 1024, |
| }, |
| }, |
| } |