我用 cat initrd.img | gunzip | cpio -vid
解压了 initrd.img然后有一个名为 init
的可执行文件我认为这是内核运行的第一件事。然而,它有什么作用呢?有没有一个例子,我可以在 google AOSP 源代码上查看,以便我有一个想法?这个很可能是小米修改的
最佳答案
这里简单解释一下android的启动和init
- 在 android 启动时,引导加载程序会定位并加载 linux 核心。 Linux内核从启动进入用户空间 内核空间使用内核中的 initramfs 功能。
- ramdisk 本质上是一个包含所有内容的磁盘镜像 与设备的根文件系统相关联,本质上是“/” ' 目录。 initramfs 将 ramdisk 挂载到内存中( 临时文件系统)。
- 随后,initramfs 会查找内存并加载并执行 init 二进制文件。 ramdisk.img 有 C 文件,用于配置 init 是的。
- Init 是在用户空间中执行的第一个进程 负责启动核心用户空间功能并 运行。
- initrc 文件,负责配置 init 的内容 实际上确实有一组运行在脚本上的指令 某些事件触发(例如 init、fs、boot 时)。
- init继续运行并监视系统的某些变化 属性(触发器)。与这些相关的指令 触发器在属性更改时执行。 (例如USB调试开/关)
- 此外,init 还执行称为服务的 native 进程 它们本质上是守护进程,例如 installd、logd、ueventd 等。init 还会重新启动可能退出/终止的服务。守护进程 相互沟通和使用本地语言的能力有限 用于读取和写入数据的套接字。
要进一步阅读,您可以引用here还有这个youtube video
关于android - Android 的 initrd.img 中包含什么内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71331110/