blob: bcd9e0c2129f0c5c88f168eb0c915d0d1363cf82 [file] [log] [blame] [edit]
# Copyright 2024 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
description "Prepare /data for ARCVM"
author "chromium-os-dev@chromium.org"
start on starting arcvm-post-login-services
stop on stopping arcvm-post-login-services
# Derived from arcvm-post-login-services.
oom score -100
task
import CHROMEOS_USER
import ARCVM_DATA_TYPE
env ANDROID_MUTABLE_SOURCE=/run/arcvm/android-data/mount
pre-start script
# Use different minijail configs depending on the type of /data:
# 1) For virtio-fs /data, it needs to be set up and mounted on
# /run/arcvm/android-data/mount in the concierge namespace.
# 2) For virtio-blk /data, the job temporarily mounts /data, which is safer to
# perform in a confined minimalistic namespace.
if [ "${ARCVM_DATA_TYPE}" = "virtiofs" ]; then
exec /sbin/minijail0 \
--config /usr/share/minijail/arcvm-prepare-virtio-fs-data.conf \
-- /usr/sbin/arcvm-prepare-data --log_tag=arcvm-prepare-data \
--data_type="${ARCVM_DATA_TYPE}"
else
if [ "${ARCVM_DATA_TYPE}" != "lvm_volume" ] &&
[ "${ARCVM_DATA_TYPE}" != "concierge_disk" ]; then
logger -t "${UPSTART_JOB}" "Invalid /data type: ${ARCVM_DATA_TYPE}"
exit 1
fi
CHROMEOS_USER_HOME=$(cryptohome-path system "${CHROMEOS_USER}")
if [ ! -d "${CHROMEOS_USER_HOME}" ]; then
logger -t "${UPSTART_JOB}" \
"User home ${CHROMEOS_USER_HOME} does not exist"
exit 1
fi
exec /sbin/minijail0 \
--config /usr/share/minijail/arcvm-prepare-virtio-blk-data.conf \
-k "${CHROMEOS_USER_HOME},${CHROMEOS_USER_HOME},none,MS_BIND|MS_REC" \
-- /usr/sbin/arcvm-prepare-data --log_tag=arcvm-prepare-data \
--data_type="${ARCVM_DATA_TYPE}"
fi
end script
# This is needed to ensure this job doesn't remain in the started state.
exec /bin/true