android系列-init SetupSelinux

1.FirstStageMain

cpp 复制代码
//android10\system\core\init\first_stage_init.cpp

int FirstStageMain(int argc, char** argv) {
    const char* path = "/system/bin/init";
    const char* args[] = {path, "selinux_setup", nullptr};
    execv(path, const_cast<char**>(args));
}

2.main

cpp 复制代码
//android10\system\core\init\main.cpp
int main(int argc, char** argv) {

    if (argc > 1) {

        if (!strcmp(argv[1], "selinux_setup")) {
            return SetupSelinux(argv);
        }
    }
}

3.SetupSelinux

java 复制代码
//android10\system\core\init\selinux.cpp

int SetupSelinux(char** argv) {
    InitKernelLogging(argv); //为啥调用多次

    // Set up SELinux, loading the SELinux policy.
    SelinuxSetupKernelLogging();
    SelinuxInitialize();

    const char* path = "/system/bin/init";
    const char* args[] = {path, "second_stage", nullptr};//4.second_stage
    execv(path, const_cast<char**>(args));
}
相关推荐
Digitally1 分钟前
如何将照片从 Mac 传输到 Android
android·macos
用户41659673693553 分钟前
Android 系统开发进阶:将应用配置为系统应用的完整指南
android
三少爷的鞋22 分钟前
Retrofit 核心流程模拟实现深解析
android
zhimingwen22 分钟前
使用 adb shell 命令检查手机上 App的APK大小
android·adb
泥嚎泥嚎25 分钟前
【Android】RecyclerView 刷新方式全解析:从 notifyDataSetChanged 到 DiffUtil
android·java
用户693717500138426 分钟前
23.Kotlin 继承:继承的细节:覆盖方法与属性
android·后端·kotlin
Haha_bj30 分钟前
五、Kotlin——条件控制、循环控制
android·kotlin
弥巷31 分钟前
【Android】深入理解Window和WindowManager
android·java
AllBlue35 分钟前
安卓调用unity中的方法
android·unity·游戏引擎
zhimingwen1 小时前
通过ADB获取Android应用的SHA1签名
android·adb