0

我正在尝试修改已植根的 Nexus 7 设备上的 init.rc 文件。我想在挂载 /userdata/ 分区之前安装一个简单的 hello world 模块。我尝试过的事情:

  1. 从设备中提取 boot.img,提取 ramdisk,对 init.rc 进行更改(不起作用),重新创建 boot.img(使用 mkbootimg 工具),然后再次将其刷新到设备上

  2. 我已经将为内核编译的 hello.ko 放置在 2 个位置:一个是放置 init.rc 的当前目录,这样我就可以执行类似 insmod hello.ko 的操作,它会找到它。其次,我创建了 /lib/modules/ 目录并将其放在其中

  3. 在我的 init.rc 中,我在 on_boot 之后放置了 insmod /lib/modules/hello.ko。我还更改了 init.flo.rc 并将 insmod 放置在 ./mount_all 之前和之后,它会挂载文件系统。但是,我根本看不到我的模块加载。权限集是 0644 (我也尝试过 0777 )

  4. 我在 /etc/folder 中创建了 init.d 并放置了一个 loadmodule.sh ,它执行 insmod /lib/modules/hello.ko 并且该模块加载但一旦启动过程完成。

理想情况下,我想在安装 /userdata/ 分区之前立即执行此操作。

有人可以帮我弄这个吗?

我的设备是 Nexus 7,安装了 flo_kernel 和 root、busybox 等。

4

1 回答 1

0

Android 设备上的根文件系统是“只读的”,因此您不能将任何文件挂在根树上并期望它保留下来。这与您需要提取 ramdisk 并重新打包其内容以保持 init.rc 更改的原因相同;您还想定位的任何文件也/必须打包到 ramdisk 中。Android 在每次启动时从 ramdisk 中提取 root。

该文件的更常规位置是在系统分区上,例如/system/lib

于 2014-05-16T05:04:48.337 回答