1 votos

Cryptfs : el desmontaje de /data ha fallado: Dispositivo o recurso ocupado

Estoy intentando encriptar mi Nexus 5 rooteado (ejecutando CyanogenMod 13/Marshmallow) .
Esto es lo que estoy haciendo:

  1. Con el teléfono en marcha y conectado al USB, asegúrate de que /mnt/asec/ está vacío
  2. Pulsar prolongadamente el botón físico de encendido, esto hace que aparezca el diálogo de apagado
  3. Pulse prolongadamente la opción "Apagar" de la ventana emergente, confirme que desea reiniciar en modo seguro
  4. Sin iniciar ninguna aplicación, ejecute adb shell en el ordenador y luego su para obtener Root entonces pkill -KILL daemonsu para matar el demonio SuperSU
  5. Ajustes > Seguridad > Cifrar teléfono, confirmar
  6. El teléfono se reinicia, desde el tipo de ordenador adb logcat

Esto es lo que veo:

I ServiceManager: service 'drm.drmManager' died
D libEGL  : loaded /vendor/lib/egl/libEGL_adreno.so
D libEGL  : loaded /vendor/lib/egl/libGLESv1_CM_adreno.so
D libEGL  : loaded /vendor/lib/egl/libGLESv2_adreno.so
I Adreno-EGL: <qeglDrvAPI_eglInitialize:379>: QUALCOMM Build: 09/02/15, 76f806e, Ibddc658e36 
E BootAnimation: couldn't find audio_conf.txt
W BootAnimation: Audio service is not initiated.
D BootAnimation: Use save memory method, maybe small fps in actual.
D BootAnimation: Use save memory method, maybe small fps in actual.
E Cryptfs : unmounting /data failed: Device or resource busy
E Cryptfs : Bad magic for real block device /dev/block/platform/msm_sdcc.1/by-name/metadata
W vold    : type=1400 audit(0.0:19): avc: granted { read } for name="mmcblk0p28" dev="tmpfs" ino=6735 scontext=u:r:vold:s0 tcontext=u:object_r:userdata_block_device:s0 tclass=blk_file
W vold    : type=1400 audit(0.0:20): avc: granted { read open } for name="mmcblk0p28" dev="tmpfs" ino=6735 scontext=u:r:vold:s0 tcontext=u:object_r:userdata_block_device:s0 tclass=blk_file
W vold    : type=1400 audit(0.0:21): avc: granted { ioctl } for path="/dev/block/mmcblk0p28" dev="tmpfs" ino=6735 ioctlcmd=1260 scontext=u:r:vold:s0 tcontext=u:object_r:userdata_block_device:s0 tclass=blk_file
D Cryptfs : Just asked init to shut down class main
W vold    : emulated unmount requires state mounted 
E Cryptfs : unmounting /data failed: Device or resource busy
W SocketClient: write error (Broken pipe)
W SocketClient: Unable to send msg '200 8 -

En ese momento la pantalla de carga de CyanogenMod se mantiene animada durante más de 10 horas y probablemente para siempre si no la detengo. Pulsando el botón físico de encendido durante 5 segundos hace que se reinicie y arranque normalmente esta vez. Evidentemente la codificación no se ha realizado.

He intentado todo el procedimiento dos veces.

¿Qué podría estar causando esto? Cryptfs : unmounting /data failed: Device or resource busy ¿Problema?

2voto

chris Puntos 6

Como he encontrado en este informe de errores puede ver los archivos abiertos actualmente ejecutando este comando en un segundo shell:

while true; do lsof | grep /data; sleep 0.2; done

Esto comprueba cada 0,2s qué archivos están todavía en uso en /data. En mi caso era el SuperSU de chainfire, que tenía un archivo de registro abierto.

Además, he descubierto que una segunda partición de la tarjeta SD estaba montada en /data/sdext2:

mount | grep "/data"

Esto se debió a una aplicación "Link2SD". Con este comando fui capaz de averiguar, donde se produce el montaje:

adb shell
# make system partition writable
mount -o remount,rw /system
grep -R "/data/sdext2" /system

He comentado los comandos "mount" y he reiniciado mi teléfono. Ahora la codificación funciona bien.

1voto

donSchoe Puntos 275

Me he pasado todo el día con el tema del cifrado interminable (LG Nexus 5, Cyanogenmod 13) y de alguna manera se me ocurrió comprobar los registros y finalmente me encontré con esta pregunta aquí en Stack Exchange. La sugerencia de @mattelacchiatos es buena, pero un poco complicada. TL;DR Pude arreglar esto simplemente arrancando en modo seguro.

Para que conste, este es el registro del error que tuve (igual que el OP):

