4 votos

Creando y habilitando una partición de intercambio de almacenamiento interno en el Android Kitkat rooteado

Sistema: Teléfono con Android 4.4 (rom actual: CM 11 Milestone 6) con 1GB de memoria RAM, mucho almacenamiento interno, pero sin ranura para tarjetas SD. El esquema de partición de mi teléfono es CyanogenMod 11 sin modificar.

Problema: El mata-memoria bajo/el manejador de OOM en mi teléfono sigue matando procesos vitales del sistema como la pantalla de bloqueo, o incallui, o acore, causando en el mejor de los casos congelamientos largos, y más a menudo bloqueos suaves y duros del sistema. Probablemente estoy ejecutando aplicaciones que empujan la RAM más allá del mínimo del sistema, y está haciendo una elección subóptima del proceso de fondo a matar. Busqué un ajuste de Lowmemkiller pero no llegué a ninguna parte.

Como el problema es la ram y no la CPU, quiero intentar habilitar el almacenamiento interno basado en el intercambio en lugar de zRAM como solución, que el teléfono debería manejar. Pero no puedo encontrar instrucciones claras de cómo hacerlo. Todas las páginas de instrucciones que encontré son específicas para el escritorio y no para Android, son específicas para el almacenamiento externo (tarjeta SD) ("partición usando USB+Windows"), asumen que quieres un archivo no basado en el intercambio de particiones, o sugieren una aplicación de Google Play para usar. Ninguno explica paso a paso cómo hacerlo realmente.

Asumiendo que he leído las advertencias y conozco los riesgos, y quiero seguir adelante de todos modos, ¿cómo lo hago? Sólo quiero obtener una lista de los comandos de consola de ejemplo para usar el intercambio basado en particiones. Asumo que va algo así:

  1. Cambiar el tamaño de las particiones o subparticiones existentes para crear espacio de sobra para una partición de intercambio dedicada de tamaño fijo.
  2. Crear o definir una nueva partición en el espacio libre, y asegurarse de que está formateada como swap, o el sistema operativo la formateará o utilizará como swap en el arranque.
  3. Edita algunos otros archivos de sistema para asegurar que el intercambio se monte y se habilite adecuadamente en el arranque, para que el sistema operativo pueda reconocerlo y utilizarlo. (fstab, o algo más?)
  4. Deshabilitar o privar de prioridad a zRAM, y editar el intercambio a unos 20-30.
  5. Reiniciar, cruzar los dedos y esperar que lo haya hecho bien.

Mi actual *nivel de experiencia de Nix: Sé que Linux utiliza particiones y subparticiones, que las nuevas particiones y los cambios de partición probablemente me necesiten para editar manualmente fstab u otros archivos, y que las ediciones manuales también pueden ser necesarias para asegurar que las particiones se montarán/habilitarán/utilizarán en el arranque. No he usado los comandos reales o cambiado los archivos reales, así que no sé qué esperar. Me siento cómodo con la consola, pero esta es un área un poco nueva para mí.

¿Cómo hago esto, paso a paso, y cuáles son los comandos que usaría si no son obvios? Puedo deducir el resto a partir de eso.

6voto

Izzy Puntos 45544

Sólo una idea en bruto, no probada/verificada por mí mismo:

El intercambio también se puede establecer usando un archivo de intercambio, así que podrías probar fácilmente si funciona en absoluto. Prueba a través de adb shell o una aplicación terminal, después de convertirse en Root, si el dd , mkswap y swapon los comandos están disponibles. Si es así, puede intentarlo:

# create a file to be used for swapping
# (adjust the filename to where the file should reside, and the count
# to the size in kb it should occupy)
dd if=/dev/zero of=</path/to/swapfile> bs=1024 count=65536

# initialize the file for swap use
# (use the file created in the previous step)
mkswap </path/to/swapfile>

# enable swapping
swapon </path/to/swapfile>

# to disable swapping to that file:
# swapoff </path/to/swapfile>

Hay formas de ajustar esto (por ejemplo, estableciendo valores específicos para intercambio ) - pero con los pasos descritos se puede probar fácilmente si funciona en absoluto, sin gran peligro de romper cosas. Ni siquiera se requiere un reinicio. En el mejor de los casos, simplemente funciona - en el peor de los casos no lo hace, y puede que tengas que borrar manualmente el </path/to/swapfile> ;)

0 votos

Dd funcionó una vez que sustituí -if/-of por if=/of=, respectivamente. mkswap no dio ninguna respuesta (puede ser que funcione si no hay un problema que reportar). swapon dio error (el mensaje era mínimo: "swapon failed for /path/and/file" ). No hay opción verbosa para swapon, 3GB de sobra; no pude ver cómo aprender cuál era el problema.

0 votos

Perdón por la errata con -if/-of (fijo). ¿Con qué tamaño de archivo has probado? ¿En qué almacenamiento se encuentra el archivo de intercambio (por ejemplo, una tarjeta externa o interna)?

0 votos

Me viene a la mente una cosa más: Puede ser que el kernel no tenga soporte de swap. Puedes comprobarlo con esta aplicación .

3voto

vasily-vm Puntos 166

Yo tenía el mismo problema. Probé cuatro aplicaciones que fallaron. Sé cómo hacer esto en otras distribuciones de Linux, que también se muestran manualmente arriba, aún así fallaron. Intenté otras ideas dadas arriba: moverme a otros puntos de montaje. La mayoría se te niega, otros son demasiado pequeños para valer la pena.

Entonces noté que cuando corría df

Vi una salida como esta:

/storage/sdcard0
/mnt/media_rw/sdcard0

Usando el /mnt en lugar de /storage o /sdcard parece haberme permitido habilitar el intercambio con éxito.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X