From bf8ead27cd07fac759999e52b3ea1252f3318d82 Mon Sep 17 00:00:00 2001 From: renjianbo <18691577328@163.com> Date: Mon, 12 Jan 2026 14:16:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .obsidian/workspace.json | 26 +-- Bootloader到Init.md | 125 +++++++++++++ Launcher启动流程.md | 3 + SystemServer核心服务.md | 171 ++++++++++++++++++ Zygote进程启动.md | 167 +++++++++++++++++ .../Areas/01-系统启动流程/Bootloader到Init.md | Bin 44 -> 3994 bytes .../Areas/01-系统启动流程/Bootloader到Init.md.bak | Bin 40 -> 0 bytes .../Areas/01-系统启动流程/Launcher启动流程.md | Bin 40 -> 5862 bytes .../Areas/01-系统启动流程/SystemServer核心服务.md | Bin 50 -> 4971 bytes .../Areas/01-系统启动流程/Zygote进程启动.md | Bin 36 -> 4957 bytes 10 files changed, 479 insertions(+), 13 deletions(-) create mode 100644 Bootloader到Init.md create mode 100644 Launcher启动流程.md create mode 100644 SystemServer核心服务.md create mode 100644 Zygote进程启动.md delete mode 100644 docs/Obsidian笔记体系/Areas/01-系统启动流程/Bootloader到Init.md.bak diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 5832c0d..d32f2fe 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -13,12 +13,12 @@ "state": { "type": "markdown", "state": { - "file": "docs/Obsidian笔记体系/Areas/07-系统安全/密钥存储与加密.md", + "file": "docs/Obsidian笔记体系/Areas/01-系统启动流程/Zygote进程启动.md", "mode": "source", "source": false }, "icon": "lucide-file", - "title": "密钥存储与加密" + "title": "Zygote进程启动" } } ] @@ -185,16 +185,22 @@ }, "active": "f1ecba89214e3cc5", "lastOpenFiles": [ - "docs/Obsidian笔记体系/Areas/07-系统安全/漏洞案例库.md", - "docs/Obsidian笔记体系/Areas/01-系统启动流程/Launcher启动流程.md", - "docs/Obsidian笔记体系/Areas/01-系统启动流程/README.md", "docs/Obsidian笔记体系/Areas/01-系统启动流程/SystemServer核心服务.md", - "docs/Obsidian笔记体系/Areas/01-系统启动流程/Zygote进程启动.md", + "docs/Obsidian笔记体系/Areas/01-系统启动流程/Launcher启动流程.md", + "Zygote进程启动.md", + "SystemServer核心服务.md", "docs/Obsidian笔记体系/Areas/01-系统启动流程/Bootloader到Init.md", + "docs/Obsidian笔记体系/Areas/01-系统启动流程/README.md", + "docs/Obsidian笔记体系/Areas/01-系统启动流程/Zygote进程启动.md", + "Launcher启动流程.md", + "Bootloader到Init.md", + "docs/Obsidian笔记体系/README.md", + "README.md", + "docs/Obsidian笔记体系/Areas/07-系统安全/密钥存储与加密.md", + "docs/Obsidian笔记体系/Areas/07-系统安全/漏洞案例库.md", "docs/Obsidian/2026-01-05 个人文档管理.md", "docs/Obsidian笔记体系/Areas/01-系统启动流程/Bootloader到Init.md.bak", "docs/学习笔记/gerrit分支规范.md", - "docs/Obsidian笔记体系/README.md", "docs/Obsidian笔记体系/MOCs/Android Framework知识体系图.md", "docs/Obsidian笔记体系/MOCs/源码阅读地图.md", "docs/Obsidian笔记体系/MOCs/高频问题索引.md", @@ -206,12 +212,6 @@ "docs/Obsidian笔记体系/Areas/02-Activity管理/异常恢复机制.md", "docs/Obsidian笔记体系/Areas/03-Window系统/WindowManagerService架构.md", "docs/Obsidian笔记体系/Areas/03-Window系统/SurfaceFlinger交互流程.md", - "docs/Obsidian笔记体系/Areas/03-Window系统/README.md", - "docs/Obsidian笔记体系/Areas/03-Window系统/窗口类型与层级.md", - "docs/Obsidian笔记体系/Areas/03-Window系统/触摸事件传递.md", - "docs/Obsidian笔记体系/Areas/02-Activity管理/Activity启动流程(跨进程).md", - "docs/Obsidian笔记体系/Areas/02-Activity管理/Activity栈管理(Task&Stack).md", - "docs/Obsidian笔记体系/Areas/02-Activity管理/README.md", "docs/Obsidian笔记体系/Config/自定义脚本/源码链接生成器.py", "docs/Obsidian笔记体系/Config/自定义脚本/自动生成日报.js", "docs/Obsidian笔记体系/Config/主题与样式.css", diff --git a/Bootloader到Init.md b/Bootloader到Init.md new file mode 100644 index 0000000..19d35ba --- /dev/null +++ b/Bootloader到Init.md @@ -0,0 +1,125 @@ +# Bootloader到Init:Android系统启动的第一阶段 + +Android系统启动是一个复杂的过程,从硬件上电到用户界面呈现,涉及多个阶段的协同工作。本文详细分析从Bootloader到Init进程的完整启动流程。 + +## 启动流程概览 + +```mermaid +graph TD + A[硬件上电] --> B[Bootloader执行] + B --> C[加载内核] + C --> D[内核初始化] + D --> E[挂载文件系统] + E --> F[启动Init进程] + F --> G[解析init.rc] + G --> H[启动系统服务] +``` + +## 1. Bootloader阶段 + +### 1.1 硬件初始化 +- **电源管理**:初始化CPU、内存、时钟等硬件 +- **外设检测**:识别存储设备、显示设备等 +- **安全验证**:验证引导镜像的完整性和签名 + +### 1.2 引导加载程序 +- **Primary Bootloader**:芯片厂商提供的初始引导程序 +- **Secondary Bootloader**:设备厂商定制的引导程序(如U-Boot) +- **引导参数传递**:通过设备树(Device Tree)或ATAGS向内核传递参数 + +### 1.3 内核加载 +- **镜像选择**:根据启动模式选择相应的内核镜像 +- **内存布局**:设置内核加载地址和内存映射 +- **跳转到内核**:将控制权交给内核入口点 + +## 2. 内核启动阶段 + +### 2.1 内核初始化 +- **体系结构相关初始化**:CPU架构特定的设置 +- **内存管理初始化**:建立页表,初始化内存分配器 +- **设备树解析**:解析硬件配置信息 + +### 2.2 驱动加载 +- **早期驱动**:控制台、定时器等基础驱动 +- **存储驱动**:加载文件系统所需的驱动 +- **设备初始化**:初始化各种硬件设备 + +### 2.3 挂载文件系统 +- **根文件系统**:挂载ramdisk或实际存储 +- **必要目录创建**:创建/dev、/proc、/sys等目录 +- **设备节点创建**:创建设备文件节点 + +## 3. Init进程启动 + +### 3.1 Init进程的职责 +- **第一个用户空间进程**:PID为1的特殊进程 +- **系统服务管理**:启动和管理所有系统服务 +- **进程监控**:监控子进程状态,处理僵尸进程 + +### 3.2 init.rc配置文件 +```bash +# init.rc示例片段 +on early-init + # 早期初始化 + mkdir /dev + mount tmpfs tmpfs /dev + +on init + # 主初始化阶段 + symlink /system/bin /bin + +on boot + # 启动系统服务 + start servicemanager + start surfaceflinger +``` + +### 3.3 关键系统服务启动顺序 +1. **servicemanager**:Binder IPC服务管理器 +2. **surfaceflinger**:图形合成服务 +3. **zygote**:应用进程孵化器 +4. **system_server**:系统核心服务 + +## 4. 调试与优化 + +### 4.1 启动时间分析 +- **bootchart工具**:可视化启动时间分布 +- **内核日志分析**:`dmesg | grep -i "init"` +- **init日志**:`logcat -b events | grep "boot_progress"` + +### 4.2 常见问题排查 +- **启动卡住**:检查驱动初始化顺序 +- **服务启动失败**:查看服务依赖关系 +- **权限问题**:检查SELinux策略 + +### 4.3 优化建议 +- **并行启动**:优化服务启动顺序,减少依赖等待 +- **延迟加载**:非关键服务延迟到系统启动后加载 +- **预加载优化**:预加载常用库和资源 + +## 5. 实践案例 + +### 5.1 自定义启动服务 +```bash +# 在init.rc中添加自定义服务 +service myservice /system/bin/myservice + class main + user system + group system + oneshot +``` + +### 5.2 启动参数调优 +- **内核参数**:调整内存分配、调度策略 +- **init参数**:设置环境变量、调整服务优先级 +- **系统属性**:配置系统特性开关 + +## 总结 + +Bootloader到Init是Android系统启动的基础阶段,理解这一过程对于: +- **系统定制开发**:修改启动流程满足特定需求 +- **性能优化**:减少启动时间,提升用户体验 +- **问题排查**:快速定位启动阶段的问题 +- **安全加固**:增强启动过程的安全性 + +掌握这一阶段的原理和技术细节,是成为高级Android Framework工程师的重要基础。 \ No newline at end of file diff --git a/Launcher启动流程.md b/Launcher启动流程.md new file mode 100644 index 0000000..6cfc657 --- /dev/null +++ b/Launcher启动流程.md @@ -0,0 +1,3 @@ +# Launcher启动流程 + +Android系统Launcher的完整启动流程分析。 \ No newline at end of file diff --git a/SystemServer核心服务.md b/SystemServer核心服务.md new file mode 100644 index 0000000..0c5914c --- /dev/null +++ b/SystemServer核心服务.md @@ -0,0 +1,171 @@ +# SystemServer核心服务:Android系统服务的基石 + +SystemServer是Android系统的核心服务进程,负责启动和管理所有系统级服务。本文详细分析SystemServer的启动流程、核心服务架构和关键实现。 + +## SystemServer启动流程概览 + +```mermaid +graph TD + A[Zygote fork SystemServer] --> B[加载SystemServer类] + B --> C[执行main方法] + C --> D[初始化系统上下文] + D --> E[启动引导服务] + E --> F[启动核心服务] + F --> G[启动其他服务] + G --> H[进入Looper循环] +``` + +## 1. SystemServer进程创建 + +### 1.1 从Zygote孵化 +- **进程创建**:Zygote通过fork创建SystemServer进程 +- **资源继承**:继承Zygote预加载的类和资源 +- **权限设置**:设置系统级权限和用户组 + +### 1.2 关键启动代码 +```java +// SystemServer.java +public static void main(String[] args) { + new SystemServer().run(); +} + +private void run() { + // 1. 初始化系统环境 + Looper.prepareMainLooper(); + System.loadLibrary("android_servers"); + + // 2. 创建系统上下文 + createSystemContext(); + + // 3. 启动系统服务 + startBootstrapServices(); + startCoreServices(); + startOtherServices(); + + // 4. 进入事件循环 + Looper.loop(); +} +``` + +## 2. 引导服务(Bootstrap Services) + +### 2.1 关键引导服务 +- **Installer**:应用安装服务 +- **ActivityManagerService**:Activity管理服务 +- **PowerManagerService**:电源管理服务 +- **PackageManagerService**:包管理服务 +- **DisplayManagerService**:显示管理服务 + +### 2.2 服务依赖关系 +```java +// 引导服务启动顺序 +mSystemServiceManager.startService(Installer.class); +mActivityManagerService = mSystemServiceManager.startService( + ActivityManagerService.Lifecycle.class).getService(); +mActivityManagerService.setSystemProcess(); +``` + +## 3. 核心服务(Core Services) + +### 3.1 系统核心服务 +- **BatteryService**:电池服务 +- **UsageStatsService**:使用统计服务 +- **WebViewUpdateService**:WebView更新服务 +- **DropBoxManagerService**:日志收集服务 + +### 3.2 关键配置服务 +- **AlarmManagerService**:闹钟服务 +- **InputManagerService**:输入管理服务 +- **WindowManagerService**:窗口管理服务 +- **VrManagerService**:VR管理服务 + +## 4. 其他服务(Other Services) + +### 4.1 系统功能服务 +- **CameraService**:相机服务 +- **AudioService**:音频服务 +- **SensorService**:传感器服务 +- **BluetoothService**:蓝牙服务 + +### 4.2 网络与连接服务 +- **ConnectivityService**:连接服务 +- **NsdService**:网络服务发现 +- **VpnManagerService**:VPN管理服务 +- **EthernetService**:以太网服务 + +## 5. 服务生命周期管理 + +### 5.1 服务启动顺序 +1. **基础服务**:Installer, PowerManager +2. **核心框架**:ActivityManager, PackageManager +3. **硬件抽象**:DisplayManager, SensorService +4. **应用服务**:WindowManager, InputManager + +### 5.2 服务依赖解析 +- **显式依赖**:通过构造函数参数传递 +- **隐式依赖**:通过ServiceManager获取 +- **循环依赖**:使用代理模式解决 + +## 6. 性能优化与调试 + +### 6.1 启动时间优化 +- **并行启动**:无依赖服务并行启动 +- **延迟加载**:非关键服务延迟启动 +- **预加载优化**:预加载常用资源 + +### 6.2 内存管理 +- **服务内存监控**:监控各服务内存使用 +- **资源释放**:及时释放未使用资源 +- **内存泄漏检测**:定期检查内存泄漏 + +### 6.3 调试工具 +```bash +# 查看SystemServer日志 +adb logcat -s SystemServer:I + +# 分析服务启动时间 +adb shell dumpsys activity service SystemServer + +# 性能分析 +adb shell systrace.py system_server +``` + +## 7. 定制化开发 + +### 7.1 添加自定义服务 +```java +// 自定义系统服务 +public class MySystemService extends SystemService { + public MySystemService(Context context) { + super(context); + } + + @Override + public void onStart() { + publishBinderService("my_service", new MyServiceImpl()); + } +} + +// 在SystemServer中注册 +mSystemServiceManager.startService(MySystemService.class); +``` + +### 7.2 服务配置调整 +- **启动参数**:调整服务启动参数 +- **资源限制**:设置服务资源限制 +- **优先级调整**:调整服务运行优先级 + +### 7.3 厂商定制 +- **硬件适配**:添加硬件特定服务 +- **功能扩展**:扩展系统功能 +- **性能调优**:针对特定硬件优化 + +## 总结 + +SystemServer作为Android系统的服务基石,其设计和实现直接影响: +- **系统稳定性**:服务的可靠性和容错能力 +- **性能表现**:启动时间和运行效率 +- **功能扩展**:系统功能的可扩展性 +- **调试维护**:问题的定位和解决效率 + +深入理解SystemServer的架构和实现,对于Android Framework工程师进行系统定制、性能优化和问题排查具有重要意义。 \ No newline at end of file diff --git a/Zygote进程启动.md b/Zygote进程启动.md new file mode 100644 index 0000000..1cd4f49 --- /dev/null +++ b/Zygote进程启动.md @@ -0,0 +1,167 @@ +# Zygote进程启动:Android应用进程的孵化器 + +Zygote是Android系统的特殊进程,负责孵化(fork)应用进程,实现应用的快速启动和资源共享。本文详细分析Zygote的启动流程、工作原理和优化策略。 + +## Zygote启动流程概览 + +```mermaid +sequenceDiagram + participant Init + participant Zygote进程 + participant SystemServer + participant App进程 + + Init->>Zygote进程: 启动Zygote + Zygote进程->>Zygote进程: 预加载类和资源 + Zygote进程->>SystemServer: fork SystemServer + SystemServer->>SystemServer: 启动系统服务 + Zygote进程->>App进程: fork 应用进程 + App进程->>App进程: 执行应用代码 +``` + +## 1. Zygote进程创建 + +### 1.1 Init启动Zygote +- **init.rc配置**:在init.rc中配置Zygote服务 +- **进程创建**:init进程fork出Zygote进程 +- **权限设置**:设置Zygote进程权限和资源限制 + +### 1.2 Zygote服务配置 +```bash +# init.rc中的Zygote配置 +service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server + class main + socket zygote stream 660 root system + onrestart write /sys/android_power/request_state wake + onrestart write /sys/power/state on + onrestart restart media + onrestart restart netd +``` + +## 2. Zygote初始化 + +### 2.1 预加载机制 +- **类预加载**:预加载常用Java类 +- **资源预加载**:预加载常用资源 +- **库预加载**:预加载系统库 + +### 2.2 关键初始化代码 +```java +// ZygoteInit.java +public static void main(String argv[]) { + // 1. 预加载类和资源 + preload(); + + // 2. 启动SystemServer(如果指定) + if (argv.length > 1 && argv[1].equals("--start-system-server")) { + startSystemServer(); + } + + // 3. 进入Socket监听循环 + runSelectLoop(); +} +``` + +## 3. 进程孵化机制 + +### 3.1 fork流程 +1. **接收请求**:通过Socket接收进程创建请求 +2. **参数解析**:解析应用启动参数 +3. **进程fork**:调用fork系统调用创建新进程 +4. **子进程初始化**:在新进程中执行应用代码 + +### 3.2 关键孵化代码 +```java +// ZygoteConnection.java +private Runnable handleChildProc(Arguments parsedArgs, FileDescriptor[] descriptors) { + // 关闭Zygote的Socket + closeSocket(); + + // 设置进程名 + Process.setArgV0(parsedArgs.niceName); + + // 执行应用入口 + return ZygoteInit.zygoteInit(parsedArgs.targetSdkVersion, + parsedArgs.remainingArgs, null); +} +``` + +## 4. 资源共享优化 + +### 4.1 Copy-on-Write机制 +- **内存共享**:父子进程共享只读内存页 +- **写时复制**:修改时复制内存页 +- **资源复用**:复用预加载的类和资源 + +### 4.2 预加载内容 +- **系统类**:android.*, java.*, javax.* 等 +- **框架资源**:主题、字符串、图片等 +- **本地库**:系统so库 + +## 5. 性能优化策略 + +### 5.1 启动时间优化 +- **延迟预加载**:非关键类延迟加载 +- **类过滤**:过滤不常用的类 +- **并行加载**:并行预加载资源 + +### 5.2 内存优化 +- **内存共享**:最大化内存共享 +- **资源清理**:及时清理无用资源 +- **内存监控**:监控Zygote内存使用 + +### 5.3 稳定性优化 +- **进程隔离**:确保进程间隔离 +- **异常处理**:完善的异常处理机制 +- **重启恢复**:Zygote崩溃后的恢复 + +## 6. 调试与问题排查 + +### 6.1 常见问题 +- **Zygote崩溃**:导致所有应用重启 +- **内存泄漏**:预加载资源泄漏 +- **启动失败**:应用进程创建失败 + +### 6.2 调试工具 +```bash +# 查看Zygote日志 +adb logcat -s Zygote:I + +# 分析Zygote内存使用 +adb shell dumpsys meminfo zygote + +# 跟踪进程创建 +adb shell strace -p +``` + +### 6.3 性能分析 +- **启动时间**:分析应用启动时间 +- **内存占用**:分析内存共享效果 +- **CPU使用**:分析Zygote CPU使用率 + +## 7. 定制化开发 + +### 7.1 预加载策略调整 +- **自定义类**:添加自定义预加载类 +- **资源优化**:优化预加载资源列表 +- **库管理**:管理预加载的本地库 + +### 7.2 进程管理优化 +- **进程限制**:调整进程创建限制 +- **优先级管理**:优化进程优先级 +- **资源控制**:控制进程资源使用 + +### 7.3 厂商定制 +- **硬件适配**:针对特定硬件优化 +- **功能扩展**:扩展Zygote功能 +- **性能调优**:针对特定场景优化 + +## 总结 + +Zygote作为Android应用进程的孵化器,其设计和实现直接影响: +- **应用启动速度**:通过预加载和资源共享加速启动 +- **系统内存效率**:通过Copy-on-Write减少内存占用 +- **系统稳定性**:确保进程创建的安全可靠 +- **系统扩展性**:支持多种应用场景和需求 + +深入理解Zygote的工作原理和优化策略,对于Android Framework工程师进行系统性能优化、问题排查和功能扩展具有重要意义。 \ No newline at end of file diff --git a/docs/Obsidian笔记体系/Areas/01-系统启动流程/Bootloader到Init.md b/docs/Obsidian笔记体系/Areas/01-系统启动流程/Bootloader到Init.md index e05e1f1781630c8bda510982fc0b8a427bc0ed36..bec5ff546ac7171a29a16a5507f7100d324dd33c 100644 GIT binary patch literal 3994 zcmZu!%T60v6W;qNT49F-Q9`mEDG5pbNVABP%nC(=107-o+o)|a!)O-9V6csE5H1D` z#ssjFfNcae#uxlB({;Lgl~?%dRJEN($t*Ia>wI2>Wz?@=5>1}T~nHS=DqTI)TQ8mkH(ztzfp#Uep4Qg{je%xMYE82LuVh8 z^vM{+56n&nmLlSy!ICE=86D$q5Z!~~3M4jJI7-5&V0=1;tH_*DaoIWvD>mz z93xAgk@WePS^SI{@t|~An_$s%68+BxvPzLlLcH)s#!I=lH|!unufzkGqgJ0hPA3k%NVFzvd!T zgtdfmb_1ED3{nPjU*V%%8zciX)1>&N=JC3 zI4R;_6_KOrN6&<+yw+3|u_C(p==G!LuOPF^EMqL|>1AO=u^C7VrT95_RwyP`zK|ht za4nK$`;L?f&`z_^*lj>_T?RnJW*pasN)C+$I1h31$~Q)*>@)?rD(r=@D)7j>vA3W%kBru~tt)a2>CZ;^ny7n!xEBpIDkpjGBYAB| z@2-(Cz4M8#!6&i5DC3D-^w~>>k-}oXE`_mcEEooh3CB% z=g*{r69(z3yo2Q(ynSd9Zx7^~Mj^xpISjgN4kT-J_8k!mS-B8K?|?D$`k`^1ddY>% zqESq80DQ3L`iSy#TjKzbW{y_JF;EB8+}=q~-~$pG%KO%~d?`4z z5v14;iDb%r!o2)UhInA&D6?nXm!`FK$xWO5efeTkZ#3^A2ze&TaTYO@MlW}1XOkt0 z%dSR^7YihEF=t2T0D1Q9t|A%8kU>A;EMrf_cwL0%B}0!Ev3>IQ7X9q?$cK zn1`GXIW6A01Mgh}Jt_8Q{bmI_q+AL7K1FqF({n=-N|SIvVSe`MLSMZfCOw)W%fx^B zXMI5>=$&~Nu>b9gq)LY}z0vAxvah+E&4D@Zw8!^Bk(Car-n(x-K1KdR+NFxO*j8Kx?ol|^hQc=XHf?e z{ekSIL_ayvw=Q}0BEHG|PQ1qq;*JK9D|RJaF^fymgWDJ!4}{^iEVhoJyTz&qHa_W9 z15?Vs%9N(gC_^6Qj;#Nkal*)-jNr4={;3IfP#Jows2^2dFwleDkq-Td_aBu60thBj zKaj(}(J+hi)>hd%%!<^S$RD#ae65lNy^|)@ay7{xbKCntIj*SOemGwo8XTRQm&Xjt z9~-$97V0;9W^EJMfz%))IK-^&4BK`XdG+*nk8k#G<80H|IPQ5mqHyZ5otb5O>|EDz z!(@{L=Mzp(m~!%7FQ=ip${xtxe-q&_TXnOW=RQv=ti64vudRjUxSKl`f5@a9^Ts+{ z>~Z3`3W18SzE;YP{yM?!~tF2H?L}<5XEl6F+M~(naf{sMCsQtnqNL79AZ@Jd9JA7>GMgyxA| zYRMxRo)bh{hLNhk;R2+y)^eIbsL3W3UdTw)Xcoz+U8eJW+;q7Tv^4N%IZ|)|ZileK zR0a{k*W4$UOD>tW9(?$0`^94pr;@!h(1QY@dQjjb z^c6xXFX!l5Ld0<(SMXtqtAq44Tft_HGv4}^#iH3+R-WN%qyFXBK48C;?}tVdZCJ}m L+-W%F@`d_;EU?ke literal 44 ucmaFAfA9PKdzBd!7@QdLfv|)j2S_F|q%fp16fqbCc{1cNWCBIGfDiyn)(cMn diff --git a/docs/Obsidian笔记体系/Areas/01-系统启动流程/Bootloader到Init.md.bak b/docs/Obsidian笔记体系/Areas/01-系统启动流程/Bootloader到Init.md.bak deleted file mode 100644 index 08028efd966704a3ac7a2679f7576980e36b2db2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40 rcmezWPnki1!HFRs2um1pfMg;=3PUPG5raXHCqo`XCQy`@fr|kE(L@M& diff --git a/docs/Obsidian笔记体系/Areas/01-系统启动流程/Launcher启动流程.md b/docs/Obsidian笔记体系/Areas/01-系统启动流程/Launcher启动流程.md index 886c8467b4425864e4688a3afb0f791b835d1450..f1505963a2e76fd647103455a01a4949f5805060 100644 GIT binary patch literal 5862 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 LGzAk#JUjgXF(}2b literal 50 ycmaFAfA9PKdzBd!7=jrp8HyQ77*ZK>f$UUNq9-Xgs|alvtYx8fUzO`n05DzKk*l~x@u-<0?CIk?yjn?u6pX}>OQF-Ut<4y z(rvlAf4tyrJmpgrKDKdkIDgwr*_M&wwP|m9gXX;XA-?s2kI(W~8?hK^iIPsNwjUI^d7^$2bj{Cby{_a~+JUJ{pwCqPGhoh=p5aQ+6UU8cS=HFHbk3x7WD ze;5+ADL%Z@sQvbPZa|ba#cbZMtaY5lbuf-SI>0ncAsvao4lRPQuuHN|C1}kZ{1RD-elx8 zjiHn}eNMXh%Mc%X;~yP)JM}227pbYf-DEOhOdUcMbpTdUe};Y$AVg_`k1b!cOti~j z4HXh79|^z$(f3UzM%Vr2aguJ--+FKQWvVclR}*K!Tv*`snw+`Bt|qQxn$E;5&RSay zh-|`6Hisv?qjGC2K%bX3g26_0i^eIi!Cs_RP%XFsDoG6*lmX-UnwpE4R1u4V%~w-? z`D3^aeX4RK5+w)3d0{W~zdhI+c|m^3op)(YPwWyqbs6e_j0Q3epv*|>>?f>q*5)Ag z+PVz0P0MEQXKgE~I}VHg^Sl6y$AiIm+;IW%aZ-*;n*nl@X$`cYPE5?2Vra6;C=KlZqo|NXsV4IylM6K!4I>_+ zU%Xlc2K|fHr-2O05}ic?7m1SyO7q%_&xlfi!F=diJLALeo73gU=hO1|H>@9PYYQNB zS7IKAvb|ktBgtgg;7=bgK4!9|)3pt=n`w4;-;eh$v;SetKp!eB^5z_mWNkfdX{naW ze?sw42VzN8r?Lbb1$=Elye^6HJTK3~k$~dHL)Ib}O{8_R+wEbu*j4uBm*mIQdkMgU zmUddcxDbtBTn-(T{EX02R}9_y`HXWN2?k}$hgUlhx8A}tKDEg|zVnI|l(T!yPCczB z-M?B^R+{)Z!U(C#LlaNM01e1C9RL%_19TF_AZk$m#Z@uA=U4W{&H&{+H}4d|rR}r(@ z!BKM!7uuQ%nJs`lS^!3j1c4JTVBlca5dtwHpM&2W%QPXPhGhmIw2eMl;D7HmO|2`f zvmT&*y)??Ob8s8fpC--AUR;*0t;(@3B<$!wHc9 zkd-wtw?&Ky)JXBh+$PhOqtovY95@b2#LYo0rY3M$x&lO*aC8?O_~EOTQ)dz;5bWQy zjQ$Dq)kp!x_~csxmG1W1rdo`|va&8!tH8M3y4#t0^n-3Y5Uwkz9dsW-91^xJxfiOH zqGI-@(`R4`iB%gYYJ!L|t^rK%SlK6W%Z&d+lCZ*Pd}Nq!y`-iKLEshkcmxmZ#rWhq zzfvc`=JE%ktC3e?ZjY}_05hUmaIBv~(n`@2g z|K<0>M{hJA>6A8k2|Cpms6YkfSOE#M>j@@u>;B-8+GF>i&h7pxYJ+^L2%0o0U1T?)%C-mn%1onLY|fPd zMxyv!EUl9NH)QgwRe!yo=FlV69!0Ej=;wFEXik)Z3ljODL`=LN5{Hv0{Ye&ShD7le z#8-Cw-BmKI+~SD$X)<)KJ@6gwOMG}=X)0j@Ug;@0D&|)C@mx$xb+NS7ozz?wcLEB# zc^51(^)7ZMg;K@o(bH*`>dj=K1!NgLW0()Epi7j>{{E6*eHR`+*tegmK^Lh(0~^n> zKmUYH?ES2fx)mP8GWZ=q-H{JU6sXuJ3V2sk4^5g>!pkQlPE~0I=3=G*{R&Fo`R@A$ z!c!5YD6weDE9PZ<+1Jqil;?pCWz`(!_~bJR``3VpD2H?@1q6wiU0lJ>zXPqt!6?)+ zE+Y2pvXH~!Q_VA7CDjHh&}Sq^#m5VC{_+Oxxc0&;FNf7YpOLf#cgS?1yMPkxPe}B9 z72<6Lm!^HF$qcSClI^78aKWpsE31<+Qi$d$4#*k665)A5pCn3qqD+Kdb}(KX;4>o> zbF|?tZ#L?C&D;Q7h|s_0^8&9Nz(WNH(WJ5)KDGn|E=GUlJ2Mn{{0yoUC($YqJ!}

w3q=W!Pbyr1I>1-4a;8h* z`ANS0j3lXI6ax`WqqfS{6`zMyU+Wh`lTfwtdFc-YSUF<= literal 36 qcmaFAfA9PKdzBd!7@`;|8PXZ@8A=#Z8E*G;SLufUC4#sZxEKHrY7E~1