01-24 00:15:05.132   871  1170 D CryptdConnector: SND -> {1 cryptfs getfield SystemLocale}
01-24 00:17:05.077   871   910 D CryptdConnector: SND -> {2 cryptfs setfield SystemLocale de-DE}
05-26 20:33:36.401   871   910 D CryptdConnector: SND -> {3 cryptfs setfield SystemLocale en-US}
05-26 20:35:05.696   871  1760 D CryptdConnector: SND -> {4 cryptfs setfield PatternVisible 0}
05-26 20:35:05.697   871  1760 D CryptdConnector: SND -> {5 cryptfs setfield PasswordVisible 1}
05-26 20:35:05.706   871  3096 D CryptdConnector: SND -> {6 cryptfs setfield SystemLocale en-US}
05-26 20:35:06.491   871  3095 D CryptdConnector: SND -> {7 cryptfs enablecrypto inplace default}
05-26 20:35:06.495   150   162 E Cryptfs : Bad magic for real block device /dev/block/platform/msm_sdcc.1/by-name/metadata
05-26 20:35:06.498   150   162 D Cryptfs : Just asked init to shut down class main
05-26 20:35:37.010   150   162 E Cryptfs : unmounting /data failed: Device or resource busy
05-26 20:35:37.140   150   162 E Cryptfs : Bad magic for real block device /dev/block/platform/msm_sdcc.1/by-name/metadata
05-26 20:35:37.145   150   162 D Cryptfs : Just asked init to shut down class main
05-26 20:35:57.212   150   162 E Cryptfs : unmounting /data failed: Device or resource busy

Lo que hice fue lo siguiente. Como he probado mucho y he limpiado/flasheado el dispositivo unas cien veces, supongo que sólo funciona en una instalación limpia de cyanogenmod. Además, leí algo sobre problemas con el Team Win Recovery Mode (TWRP) y cómo formatea las particiones. Así que esto es lo que hice:

  1. Se ha encendido el Imagen de recuperación de Cyanogenmod

    sudo fastboot flash recovery /path/to/cm-13.0-20160418-SNAPSHOT-ZNH0EAO2NM-hammerhead-recovery.img
  2. Arranque en modo de recuperación y borrado de todo el dispositivo, incluidos los datos y la caché .

  3. Arranque en el bootloder, espera en el menú del gestor de arranque y flashear la imagen TWRP

    sudo fastboot flash recovery /path/to/twrp-3.0.2-0-hammerhead.img 
  4. Todavía en el bootloader, entrar en el modo de recuperación, twrp esta vez.

  5. Empuja el zip de cyanogenmod al teléfono.

    adb push /path/to/cm-13.0-20160418-SNAPSHOT-ZNH0EAO2NM-hammerhead.zip /sdcard
  6. Usa twrp para instalar cyanogenmod desde el zip. No borres la caché ni formatees los datos ¡! Es tentador ya que aparece un botón, pero he leído que puede haber problemas con las particiones mal formadas. También, ¡no reinicie todavía! Vuelve.

  7. Reinicia en el bootloader. No arranque cyanogenmod todavía . Asegúrese de que está en el cargador de arranque.

  8. Flash de la Imagen de recuperación de Cyanogenmod de nuevo.

    sudo fastboot flash recovery /path/to/cm-13.0-20160418-SNAPSHOT-ZNH0EAO2NM-hammerhead-recovery.img
  9. Ahora, arranca cyanogenmod, configura el idioma, la fecha, la hora y la zona horaria. No cambies ninguna configuración todavía No te conectes al wifi.

  10. Pulse el botón de encendido hasta que el Diálogo de apagado aparece.

  11. Pulsar prolongadamente la opción de apagado hasta que aparezca un diálogo de confirmación que le pida que confirme el reinicio en modo seguro .

  12. Confirmar y reiniciar en modo seguro .

  13. Ir a la configuración y la seguridad, pulse encriptar teléfono y confirme la encriptación de nuevo.

  14. Espere unos minutos. En una instalación limpia, no debería tardar más de 5-10 minutos en un Nexus 5.

  15. Se reiniciará en modo normal tan pronto como termine. Confirma en los ajustes de seguridad que el teléfono está encriptado.

Aquí está el adb logcat para confirmar que ha funcionado:

