Loading init/Android.bp +6 −14 Original line number Original line Diff line number Diff line Loading @@ -92,6 +92,7 @@ cc_defaults { cc_library_static { cc_library_static { name: "libinit", name: "libinit", recovery_available: true, defaults: ["init_defaults"], defaults: ["init_defaults"], srcs: [ srcs: [ "action.cpp", "action.cpp", Loading @@ -107,7 +108,6 @@ cc_library_static { "first_stage_mount.cpp", "first_stage_mount.cpp", "import_parser.cpp", "import_parser.cpp", "init.cpp", "init.cpp", "init_first_stage.cpp", "keychords.cpp", "keychords.cpp", "modalias_handler.cpp", "modalias_handler.cpp", "parser.cpp", "parser.cpp", Loading Loading @@ -138,29 +138,21 @@ cc_library_static { }, }, } } /* This is not yet ready, see the below TODOs for what is missing cc_binary { cc_binary { // TODO: Missing, name: "init_second_stage", //LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT) recovery_available: true, //LOCAL_UNSTRIPPED_PATH := $(TARGET_ROOT_OUT_UNSTRIPPED) stem: "init", name: "init", defaults: ["init_defaults"], defaults: ["init_defaults"], static_libs: ["libinit"], required: [ required: [ "e2fsdroid", "e2fsdroid", "mke2fs", "mke2fs", "sload_f2fs", "sload_f2fs", "make_f2fs", "make_f2fs", ], ], static_executable: true, srcs: ["main.cpp"], srcs: ["main.cpp"], symlinks: [ symlinks: ["ueventd"], "sbin/ueventd", ], } } */ // Tests // Tests // ------------------------------------------------------------------------------ // ------------------------------------------------------------------------------ Loading init/Android.mk +14 −30 Original line number Original line Diff line number Diff line Loading @@ -41,35 +41,35 @@ init_cflags += \ include $(CLEAR_VARS) include $(CLEAR_VARS) LOCAL_CPPFLAGS := $(init_cflags) LOCAL_CPPFLAGS := $(init_cflags) LOCAL_SRC_FILES := main.cpp LOCAL_SRC_FILES := \ devices.cpp \ first_stage_mount.cpp \ init_first_stage.cpp \ reboot_utils.cpp \ selinux.cpp \ uevent_listener.cpp \ util.cpp \ LOCAL_MODULE := init LOCAL_MODULE := init LOCAL_FORCE_STATIC_EXECUTABLE := true LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT) LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT) LOCAL_UNSTRIPPED_PATH := $(TARGET_ROOT_OUT_UNSTRIPPED) LOCAL_UNSTRIPPED_PATH := $(TARGET_ROOT_OUT_UNSTRIPPED) LOCAL_STATIC_LIBRARIES := \ LOCAL_STATIC_LIBRARIES := \ libinit \ libbootloader_message \ libfs_mgr \ libfs_mgr \ libfec \ libfec \ libfec_rs \ libfec_rs \ libhidl-gen-utils \ libsquashfs_utils \ libsquashfs_utils \ liblogwrap \ liblogwrap \ libext4_utils \ libext4_utils \ libseccomp_policy \ libseccomp_policy \ libcrypto_utils \ libcrypto_utils \ libsparse \ libsparse \ libprocessgroup \ libavb \ libavb \ libkeyutils \ libkeyutils \ libprotobuf-cpp-lite \ libpropertyinfoserializer \ libpropertyinfoparser \ liblp \ liblp \ shared_libs := \ libcutils \ libcutils \ libbase \ libbase \ liblog \ liblog \ Loading @@ -77,27 +77,11 @@ shared_libs := \ libdl \ libdl \ libz \ libz \ libselinux \ libselinux \ libcap \ ifneq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true) # init is static executable for non-system-as-root devices, because the dynamic linker # and shared libs are not available before /system is mounted, but init has to run # before the partition is mounted. LOCAL_STATIC_LIBRARIES += $(shared_libs) libc++_static LOCAL_FORCE_STATIC_EXECUTABLE := true else LOCAL_SHARED_LIBRARIES := $(shared_libs) libc++ endif shared_libs := LOCAL_REQUIRED_MODULES := \ LOCAL_REQUIRED_MODULES := \ e2fsdroid \ init_second_stage \ mke2fs \ init_second_stage.recovery \ sload_f2fs \ make_f2fs \ # Create symlinks. LOCAL_POST_INSTALL_CMD := $(hide) mkdir -p $(TARGET_ROOT_OUT)/sbin; \ ln -sf ../init $(TARGET_ROOT_OUT)/sbin/ueventd; \ LOCAL_SANITIZE := signed-integer-overflow LOCAL_SANITIZE := signed-integer-overflow include $(BUILD_EXECUTABLE) include $(BUILD_EXECUTABLE) init/init.cpp +0 −7 Original line number Original line Diff line number Diff line Loading @@ -565,8 +565,6 @@ static void InitKernelLogging(char* argv[]) { android::base::InitLogging(argv, &android::base::KernelLogger, InitAborter); android::base::InitLogging(argv, &android::base::KernelLogger, InitAborter); } } int first_stage_main(int argc, char** argv); int main(int argc, char** argv) { int main(int argc, char** argv) { if (!strcmp(basename(argv[0]), "ueventd")) { if (!strcmp(basename(argv[0]), "ueventd")) { return ueventd_main(argc, argv); return ueventd_main(argc, argv); Loading @@ -578,10 +576,6 @@ int main(int argc, char** argv) { return SubcontextMain(argc, argv, &function_map); return SubcontextMain(argc, argv, &function_map); } } if (getenv("INIT_SECOND_STAGE") == nullptr) { return first_stage_main(argc, argv); } if (REBOOT_BOOTLOADER_ON_PANIC) { if (REBOOT_BOOTLOADER_ON_PANIC) { InstallRebootSignalHandlers(); InstallRebootSignalHandlers(); } } Loading Loading @@ -617,7 +611,6 @@ int main(int argc, char** argv) { if (avb_version) property_set("ro.boot.avb_version", avb_version); if (avb_version) property_set("ro.boot.avb_version", avb_version); // Clean up our environment. // Clean up our environment. unsetenv("INIT_SECOND_STAGE"); unsetenv("INIT_STARTED_AT"); unsetenv("INIT_STARTED_AT"); unsetenv("INIT_SELINUX_TOOK"); unsetenv("INIT_SELINUX_TOOK"); unsetenv("INIT_AVB_VERSION"); unsetenv("INIT_AVB_VERSION"); Loading init/init_first_stage.cpp +8 −6 Original line number Original line Diff line number Diff line Loading @@ -51,7 +51,7 @@ static void GlobalSeccomp() { }); }); } } int first_stage_main(int argc, char** argv) { int main(int argc, char** argv) { if (REBOOT_BOOTLOADER_ON_PANIC) { if (REBOOT_BOOTLOADER_ON_PANIC) { InstallRebootSignalHandlers(); InstallRebootSignalHandlers(); } } Loading Loading @@ -141,17 +141,15 @@ int first_stage_main(int argc, char** argv) { // Unneeded? It's an ext4 file system so shouldn't it have the right domain already? // Unneeded? It's an ext4 file system so shouldn't it have the right domain already? // We're in the kernel domain, so re-exec init to transition to the init domain now // We're in the kernel domain, so re-exec init to transition to the init domain now // that the SELinux policy has been loaded. // that the SELinux policy has been loaded. if (selinux_android_restorecon("/init", 0) == -1) { if (selinux_android_restorecon("/system/bin/init", 0) == -1) { PLOG(FATAL) << "restorecon failed of /init failed"; PLOG(FATAL) << "restorecon failed of /system/bin/init failed"; } } setenv("INIT_SECOND_STAGE", "true", 1); static constexpr uint32_t kNanosecondsPerMillisecond = 1e6; static constexpr uint32_t kNanosecondsPerMillisecond = 1e6; uint64_t start_ms = start_time.time_since_epoch().count() / kNanosecondsPerMillisecond; uint64_t start_ms = start_time.time_since_epoch().count() / kNanosecondsPerMillisecond; setenv("INIT_STARTED_AT", std::to_string(start_ms).c_str(), 1); setenv("INIT_STARTED_AT", std::to_string(start_ms).c_str(), 1); const char* path = argv[0]; const char* path = "/system/bin/init"; const char* args[] = {path, nullptr}; const char* args[] = {path, nullptr}; execv(path, const_cast<char**>(args)); execv(path, const_cast<char**>(args)); Loading @@ -164,3 +162,7 @@ int first_stage_main(int argc, char** argv) { } // namespace init } // namespace init } // namespace android } // namespace android int main(int argc, char** argv) { return android::init::main(argc, argv); } rootdir/init.rc +1 −1 Original line number Original line Diff line number Diff line Loading @@ -751,7 +751,7 @@ on property:security.perf_harden=1 ## Daemon processes to be run by init. ## Daemon processes to be run by init. ## ## service ueventd /sbin/ueventd service ueventd /system/bin/ueventd class core class core critical critical seclabel u:r:ueventd:s0 seclabel u:r:ueventd:s0 Loading Loading
init/Android.bp +6 −14 Original line number Original line Diff line number Diff line Loading @@ -92,6 +92,7 @@ cc_defaults { cc_library_static { cc_library_static { name: "libinit", name: "libinit", recovery_available: true, defaults: ["init_defaults"], defaults: ["init_defaults"], srcs: [ srcs: [ "action.cpp", "action.cpp", Loading @@ -107,7 +108,6 @@ cc_library_static { "first_stage_mount.cpp", "first_stage_mount.cpp", "import_parser.cpp", "import_parser.cpp", "init.cpp", "init.cpp", "init_first_stage.cpp", "keychords.cpp", "keychords.cpp", "modalias_handler.cpp", "modalias_handler.cpp", "parser.cpp", "parser.cpp", Loading Loading @@ -138,29 +138,21 @@ cc_library_static { }, }, } } /* This is not yet ready, see the below TODOs for what is missing cc_binary { cc_binary { // TODO: Missing, name: "init_second_stage", //LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT) recovery_available: true, //LOCAL_UNSTRIPPED_PATH := $(TARGET_ROOT_OUT_UNSTRIPPED) stem: "init", name: "init", defaults: ["init_defaults"], defaults: ["init_defaults"], static_libs: ["libinit"], required: [ required: [ "e2fsdroid", "e2fsdroid", "mke2fs", "mke2fs", "sload_f2fs", "sload_f2fs", "make_f2fs", "make_f2fs", ], ], static_executable: true, srcs: ["main.cpp"], srcs: ["main.cpp"], symlinks: [ symlinks: ["ueventd"], "sbin/ueventd", ], } } */ // Tests // Tests // ------------------------------------------------------------------------------ // ------------------------------------------------------------------------------ Loading
init/Android.mk +14 −30 Original line number Original line Diff line number Diff line Loading @@ -41,35 +41,35 @@ init_cflags += \ include $(CLEAR_VARS) include $(CLEAR_VARS) LOCAL_CPPFLAGS := $(init_cflags) LOCAL_CPPFLAGS := $(init_cflags) LOCAL_SRC_FILES := main.cpp LOCAL_SRC_FILES := \ devices.cpp \ first_stage_mount.cpp \ init_first_stage.cpp \ reboot_utils.cpp \ selinux.cpp \ uevent_listener.cpp \ util.cpp \ LOCAL_MODULE := init LOCAL_MODULE := init LOCAL_FORCE_STATIC_EXECUTABLE := true LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT) LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT) LOCAL_UNSTRIPPED_PATH := $(TARGET_ROOT_OUT_UNSTRIPPED) LOCAL_UNSTRIPPED_PATH := $(TARGET_ROOT_OUT_UNSTRIPPED) LOCAL_STATIC_LIBRARIES := \ LOCAL_STATIC_LIBRARIES := \ libinit \ libbootloader_message \ libfs_mgr \ libfs_mgr \ libfec \ libfec \ libfec_rs \ libfec_rs \ libhidl-gen-utils \ libsquashfs_utils \ libsquashfs_utils \ liblogwrap \ liblogwrap \ libext4_utils \ libext4_utils \ libseccomp_policy \ libseccomp_policy \ libcrypto_utils \ libcrypto_utils \ libsparse \ libsparse \ libprocessgroup \ libavb \ libavb \ libkeyutils \ libkeyutils \ libprotobuf-cpp-lite \ libpropertyinfoserializer \ libpropertyinfoparser \ liblp \ liblp \ shared_libs := \ libcutils \ libcutils \ libbase \ libbase \ liblog \ liblog \ Loading @@ -77,27 +77,11 @@ shared_libs := \ libdl \ libdl \ libz \ libz \ libselinux \ libselinux \ libcap \ ifneq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true) # init is static executable for non-system-as-root devices, because the dynamic linker # and shared libs are not available before /system is mounted, but init has to run # before the partition is mounted. LOCAL_STATIC_LIBRARIES += $(shared_libs) libc++_static LOCAL_FORCE_STATIC_EXECUTABLE := true else LOCAL_SHARED_LIBRARIES := $(shared_libs) libc++ endif shared_libs := LOCAL_REQUIRED_MODULES := \ LOCAL_REQUIRED_MODULES := \ e2fsdroid \ init_second_stage \ mke2fs \ init_second_stage.recovery \ sload_f2fs \ make_f2fs \ # Create symlinks. LOCAL_POST_INSTALL_CMD := $(hide) mkdir -p $(TARGET_ROOT_OUT)/sbin; \ ln -sf ../init $(TARGET_ROOT_OUT)/sbin/ueventd; \ LOCAL_SANITIZE := signed-integer-overflow LOCAL_SANITIZE := signed-integer-overflow include $(BUILD_EXECUTABLE) include $(BUILD_EXECUTABLE)
init/init.cpp +0 −7 Original line number Original line Diff line number Diff line Loading @@ -565,8 +565,6 @@ static void InitKernelLogging(char* argv[]) { android::base::InitLogging(argv, &android::base::KernelLogger, InitAborter); android::base::InitLogging(argv, &android::base::KernelLogger, InitAborter); } } int first_stage_main(int argc, char** argv); int main(int argc, char** argv) { int main(int argc, char** argv) { if (!strcmp(basename(argv[0]), "ueventd")) { if (!strcmp(basename(argv[0]), "ueventd")) { return ueventd_main(argc, argv); return ueventd_main(argc, argv); Loading @@ -578,10 +576,6 @@ int main(int argc, char** argv) { return SubcontextMain(argc, argv, &function_map); return SubcontextMain(argc, argv, &function_map); } } if (getenv("INIT_SECOND_STAGE") == nullptr) { return first_stage_main(argc, argv); } if (REBOOT_BOOTLOADER_ON_PANIC) { if (REBOOT_BOOTLOADER_ON_PANIC) { InstallRebootSignalHandlers(); InstallRebootSignalHandlers(); } } Loading Loading @@ -617,7 +611,6 @@ int main(int argc, char** argv) { if (avb_version) property_set("ro.boot.avb_version", avb_version); if (avb_version) property_set("ro.boot.avb_version", avb_version); // Clean up our environment. // Clean up our environment. unsetenv("INIT_SECOND_STAGE"); unsetenv("INIT_STARTED_AT"); unsetenv("INIT_STARTED_AT"); unsetenv("INIT_SELINUX_TOOK"); unsetenv("INIT_SELINUX_TOOK"); unsetenv("INIT_AVB_VERSION"); unsetenv("INIT_AVB_VERSION"); Loading
init/init_first_stage.cpp +8 −6 Original line number Original line Diff line number Diff line Loading @@ -51,7 +51,7 @@ static void GlobalSeccomp() { }); }); } } int first_stage_main(int argc, char** argv) { int main(int argc, char** argv) { if (REBOOT_BOOTLOADER_ON_PANIC) { if (REBOOT_BOOTLOADER_ON_PANIC) { InstallRebootSignalHandlers(); InstallRebootSignalHandlers(); } } Loading Loading @@ -141,17 +141,15 @@ int first_stage_main(int argc, char** argv) { // Unneeded? It's an ext4 file system so shouldn't it have the right domain already? // Unneeded? It's an ext4 file system so shouldn't it have the right domain already? // We're in the kernel domain, so re-exec init to transition to the init domain now // We're in the kernel domain, so re-exec init to transition to the init domain now // that the SELinux policy has been loaded. // that the SELinux policy has been loaded. if (selinux_android_restorecon("/init", 0) == -1) { if (selinux_android_restorecon("/system/bin/init", 0) == -1) { PLOG(FATAL) << "restorecon failed of /init failed"; PLOG(FATAL) << "restorecon failed of /system/bin/init failed"; } } setenv("INIT_SECOND_STAGE", "true", 1); static constexpr uint32_t kNanosecondsPerMillisecond = 1e6; static constexpr uint32_t kNanosecondsPerMillisecond = 1e6; uint64_t start_ms = start_time.time_since_epoch().count() / kNanosecondsPerMillisecond; uint64_t start_ms = start_time.time_since_epoch().count() / kNanosecondsPerMillisecond; setenv("INIT_STARTED_AT", std::to_string(start_ms).c_str(), 1); setenv("INIT_STARTED_AT", std::to_string(start_ms).c_str(), 1); const char* path = argv[0]; const char* path = "/system/bin/init"; const char* args[] = {path, nullptr}; const char* args[] = {path, nullptr}; execv(path, const_cast<char**>(args)); execv(path, const_cast<char**>(args)); Loading @@ -164,3 +162,7 @@ int first_stage_main(int argc, char** argv) { } // namespace init } // namespace init } // namespace android } // namespace android int main(int argc, char** argv) { return android::init::main(argc, argv); }
rootdir/init.rc +1 −1 Original line number Original line Diff line number Diff line Loading @@ -751,7 +751,7 @@ on property:security.perf_harden=1 ## Daemon processes to be run by init. ## Daemon processes to be run by init. ## ## service ueventd /sbin/ueventd service ueventd /system/bin/ueventd class core class core critical critical seclabel u:r:ueventd:s0 seclabel u:r:ueventd:s0 Loading