Android Framework基础——系统初始化

        上一篇介绍了 init 进程的启动,这里我们详细分析以下 init 进程主要初始化了那些内容。这里我们主要分析 Android 12 的源码。

一、系统初始化

        首先,我们通过前面的内容,我们了解了 main.cpp 中对需要初始化的内容分模块处理,其中 SubcontextMain 主要是对上下文进行初始化,SetupSelinux 主要对 SELinux 进行初始化,FirstStageMain 第一阶段初始化主要是对基本的硬件初始化和文件系统挂载,SecondStageMain 第二阶段初始化是对系统服务、加载设备配置、解析init.rc文件以及其他一些系统启动任务。这里我们主要分析 SecondStageMain 的具体内容。

1、InitKernelLogging

        用于初始化内核日志记录。

util.cpp

源码位置:/system/core/init/util.cpp

void InitKernelLogging(char** argv) {
    // 设置致命错误的重启目标
    SetFatalRebootTarget();
    // 初始化 Android 日志系统
    android::base::InitLogging(argv, &android::base::KernelLogger, InitAborter);
}

logging.cpp  

源码位置:/system/libbase/logging.cpp 

void InitLogging(char* argv[], LogFunction&& logger, AbortFunction&& aborter) {
    // 设置日志记录函数
    

猜你喜欢

转载自blog.csdn.net/c19344881x/article/details/131943335