insmod helloworld в init.rc перед монтированием файловых систем на Android
Я пытаюсь изменить файл init.rc на устройстве Nexus 7, который является рутированным. Я хочу вставить простой модуль hello world перед монтированием раздела / userdata /. Вещи, которые я пробовал:
Извлекли boot.img из устройства, распаковали виртуальный диск, внесли изменения в init.rc (которые не работают), воссоздали boot.img (с помощью инструмента mkbootimg), а затем снова прошили его на устройстве
Я поместил свой hello.ko, скомпилированный для ядра, в 2 местах: одно - это текущий каталог, в котором находится init.rc, чтобы я мог сделать что-то вроде insmod hello.ko, и он его найдет. Во-вторых, я создал каталог / lib / modules / и поместил его в этот каталог.
В моем init.rc я поместил insmod /lib/modules/hello.ko сразу после on_boot. Я также изменил файл init.flo.rc и разместил insmod до и после./mount_all, который монтирует файловую систему. Тем не менее, я не вижу загрузку моего модуля вообще. Набор разрешений был 0644 (я тоже пробовал с 0777)
Я создал init.d внутри / etc / folder и поместил loadmodule.sh, который выполняет insmod /lib/modules/hello.ko, и этот модуль загружается, но после завершения процесса загрузки.
В идеале я хочу сделать это прямо перед монтированием раздела / userdata /.
Может кто-то помочь мне с этим?
Мое устройство - Nexus 7, с flo_kernel и root, установленным busybox и т. Д.
1 ответ
Корневая файловая система на устройстве Android доступна только для чтения, поскольку вы не можете повесить какие-либо файлы за пределы корневого дерева и ожидать, что они останутся. Это та же самая причина, по которой вам нужно было извлечь виртуальный диск и упаковать его содержимое, чтобы сохранить изменение init.rc; любые файлы, которые вы также хотите найти в /
должны быть также упакованы в виртуальный диск. Android извлекает root из виртуального диска при каждой загрузке.
Более обычное расположение для этого файла будет в системном разделе, скажем, в /system/lib