android - Android 的 initrd.img 中包含什么内容?

标签 android boot initrd

我用 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/

相关文章:

android - 使用端点或 HTTP 请求

android - 当 InetAddress 改变时 ServerSocket 会发生什么?

android - android中 Activity 的单个实例

Android 自动启动应用程序

android - Android 系统是在一个进程中向多个接收者多次发送 BOOT_COMPLETED Intent 还是只发送一次?

linux - 加载巨大的 initrd 时显示启动图像

android - 为在 Libgdx android 中支持多个屏幕提供资源

linux - 嵌入式设备上带有 ramfs 的内核 panic : No filesystem could mount root

linux - 设备 sda2 上的缓冲区 I/O 错误,逻辑 block 66326416

linux - 是否可以在不创建 initrd 镜像的情况下引导 Linux 内核?