| # Copyright 2018 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| description "Start the server proxy for arcvm" |
| author "chromium-os-dev@chromium.org" |
| |
| start on starting arcvm-post-login-services |
| stop on stopping arcvm-post-login-services |
| |
| oom score -100 |
| |
| # Use minimalistic-mountns profile. |
| # -e for a new network namespace. |
| # -p for a new PID namespace. |
| # -l for a new IPC namespace. |
| # --uts for UTS namespace to isolate from host / domain names. |
| # -N for freeze cgroup settings. |
| # -u and -g to run as arc-mojo-proxy. |
| # -c sets capabilities: |
| # cap_sys_admin is needed to mount a FUSE file system. |
| # TODO(b/238044680): Remove cap_dac_override. |
| # /mnt is the mount point of the fuse file system. |
| # /run/chrome/arc/arc_bridge.sock is the socket connected to the |
| # ArcBridgeService in Chrome browser process. arcvm_server_proxy may be started |
| # before the socket is available, so bind /run/chrome/arc instead. |
| # /run/chrome/arc is bind-mounted to /run/chrome for historical reasons. The |
| # service tries to use /run/chrome/arc_bridge.sock rather than |
| # /run/chrome/arc/arc_bridge.sock. |
| exec minijail0 \ |
| --profile=minimalistic-mountns \ |
| -e \ |
| -p \ |
| -l \ |
| --uts \ |
| -N \ |
| -u arc-mojo-proxy \ |
| -g arc-mojo-proxy \ |
| -c "cap_dac_override,cap_sys_admin+eip" \ |
| -k "tmpfs,/mnt,tmpfs,MS_NOSUID|MS_NODEV|MS_NOEXEC" \ |
| -k "tmpfs,/run,tmpfs,MS_NOSUID|MS_NODEV|MS_NOEXEC" \ |
| -b /dev/fuse \ |
| -b /run/chrome/arc,/run/chrome \ |
| -b /run/arcvm/mojo,/run/arcvm/mojo,1 \ |
| -- /usr/bin/arcvm_server_proxy /mnt |
| |
| post-stop exec logger -t "${UPSTART_JOB}" "Post-stop arcvm-server-proxy" |