05-26 21:17:20.694   799   897 D CryptdConnector: SND -> {1 cryptfs getfield SystemLocale}
05-26 21:17:33.095   799  1055 D CryptdConnector: SND -> {2 cryptfs getpw}
05-26 21:17:33.096   149   160 D VoldCryptCmdListener: cryptfs getpw
05-26 21:17:33.097   799  1055 D CryptdConnector: SND -> {3 cryptfs clearpw}
05-26 21:17:33.098   149   160 D VoldCryptCmdListener: cryptfs clearpw
05-26 21:18:42.691   799   981 D CryptdConnector: SND -> {4 cryptfs setfield PatternVisible 0}
05-26 21:18:42.692   799  1637 D CryptdConnector: SND -> {5 cryptfs setfield PasswordVisible 1}
05-26 21:18:42.701   799  1055 D CryptdConnector: SND -> {6 cryptfs setfield SystemLocale en-US}
05-26 21:18:43.476   799   981 D CryptdConnector: SND -> {7 cryptfs enablecrypto inplace default}
05-26 21:18:43.480   149   160 E Cryptfs : Bad magic for real block device /dev/block/platform/msm_sdcc.1/by-name/metadata
05-26 21:18:43.484   149   160 D Cryptfs : Just asked init to shut down class main
05-26 21:18:44.950   149   160 D Cryptfs : unmounting /data succeeded
05-26 21:18:44.951   149   160 I Cryptfs : keymaster module name is Keymaster QCOM HAL
05-26 21:18:44.951   149   160 I Cryptfs : keymaster version is 3
05-26 21:18:44.951   149   160 I Cryptfs : Found keymaster0 module, using keymaster0 API.
05-26 21:18:44.954   149   160 I Cryptfs : keymaster module name is Keymaster QCOM HAL
05-26 21:18:44.954   149   160 I Cryptfs : keymaster version is 3
05-26 21:18:44.954   149   160 I Cryptfs : Found keymaster0 module, using keymaster0 API.
05-26 21:18:45.553   149   160 I Cryptfs : Using scrypt with keymaster for cryptfs KDF
05-26 21:18:46.034   149   160 I Cryptfs : keymaster module name is Keymaster QCOM HAL
05-26 21:18:46.034   149   160 I Cryptfs : keymaster version is 3
05-26 21:18:46.034   149   160 I Cryptfs : Found keymaster0 module, using keymaster0 API.
05-26 21:18:46.035   149   160 I Cryptfs : Signing safely-padded object
05-26 21:18:47.040   149   160 D Cryptfs : Just triggered post_fs_data
05-26 21:18:47.090   149   160 D Cryptfs : post_fs_data done
05-26 21:18:49.091   149   160 D Cryptfs : Just triggered restart_min_framework
05-26 21:18:49.091   149   160 I Cryptfs : Using scrypt with keymaster for cryptfs KDF
05-26 21:18:49.676   149   160 I Cryptfs : keymaster module name is Keymaster QCOM HAL
05-26 21:18:49.676   149   160 I Cryptfs : keymaster version is 3
05-26 21:18:49.676   149   160 I Cryptfs : Found keymaster0 module, using keymaster0 API.
05-26 21:18:49.685   149   160 I Cryptfs : Signing safely-padded object
05-26 21:18:50.297   149   160 I Cryptfs : Enabling support for allow_discards in dmcrypt.
05-26 21:18:50.297   149   160 I Cryptfs : target_type = crypt
05-26 21:18:50.297   149   160 I Cryptfs : real_blk_name = /dev/block/platform/msm_sdcc.1/by-name/userdata, extra_params = 1 allow_discards
05-26 21:18:50.300   149   160 I Cryptfs : Encrypting ext4 filesystem in place...
05-26 21:18:50.300   149   160 I Cryptfs : Encrypting group 0
05-26 21:18:50.301   149   160 I Cryptfs : Encrypting from sector 0
05-26 21:18:50.371   149   160 I Cryptfs : Encrypted to sector 790016
05-26 21:18:50.371   149   160 I Cryptfs : Encrypting from sector 802816
05-26 21:18:50.378   149   160 I Cryptfs : Encrypted to sector 813568
05-26 21:18:50.378   149   160 I Cryptfs : Encrypting from sector 819200
05-26 21:18:50.388   149   160 I Cryptfs : Encrypted to sector 840704
    [...]
05-26 21:19:43.819   149   160 I Cryptfs : Encrypting group 215
05-26 21:19:43.821   149   160 I Cryptfs : Encrypted to sector 3590587392
05-26 21:19:43.821   149   160 I Cryptfs : Encrypting from sector 3607101440
05-26 21:19:43.896   149   160 I Cryptfs : Encrypting group 216
05-26 21:19:43.898   149   160 I Cryptfs : Encrypted to sector 3607364608
05-26 21:19:43.898   149   160 I Cryptfs : Encrypting from sector 3623878656
05-26 21:19:43.971   149   160 I Cryptfs : Encrypting group 217
05-26 21:19:43.974   149   160 I Cryptfs : Encrypted to sector 3624141824
05-26 21:19:43.974   149   160 I Cryptfs : Encrypting from sector 3640655872
05-26 21:19:44.108   149   160 I Cryptfs : Encrypted to sector 3641183744

Buena suerte encriptando tu teléfono en modo seguro ¡!

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