Aumentar capacidad de almacenamiento interno?

KripXP

Simdualero de Bronce
5 Jun 2011
20
3
Elephone P8000
#1
Hola. Recientemente he flasheado mi TOPS A1 con Android (usando new_update_2.2_TOPSA1.zip) pero debido a que la memoria ROM es de 256MB, me he encontrado con un problema de espacio en /data...

Ahora mismo el teléfono lo tengo de la siguiente manera:
Código:
Filesystem           1K-blocks      Used Available Use% Mounted on
tmpfs                    97560        12     97548   0% /dev
tmpfs                    97560         0     97560   0% /mnt/asec
/dev/block/mtdblock8    122880    106516     16364  87% /system
/dev/block/mtdblock12    56576     42180     [B]14396  75% /data[/B]
/dev/block/mtdblock9     61440      4960     [B]56480   8% /cache[/B]
/dev/block/mtdblock1      3072      1512      1560  49% /nvram
/dev/block/mtdblock6      1152      1152         0 100% /system/secro
/dev/block/vold/179:2   520056     63054    457002  12% /data/sdext2
/dev/block/vold/179:1  1431752    277776   1153976  19% /mnt/sdcard
/dev/block/vold/179:1  1431752    277776   1153976  19% /mnt/secure/asec
El caso es que aunque estoy usando link2SD para llevarme todo lo que puedo a la SD, contenido de la dalvik-cache incluido, y por eso link2SD me parece tan interesante, me encuentro con que la dalvik-cache sigue siendo de casi 25MB:
Código:
24.4M   /data/dalvik-cache
drwxrwx--x system   system            2011-07-06 17:15 dalvik-cache
Las dos alternativas que yo veo, aunque cualquier sugerencia es bienvenida, son:

- Mover la Dalvik-cache a /cache: Necesitaría ejecutar el siguiente script (o algo similar si es que tiene algún fallo... ya que como no lo puedo probar, no lo sé) durante el arranque. El uso de init.d parece que no funciona en Android así que tendría que meterlo en el init.rc. El problema es que init.rc va incrustado en el boot.img y aunque lo he intentado, no consigo desempaquetarlo, editarlo y reempaquetarlo de nuevo. En realidad, no consigo lo primero, esto es, desempaquetarlo.

Código:
#!/system/bin/sh
#
# Move dalvik-cache to /cache

if [ ! -d /cache/dalvik-cache ]
then
	busybox rm -rf /cache/dalvik-cache /data/dalvik-cache
	mkdir /cache/dalvik-cache /data/dalvik-cache
fi

busybox chown 1000:1000 /cache/dalvik-cache
busybox chmod 0771 /cache/dalvik-cache

# bind mount dalvik-cache
busybox mount -o bind /cache/dalvik-cache /data/dalvik-cache
busybox chown 1000:1000 /data/dalvik-cache
busybox chmod 0771 /data/dalvik-cache
- Cambiar tamaño de las particiones: Sacar algunos MG de /dev y algunos otros de /cache y cederlos a /data. Esta sugerencia quizá es una completa locura ya que no tengo ni idea de si se puede o no hacer, y ni siquiera cómo se haría.

En fin, a ver si se os ocurre algo.

Gracias.
 

KripXP

Simdualero de Bronce
5 Jun 2011
20
3
Elephone P8000
#2
Por si a alguien pudiese servirle...

De momento no he encontrado la forma de desempaquetar/reempaquetar el boot.img, y dado que no puedo modificar el init.rc, he aplicado el siguiente script sobre /system/etc/install-recovery.sh. Resulta que este script se ejecuta durante la ejecución del init.rc (al menos en el kernel de mi teléfono). Me di cuenta de ello tras instalar la aplicación link2sd que también hace uso de este truco:

Código:
#!/system/bin/sh

#############################
# Move dalvik-cache to /cache
#############################

if [ ! -d /cache/dalvik-cache ]
then
	rm -r /cache/dalvik-cache /data/dalvik-cache
	mkdir /cache/dalvik-cache /data/dalvik-cache
fi

chown 1000:1000 /cache/dalvik-cache
chmod 0771 /cache/dalvik-cache

# bind mount dalvik-cache
mount -o bind /cache/dalvik-cache /data/dalvik-cache
chown 1000:1000 /data/dalvik-cache
chmod 0771 /data/dalvik-cache

# remove debugger memory dumps
rm /data/tombstones/*
rm /data/anr/*
Es importante dar permisos 755 al script para que se ejecute durante el arranque, claro:
Código:
ls -l /etc/install-recovery.sh
-rwxr-xr-x root     root          602 2011-07-17 11:30 install-recovery.sh
Ciertamente preferiría haber hecho esto mismo sobre una partición EXT2/3/4 en la tarjeta SD para no ocupar espacio en /cache, pero resulta que el kernel que estoy usando no soporta este tipo de FS (mi gozo en un pozo :TT TT:smile::

Código:
cat /proc/filesystems
nodev   sysfs
nodev   rootfs
nodev   bdev
nodev   proc
nodev   tmpfs
nodev   debugfs
nodev   sockfs
nodev   pipefs
nodev   anon_inodefs
nodev   inotifyfs
nodev   devpts
nodev   ramfs
        vfat
        msdos
        yaffs
        yaffs2
Pero en fin, por lo menos he liberado una cantidad razonable de memoria en la partición /data a costa de la /cache:

Código:
Filesystem                Size      Used Available Use% Mounted on
tmpfs                    95.3M     12.0K     95.3M   0% /dev
tmpfs                    95.3M         0     95.3M   0% /mnt/asec
/dev/block/mtdblock8    120.0M     99.0M     21.0M  82% /system
/dev/block/mtdblock12
                         55.3M     15.2M     [B]40.1M  27% /data[/B]
/dev/block/mtdblock9     60.0M     [B]23.5M     36.5M  39% /cache[/B]
/dev/block/mtdblock1      3.0M      1.5M      1.5M  49% /nvram
/dev/block/mtdblock6      1.1M      1.1M         0 100% /system/secro
/dev/block/vold/179:2
                        507.9M     81.5M    426.3M  16% /data/sdext2
/dev/block/mtdblock9     60.0M     [B]23.5M     36.5M  39% /data/dalvik-cache[/B]
/dev/block/vold/179:1
                          1.4G    569.0M    832.3M  41% /mnt/sdcard
/dev/block/vold/179:1
                          1.4G    569.0M    832.3M  41% /mnt/secure/asec
Ahora es cuestión de seguir sacando a SD mediante link2SD todos los .apk, .dex y librerías de las nuevas aplicaciones que vaya instalando. Si además hay algo en las cachés (/data/data/) que crece demasiado, siempre puedo sacarlo manualmente a la SD mediante un symlink.

De todos modos, en mis breves ratos libres, seguiré investigando el asunto del empaquetado/desempaquetado de los .img que tan intrigado me tiene.