Move linker config under /linkerconfig
Currently linker config locates under /dev, but this makes some problem in case of using two system partitions with chroot. To match system image and configuration, linker config better stays under /linkerconfig Bug: 144966380 Test: m -j passed && tested from cuttelfish Change-Id: Iaae5af65721eee8106311c1efb4760a9db13564a
This commit is contained in:
parent
1fd9c55689
commit
99df54be93
7 changed files with 29 additions and 12 deletions
|
@ -75,7 +75,6 @@ LOCAL_REQUIRED_MODULES := \
|
|||
|
||||
# Set up the same mount points on the ramdisk that system-as-root contains.
|
||||
LOCAL_POST_INSTALL_CMD := mkdir -p \
|
||||
$(TARGET_RAMDISK_OUT)/apex \
|
||||
$(TARGET_RAMDISK_OUT)/debug_ramdisk \
|
||||
$(TARGET_RAMDISK_OUT)/dev \
|
||||
$(TARGET_RAMDISK_OUT)/mnt \
|
||||
|
|
|
@ -204,10 +204,6 @@ int FirstStageMain(int argc, char** argv) {
|
|||
// part of the product partition, e.g. because they are mounted read-write.
|
||||
CHECKCALL(mkdir("/mnt/product", 0755));
|
||||
|
||||
// /apex is used to mount APEXes
|
||||
CHECKCALL(mount("tmpfs", "/apex", "tmpfs", MS_NOEXEC | MS_NOSUID | MS_NODEV,
|
||||
"mode=0755,uid=0,gid=0"));
|
||||
|
||||
// /debug_ramdisk is used to preserve additional files from the debug ramdisk
|
||||
CHECKCALL(mount("tmpfs", "/debug_ramdisk", "tmpfs", MS_NOEXEC | MS_NOSUID | MS_NODEV,
|
||||
"mode=0755,uid=0,gid=0"));
|
||||
|
|
|
@ -512,10 +512,24 @@ void HandleKeychord(const std::vector<int>& keycodes) {
|
|||
|
||||
static void UmountDebugRamdisk() {
|
||||
if (umount("/debug_ramdisk") != 0) {
|
||||
LOG(ERROR) << "Failed to umount /debug_ramdisk";
|
||||
PLOG(ERROR) << "Failed to umount /debug_ramdisk";
|
||||
}
|
||||
}
|
||||
|
||||
static void MountExtraFilesystems() {
|
||||
#define CHECKCALL(x) \
|
||||
if ((x) != 0) PLOG(FATAL) << #x " failed.";
|
||||
|
||||
// /apex is used to mount APEXes
|
||||
CHECKCALL(mount("tmpfs", "/apex", "tmpfs", MS_NOEXEC | MS_NOSUID | MS_NODEV,
|
||||
"mode=0755,uid=0,gid=0"));
|
||||
|
||||
// /linkerconfig is used to keep generated linker configuration
|
||||
CHECKCALL(mount("tmpfs", "/linkerconfig", "tmpfs", MS_NOEXEC | MS_NOSUID | MS_NODEV,
|
||||
"mode=0755,uid=0,gid=0"));
|
||||
#undef CHECKCALL
|
||||
}
|
||||
|
||||
static void RecordStageBoottimes(const boot_clock::time_point& second_stage_start_time) {
|
||||
int64_t first_stage_start_time_ns = -1;
|
||||
if (auto first_stage_start_time_str = getenv(kEnvFirstStageStartedAt);
|
||||
|
@ -656,6 +670,9 @@ int SecondStageMain(int argc, char** argv) {
|
|||
UmountDebugRamdisk();
|
||||
}
|
||||
|
||||
// Mount extra filesystems required during second stage init
|
||||
MountExtraFilesystems();
|
||||
|
||||
// Now set up SELinux for second stage.
|
||||
SelinuxSetupKernelLogging();
|
||||
SelabelInitialize();
|
||||
|
|
|
@ -172,6 +172,11 @@ bool SetupMountNamespaces() {
|
|||
// the bootstrap namespace get APEXes from the read-only partition.
|
||||
if (!(MakePrivate("/apex"))) return false;
|
||||
|
||||
// /linkerconfig is a private mountpoint to give a different linker configuration
|
||||
// based on the mount namespace. Subdirectory will be bind-mounted based on current mount
|
||||
// namespace
|
||||
if (!(MakePrivate("/linkerconfig"))) return false;
|
||||
|
||||
bootstrap_ns_fd.reset(OpenMountNamespace());
|
||||
bootstrap_ns_id = GetMountNamespaceId();
|
||||
|
||||
|
|
|
@ -531,6 +531,8 @@ void SelinuxRestoreContext() {
|
|||
selinux_android_restorecon("/dev/device-mapper", 0);
|
||||
|
||||
selinux_android_restorecon("/apex", 0);
|
||||
|
||||
selinux_android_restorecon("/linkerconfig", 0);
|
||||
}
|
||||
|
||||
int SelinuxKlogCallback(int type, const char* fmt, ...) {
|
||||
|
|
|
@ -72,7 +72,8 @@ endif
|
|||
#
|
||||
# create some directories (some are mount points) and symlinks
|
||||
LOCAL_POST_INSTALL_CMD := mkdir -p $(addprefix $(TARGET_ROOT_OUT)/, \
|
||||
dev proc sys system data odm oem acct config storage mnt apex debug_ramdisk $(BOARD_ROOT_EXTRA_FOLDERS)); \
|
||||
dev proc sys system data odm oem acct config storage mnt apex debug_ramdisk \
|
||||
linkerconfig $(BOARD_ROOT_EXTRA_FOLDERS)); \
|
||||
ln -sf /system/bin $(TARGET_ROOT_OUT)/bin; \
|
||||
ln -sf /system/etc $(TARGET_ROOT_OUT)/etc; \
|
||||
ln -sf /data/user_de/0/com.android.shell/files/bugreports $(TARGET_ROOT_OUT)/bugreports; \
|
||||
|
|
|
@ -38,12 +38,9 @@ on early-init
|
|||
# Allow up to 32K FDs per process
|
||||
setrlimit nofile 32768 32768
|
||||
|
||||
# Create directory to keep ld.config.txt
|
||||
mkdir /dev/linkerconfig 0755
|
||||
|
||||
# Generate ld.config.txt for early executed processes
|
||||
exec -- /system/bin/linkerconfig --target /dev/linkerconfig/ld.config.txt
|
||||
chmod 444 /dev/linkerconfig/ld.config.txt
|
||||
exec -- /system/bin/linkerconfig --target /linkerconfig/ld.config.txt
|
||||
chmod 444 /linkerconfig/ld.config.txt
|
||||
|
||||
start ueventd
|
||||
|
||||
|
|
Loading…
Reference in a new issue