Merge changes from topic "apex_earlymount_base"
am: c676cca4f6
Change-Id: I417eb7fffbaa2c495b8dc1c1c10e5683ebafcc84
This commit is contained in:
commit
a192ff7ad3
4 changed files with 49 additions and 27 deletions
|
|
@ -1119,13 +1119,21 @@ static Result<Success> do_parse_apex_configs(const BuiltinArguments& args) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static Result<Success> do_setup_runtime_bionic(const BuiltinArguments& args) {
|
static Result<Success> do_setup_runtime_bionic(const BuiltinArguments& args) {
|
||||||
if (SwitchToDefaultMountNamespace()) {
|
if (SetupRuntimeBionic()) {
|
||||||
return Success();
|
return Success();
|
||||||
} else {
|
} else {
|
||||||
return Error() << "Failed to setup runtime bionic";
|
return Error() << "Failed to setup runtime bionic";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Result<Success> do_enter_default_mount_ns(const BuiltinArguments& args) {
|
||||||
|
if (SwitchToDefaultMountNamespace()) {
|
||||||
|
return Success();
|
||||||
|
} else {
|
||||||
|
return Error() << "Failed to enter into default mount namespace";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Builtin-function-map start
|
// Builtin-function-map start
|
||||||
const BuiltinFunctionMap::Map& BuiltinFunctionMap::map() const {
|
const BuiltinFunctionMap::Map& BuiltinFunctionMap::map() const {
|
||||||
constexpr std::size_t kMax = std::numeric_limits<std::size_t>::max();
|
constexpr std::size_t kMax = std::numeric_limits<std::size_t>::max();
|
||||||
|
|
@ -1177,6 +1185,7 @@ const BuiltinFunctionMap::Map& BuiltinFunctionMap::map() const {
|
||||||
{"start", {1, 1, {false, do_start}}},
|
{"start", {1, 1, {false, do_start}}},
|
||||||
{"stop", {1, 1, {false, do_stop}}},
|
{"stop", {1, 1, {false, do_stop}}},
|
||||||
{"swapon_all", {1, 1, {false, do_swapon_all}}},
|
{"swapon_all", {1, 1, {false, do_swapon_all}}},
|
||||||
|
{"enter_default_mount_ns", {0, 0, {false, do_enter_default_mount_ns}}},
|
||||||
{"symlink", {2, 2, {true, do_symlink}}},
|
{"symlink", {2, 2, {true, do_symlink}}},
|
||||||
{"sysclktz", {1, 1, {false, do_sysclktz}}},
|
{"sysclktz", {1, 1, {false, do_sysclktz}}},
|
||||||
{"trigger", {1, 1, {false, do_trigger}}},
|
{"trigger", {1, 1, {false, do_trigger}}},
|
||||||
|
|
|
||||||
|
|
@ -172,6 +172,11 @@ bool SetupMountNamespaces() {
|
||||||
kBionicLibsMountPointDir64))
|
kBionicLibsMountPointDir64))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
// /apex is also a private mountpoint to give different sets of APEXes for
|
||||||
|
// the bootstrap and default mount namespaces. The processes running with
|
||||||
|
// the bootstrap namespace get APEXes from the read-only partition.
|
||||||
|
if (!(MakePrivate("/apex"))) return false;
|
||||||
|
|
||||||
bootstrap_ns_fd.reset(OpenMountNamespace());
|
bootstrap_ns_fd.reset(OpenMountNamespace());
|
||||||
bootstrap_ns_id = GetMountNamespaceId();
|
bootstrap_ns_id = GetMountNamespaceId();
|
||||||
|
|
||||||
|
|
@ -227,6 +232,17 @@ bool SwitchToDefaultMountNamespace() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LOG(INFO) << "Switched to default mount namespace";
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO(jiyong): remove this when /system/lib/libc.so becomes
|
||||||
|
// a symlink to /apex/com.android.runtime/lib/bionic/libc.so
|
||||||
|
bool SetupRuntimeBionic() {
|
||||||
|
if (IsRecoveryMode()) {
|
||||||
|
// We don't have multiple namespaces in recovery mode
|
||||||
|
return true;
|
||||||
|
}
|
||||||
// Bind-mount bionic from the runtime APEX since it is now available. Note
|
// Bind-mount bionic from the runtime APEX since it is now available. Note
|
||||||
// that in case of IsBionicUpdatable() == false, these mounts are over the
|
// that in case of IsBionicUpdatable() == false, these mounts are over the
|
||||||
// existing existing bind mounts for the bootstrap bionic, which effectively
|
// existing existing bind mounts for the bootstrap bionic, which effectively
|
||||||
|
|
@ -238,7 +254,7 @@ bool SwitchToDefaultMountNamespace() {
|
||||||
kBionicLibsMountPointDir64))
|
kBionicLibsMountPointDir64))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
LOG(INFO) << "Switched to default mount namespace";
|
LOG(INFO) << "Runtime bionic is set up";
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ namespace android {
|
||||||
namespace init {
|
namespace init {
|
||||||
|
|
||||||
bool SetupMountNamespaces();
|
bool SetupMountNamespaces();
|
||||||
|
bool SetupRuntimeBionic();
|
||||||
bool SwitchToDefaultMountNamespace();
|
bool SwitchToDefaultMountNamespace();
|
||||||
bool SwitchToBootstrapMountNamespaceIfNeeded();
|
bool SwitchToBootstrapMountNamespaceIfNeeded();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,12 +13,6 @@ import /init.${ro.zygote}.rc
|
||||||
|
|
||||||
# Cgroups are mounted right before early-init using list from /etc/cgroups.json
|
# Cgroups are mounted right before early-init using list from /etc/cgroups.json
|
||||||
on early-init
|
on early-init
|
||||||
# Mount shared so changes propagate into child namespaces
|
|
||||||
# Do this before other processes are started from init. Otherwise,
|
|
||||||
# processes launched while the propagation type of / is 'private'
|
|
||||||
# won't get mount events from others.
|
|
||||||
mount rootfs rootfs / shared rec
|
|
||||||
|
|
||||||
# Set init and its forked children's oom_adj.
|
# Set init and its forked children's oom_adj.
|
||||||
write /proc/1/oom_score_adj -1000
|
write /proc/1/oom_score_adj -1000
|
||||||
|
|
||||||
|
|
@ -43,6 +37,11 @@ on early-init
|
||||||
|
|
||||||
start ueventd
|
start ueventd
|
||||||
|
|
||||||
|
# Run apexd-bootstrap so that APEXes that provide critical libraries
|
||||||
|
# become available. Note that this is executed as exec_start to ensure that
|
||||||
|
# the libraries are available to the processes started after this statement.
|
||||||
|
exec_start apexd-bootstrap
|
||||||
|
|
||||||
on init
|
on init
|
||||||
sysclktz 0
|
sysclktz 0
|
||||||
|
|
||||||
|
|
@ -281,9 +280,6 @@ on init
|
||||||
# Start logd before any other services run to ensure we capture all of their logs.
|
# Start logd before any other services run to ensure we capture all of their logs.
|
||||||
start logd
|
start logd
|
||||||
|
|
||||||
# Start apexd as soon as we can
|
|
||||||
start apexd
|
|
||||||
|
|
||||||
# Start essential services.
|
# Start essential services.
|
||||||
start servicemanager
|
start servicemanager
|
||||||
start hwservicemanager
|
start hwservicemanager
|
||||||
|
|
@ -419,8 +415,16 @@ on post-fs-data
|
||||||
mkdir /data/bootchart 0755 shell shell
|
mkdir /data/bootchart 0755 shell shell
|
||||||
bootchart start
|
bootchart start
|
||||||
|
|
||||||
# /data/apex is now available. Let apexd to scan and activate APEXes.
|
# Make sure that apexd is started in the default namespace
|
||||||
setprop apexd.data.status ready
|
enter_default_mount_ns
|
||||||
|
|
||||||
|
# /data/apex is now available. Start apexd to scan and activate APEXes.
|
||||||
|
mkdir /data/apex 0750 root system
|
||||||
|
mkdir /data/apex/active 0750 root system
|
||||||
|
mkdir /data/apex/backup 0700 root system
|
||||||
|
mkdir /data/apex/sessions 0700 root system
|
||||||
|
mkdir /data/pkg_staging 0750 system system
|
||||||
|
start apexd
|
||||||
|
|
||||||
# Avoid predictable entropy pool. Carry over entropy from previous boot.
|
# Avoid predictable entropy pool. Carry over entropy from previous boot.
|
||||||
copy /data/system/entropy.dat /dev/urandom
|
copy /data/system/entropy.dat /dev/urandom
|
||||||
|
|
@ -537,12 +541,6 @@ on post-fs-data
|
||||||
|
|
||||||
mkdir /data/anr 0775 system system
|
mkdir /data/anr 0775 system system
|
||||||
|
|
||||||
mkdir /data/apex 0750 root system
|
|
||||||
mkdir /data/apex/active 0750 root system
|
|
||||||
mkdir /data/apex/backup 0700 root system
|
|
||||||
mkdir /data/apex/sessions 0700 root system
|
|
||||||
mkdir /data/pkg_staging 0750 system system
|
|
||||||
|
|
||||||
# NFC: create data/nfc for nv storage
|
# NFC: create data/nfc for nv storage
|
||||||
mkdir /data/nfc 0770 nfc nfc
|
mkdir /data/nfc 0770 nfc nfc
|
||||||
mkdir /data/nfc/param 0770 nfc nfc
|
mkdir /data/nfc/param 0770 nfc nfc
|
||||||
|
|
@ -575,6 +573,12 @@ on post-fs-data
|
||||||
mkdir /data/cache/backup_stage 0700 system system
|
mkdir /data/cache/backup_stage 0700 system system
|
||||||
mkdir /data/cache/backup 0700 system system
|
mkdir /data/cache/backup 0700 system system
|
||||||
|
|
||||||
|
# Wait for apexd to finish activating APEXes before starting more processes.
|
||||||
|
wait_for_prop apexd.status ready
|
||||||
|
# TODO(jiyong): remove setup_runtime_bionic
|
||||||
|
setup_runtime_bionic
|
||||||
|
parse_apex_configs
|
||||||
|
|
||||||
init_user0
|
init_user0
|
||||||
|
|
||||||
# Set SELinux security contexts on upgrade or policy update.
|
# Set SELinux security contexts on upgrade or policy update.
|
||||||
|
|
@ -583,14 +587,6 @@ on post-fs-data
|
||||||
# load fsverity keys
|
# load fsverity keys
|
||||||
exec -- /system/bin/mini-keyctl -c /product/etc/security/cacerts_fsverity,/vendor/etc/security/cacerts_fsverity -k .fs-verity
|
exec -- /system/bin/mini-keyctl -c /product/etc/security/cacerts_fsverity,/vendor/etc/security/cacerts_fsverity -k .fs-verity
|
||||||
|
|
||||||
# Wait for apexd to finish activating APEXes before starting more processes.
|
|
||||||
# This certainly reduces the parallelism but is required to make as many processes
|
|
||||||
# as possible to use the bionic libs from the runtime APEX. This takes less than 50ms
|
|
||||||
# so the impact on the booting time is not significant.
|
|
||||||
wait_for_prop apexd.status ready
|
|
||||||
setup_runtime_bionic
|
|
||||||
parse_apex_configs
|
|
||||||
|
|
||||||
# Check any timezone data in /data is newer than the copy in the runtime module, delete if not.
|
# Check any timezone data in /data is newer than the copy in the runtime module, delete if not.
|
||||||
exec - system system -- /system/bin/tzdatacheck /apex/com.android.runtime/etc/tz /data/misc/zoneinfo
|
exec - system system -- /system/bin/tzdatacheck /apex/com.android.runtime/etc/tz /data/misc/zoneinfo
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue