La conexión al PC a través de USB (MTP) no expone el sistema de archivos subyacente ( ext4
o f2fs
) del almacenamiento interno ( /data
partición) al PC. Pero los programas de recuperación necesitan acceso directo al sistema de archivos, es decir, acceso a nivel de bloque, y no funcionan con MTP (transferencia de archivos), que es sólo un protocolo de tipo cliente-servidor para la transferencia de datos.
Necesitas Almacenamiento masivo USB ( UMS ) que se desactiva en Android 3.1.x y superior, cuando El MTP se introdujo y luego el UMS se interrumpió gradualmente en las versiones posteriores. Véase El viaje de almacenamiento de Android y mi respuesta a ¿Qué es /storage/emulated/0/? para más detalles.
Los OEM pueden añadir la configuración UMS a sus dispositivos. Como ejemplo, puede ver on property:sys.usb.config=mass_storage
desencadena en init.qcom.usb.rc
y init.msm.usb.configfs.rc
en la fuente de un dispositivo Qualcomm.
Sin embargo, siempre es posible habilitar el UMS manualmente, siempre que el kernel lo soporte. El proceso descrito a continuación también debería funcionar para los dispositivos más antiguos que tenían soporte oficial para UMS. Es necesario Acceso a root o al menos recuperación personalizada para habilitar el UMS.
¿CÓMO HABILITAR LOS UMS?
Gadget compuesto para Android (que es un extensión al núcleo de Linux API para gadgets USB ) expone a Android en Dispositivo USB modo a un Host USB como PC. Las diferentes funciones USB (como UMS, MTP, RNDIS, etc.) pueden configurarse y conmutarse utilizando sysfs
interfaces. Más tarde, el núcleo principal de Linux añadió la capacidad de configurar los modos del gadget USB a través de configfs
interfaces. Los nuevos dispositivos Android también utilizan lo mismo (véase este muestra init
's .rc
archivo).
DISPOSITIVOS ANTIGUOS:
El núcleo debe construirse con CONFIG_USB_F_MASS_STORAGE
y el controlador de Android Composite Gadget ( CONFIG_USB_G_ANDROID
):
cd /sys/class/android_usb/android0
echo -n 0 >enable
echo -n '/dev/block/bootdevice/by-name/userdata' >f_mass_storage/lun/file
echo -n 'mass_storage' >functions
echo -n <VID> >idVendor
echo -n <PID> >idProduct
echo -n 1 >enable
* Otros archivos en el gadget como {iSerial,iProduct,iManufacturer}
suelen establecerse en el arranque del dispositivo al crear el gadget.
NUEVOS DISPOSITIVOS:
El núcleo debe construirse con CONFIG_USB_CONFIGFS_MASS_STORAGE
:
cd /config/usb_gadget/g1
echo -n 'msc' >configs/b.1/strings/0x409/configuration
echo -n <VID> >idVendor
echo -n <PID> >idProduct
for f in configs/b.1/f*; do rm $f; done
ln -s functions/mass_storage.0 configs/b.1/f1
echo -n '/dev/block/bootdevice/by-name/userdata' >configs/b.1/f1/lun.0/file
* Otros archivos en el gadget como UDC
y strings/0x409/{manufacturer,product,serialnumber}
suelen establecerse en el arranque del dispositivo al crear el gadget.
NOTAS:
- Las rutas pueden variar - incluyendo los directorios
g1
, b.1
, f1
etc. - en función del dispositivo y de la configuración de los códigos de barras.
- En la mayoría de los casos, es necesario establecer un ID de proveedor USB (VID) y un ID de producto (PID) adecuados para que el PC identifique el dispositivo de almacenamiento masivo. Por ejemplo
05C6
es el VID de Qualcomm y 1000
es su PID para el dispositivo UMS. Ver .rc
archivos en su dispositivo para las identificaciones específicas del dispositivo.
- Exposición montada
/data
a UMS puede corromper el sistema de archivos, y debe evitarse. Utilice UMS en modo de recuperación.
- Si su
/data
la partición es FDE encriptado, es necesario desencriptarlo antes de exponerlo a UMS.
- Para asegurarse de que sus datos son recuperables , véase mi respuesta a ¿Cómo hacer un restablecimiento completo de fábrica, sin que nadie pueda recuperar mis datos?
Ahora /data
aparecerá como una partición en el PC Linux que puede montar (preferiblemente de sólo lectura para evitar sobrescribir los datos). Sin embargo, las herramientas de recuperación, incluyendo extundelete
en su mayoría no necesitan montar sistemas de archivos.
Si tienes el custom recovery, otra opción es dd
una imagen de /data
partición a la tarjeta SD externa y luego montarlo en el PC Linux como un archivo de bucle. Para esta y otras opciones para acceder al almacenamiento interno a nivel de bloque, vea mis respuestas a las preguntas relacionadas.
PS:
Utilizando los mismos métodos es posible exponer un archivo de bucle como una imagen ISO o cualquier otro sistema de archivos como dispositivo UMS o CDROM escribiendo su ruta en lugar de la ruta del dispositivo de bloque.
RELACIONADO: