Android_android系统启动流程_1_init进程启动流程/2 Init进程启动第一阶段 February 27, 2025 1 minute read 页-1 Actor lifeline system/core/init/main.cpp 工作表.2 工作表.3 工作表.4 system/core/init/main.cpp Object lifeline system/core/init/first_stage_init.cpp 工作表.6 工作表.7 工作表.8 工作表.9 system/core/init/first_stage_init.cpp Object lifeline.54 system/core/init/util.cpp 工作表.11 工作表.12 工作表.13 工作表.14 system/core/init/util.cpp Activation 激活.60 激活.65 Message.21 FirstStageMain FirstStageMain 消息.132 InstallRebootSignalHandlers InstallRebootSignalHandlers 黄色便条 userdebug和eng版本中如果init进程崩溃如收到SIGABRT,SIGBUS等信号则重启bootloaderRe... userdebug和eng版本中如果init进程崩溃(如收到SIGABRT,SIGBUS等信号)则重启bootloader,RebootSystem其实就是执行reboot命令 Object lifeline.150 system/core/init/first_stage_mount.cpp 工作表.31 工作表.32 工作表.33 工作表.34 system/core/init/first_stage_mount.cpp 激活.157 其他片段 工作表.40 init进程启动第一阶段 init进程启动第一阶段 Object lifeline.42 system/core/init/reboot_utils.cpp 工作表.43 工作表.44 工作表.45 工作表.46 system/core/init/reboot_utils.cpp 激活.47 消息.48 InitFatalReboot InitFatalReboot 激活.50 消息.51 RebootSystem RebootSystem 激活.53 消息.54 mount... mount... 黄色便条.55 mount挂载tmpfs、devpts、sysfs、selinuxfs等文件系统 mkdir创建/dev/、/mnt/等文... mount:挂载tmpfs、devpts、sysfs、selinuxfs等文件系统mkdir:创建/dev/、/mnt/等文件夹mknod:创建/dev/kmsg、/dev/null、/dev/ptmx等字符设备节点 消息.56 mkdir... mkdir... 消息.58 mknod... mknod... 消息.59 InitKernelLogging InitKernelLogging Object lifeline.60 system/core/base/logging.cpp 工作表.61 工作表.62 工作表.63 工作表.64 system/core/base/logging.cpp 激活.65 消息.66 InitLogging InitLogging 激活.67 消息.68 KernelLogger KernelLogger 黄色便条.69 InitLogging通过SetLogger入参KernelLogger执行KernelLogger方法 InitLogging通过SetLogger入参KernelLogger,执行KernelLogger方法 激活.70 消息.71 OpenKmsg() OpenKmsg() 黄色便条.72 打开/dev/kmsg节点 打开/dev/kmsg节点 消息.75 snprintf&writev snprintf&writev 黄色便条.76 读取msg写入msg到kmsg节点 读取msg写入msg到kmsg节点 黄色便条.77 初始化kernel日志系统 初始化kernel日志系统 消息.78 DoFirstStageMount DoFirstStageMount 黄色便条.79 挂载fstab文件的分区 挂载fstab文件的分区 激活.80 消息.81 1FirstStageMount::Create() (1)FirstStageMount::Create() 消息.82 2FirstStageMount::DoFirstStageMount() (2)FirstStageMount::DoFirstStageMount() 激活.83 激活.84 消息.85 ReadFirstStageFstab() ReadFirstStageFstab() Object lifeline.86 system/core/fs_mgr/fs_mgr_fstab.cpp 工作表.87 工作表.88 工作表.89 工作表.90 system/core/fs_mgr/fs_mgr_fstab.cpp 激活.91 消息.92 ReadDefaultFstab ReadDefaultFstab 黄色便条.93 ReadFstabFromDt调用返回false此处只梳理ReadDefaultFstab ReadFstabFromDt调用返回false,此处只梳理ReadDefaultFstab 激活.95 消息.96 GetFstabPath() GetFstabPath() 黄色便条.97 在/odm/etc, vendor/etc, or /目录寻找fstab.<hardware.platform>分区配置文件 在/odm/etc, vendor/etc, or /目录寻找fstab.<hardware.platform>分区配置文件 激活.98 消息.99 ReadFstabFromFile ReadFstabFromFile 激活.100 消息.101 ReadFstabFile ReadFstabFile 黄色便条.102 从文件中读取fstab分区解析fstab文件内容然后调用emplace_back将读取的fstab文件结果保存到fstab... 从文件中读取fstab分区,解析fstab文件内容,然后调用emplace_back将读取的fstab文件结果保存到fstab对象中 黄色便条.104 遍历fstab对象保存的分区 遍历fstab对象保存的分区 激活.105 消息.103 MountPartitions MountPartitions 激活.106 消息.107 MountPartition MountPartition Object lifeline.108 system/core/fs_mgr/fs_mgr.cpp 工作表.109 工作表.110 工作表.111 工作表.112 system/core/fs_mgr/fs_mgr.cpp 激活.113 消息.114 fs_mgr_do_mount_one fs_mgr_do_mount_one 黄色便条.115 挂载单个分区 挂载单个分区 激活.116 消息.117 __mount __mount 黄色便条.118 执行mount命令挂载分区 执行mount命令挂载分区 消息.119 执行/system/bin/init 入参selinux_setup 执行/system/bin/init入参selinux_setup 黄色便条.120 执行init启动的第二个阶段就是传入参数"selinux_setup"执行SetupSelinux初始化权限策略 执行init启动的第二个阶段,就是传入参数"selinux_setup",执行SetupSelinux初始化权限策略 Share on Twitter Facebook LinkedIn Previous Next Leave a comment
Leave a comment