La razón por la que no funciona correctamente es la siguiente:
El script init.rc
reside dentro del RAMDisk adjunto a la imagen de arranque.
Por lo tanto, el script init.rc
que se editó y se empujó es sobrescrito por el script propio de la imagen de arranque al reiniciar, ¡efectivamente los cambios se pierden!
Necesitas extraer la imagen de arranque, ya que cada imagen de arranque tiene el kernel y el RAMDisk. Las herramientas disponibles para hacer esto se pueden encontrar aquí.
Extracción
Cuando invocas el script split_bootimg.pl
en una imagen de arranque, recreará lo siguiente:
- boot.kernel
- boot.ramdisk.gz
Los dos archivos son obviamente autoexplicativos. Para extraer el RAMDisk, crea un directorio llamado RAMDisk y desde ese directorio, invoca esto: gzip -dc | cpio -i
, para recrear la estructura de directorios que se utiliza en el RAMDisk que se vuelca sobre el sistema de archivos en vivo al arrancar. Dentro, el archivo que contiene información pertinente es init.rc
. Ahora puedes modificarlo a tu gusto.
Volver a unir
Regresa un nivel en el directorio, y emite esto - mkbootfs ***RAMDisk*** | gzip > my_custom_ramdisk.gz
.
Luego, para "adjuntar" el kernel original a la imagen de arranque, emite lo siguiente: mkbootimg -base 0x.... -kernel boot.kernel -ramdisk my_custom_ramdisk.gz -o my_custom_boot.img
.
En este punto, se ha construido una imagen de arranque, luego esa imagen de arranque tendrá que ser flasheada a través de fastboot flash boot my_custom_boot.img
.
TL;DR
Los cambios se pierden al reiniciar porque el script no está correctamente editado, lo que requería extraer la imagen de arranque, modificarla y volver a empaquetarla. Una vez reempaquetada y luego la imagen de arranque es reflasheada, los cambios serán permanentes.
Esto se hace cada vez que se necesitan cambios.