insmod helloworld в init.rc преди файловите системи да са монтирани на Android

Опитвам се да модифицирам файла init.rc на устройство Nexus 7, което е руутнато. Искам да направя insmod прост модул hello world преди моят /userdata/ дял да бъде монтиран. Неща, които съм пробвал:

  1. Извлече boot.img от устройството, извлече ramdisk, направи промени в init.rc (които не работят), пресъздаде boot.img (с помощта на инструмента mkbootimg) и след това го флашна отново на устройството

  2. Поставих моя hello.ko, компилиран за ядрото, на 2 места: едното е текущата директория, в която е поставен init.rc, така че мога да направя нещо като insmod hello.ko и то ще го намери. Второ, създадох /lib/modules/ директория и я поставих в нея

  3. В моя init.rc съм поставил insmod /lib/modules/hello.ko веднага след on_boot. Също така промених init.flo.rc и поставих insmod преди и след ./mount_all, който монтира файловата система. Обаче не виждам модула ми да се зарежда изобщо. Зададените разрешения бяха 0644 (опитах и ​​с 0777)

  4. Създадох init.d вътре в /etc/folder и поставих loadmodule.sh, който прави insmod /lib/modules/hello.ko и този модул се зарежда, но след като процесът на зареждане приключи.

В идеалния случай искам да го направя точно преди да монтирам дяла /userdata/.

Може ли някой да ми помогне с това?

Устройството ми е Nexus 7, с flo_kernel и root, инсталиран busybox и т.н.


person Tejas Chopra    schedule 16.05.2014    source източник


Отговори (1)


Основната файлова система на устройство с Android е "само за четене", доколкото не можете да закачите никакви файлове от основното дърво и да очаквате то да остане. Това е същата причина, поради която трябваше да извлечете ramdisk и да опаковате отново съдържанието му, за да запазите промяната в init.rc; всички файлове, които искате да намерите на /, също трябва да бъдат пакетирани в ramdisk. Android извлича root от ramdisk при всяко зареждане.

По-традиционно местоположение за този файл би било в системния дял, да речем в /system/lib

person devunwired    schedule 16.05.2014
comment
Добре. Направих промяната в init.rc и се опитвам да insmod на hello.ko от директорията /system/lib. Проблемът е, че виждам как модулът се зарежда, но след като файловата система е монтирана. Въпреки че insmod е поставен на ред над mount_all. Но ще продължа да опитвам :-). Второ, нека приемем, че правя нещо подобно за recovery.img, т.е. модифицирам скрипта init.rc, преопаковам и флашвам възстановяването, рестартирам системата си, не мога да видя моя модул, зареден в моя журнал за възстановяване (дори mkdir не преминава) . Изпускам ли нещо? Трябва ли да модифицирам /sbin/recovery/ и ако да, има ли начин да го направя? Благодаря - person Tejas Chopra; 16.05.2014