2 votos

¿Cómo ejecutar el comando "parted" en un emulador de terminal en mi teléfono inteligente Android?

Pregunta actualizada (20/02/2018)

Gracias a la respuesta y comentario de grawity, mi pregunta puede ser actualizada.

Mi objetivo final es adquirir información detallada sobre la partición (incluyendo la dirección de inicio y final de cada partición en mi teléfono Android), ya sea utilizando fdisk o parted.

  1. ¿Cómo "instalar" el comando parted en mi teléfono inteligente Android?

  2. ¿Puedo usar fdisk en un sistema Linux o en Cygwin en un sistema Windows? Sabiendo que fdisk traído por BusyBox no puede manejar GPT. (Si es así, quizás podría publicar otra pregunta.)


Pregunta original (19/02/2018)

He instalado Busybox en mi smartphone y quiero adquirir información detallada sobre las particiones, incluyendo la dirección de inicio y final de cada partición en mi teléfono Android.

Puedo usar el comando fdisk, pero tal vez porque el disco de mi teléfono es GPT en lugar de MBR, el comando "fdisk -l" no muestra ninguna salida.

Por lo tanto, quiero usar el comando "parted". Pero no lo tengo en mi smartphone. ¿Cómo puedo obtenerlo?

He visitado el sitio web de "parted". Pero lo único que puedo descargar es el código fuente. ¿Necesito compilarlo? En caso afirmativo, ¿cómo lo compilo? ¿Puedo compilar el código fuente con MinGW en una PC con sistema Windows?

Si obtengo el archivo "parted", ¿dónde debo colocarlo para que funcione? ¿Está en /system/bin?

Todavía no he encontrado un archivo "parted" utilizable. ¿Es debido a mis malas habilidades en Google o el archivo debe ser compilado de manera diferente para diferentes dispositivos?

Espero encontrar una versión oficial del archivo "parted".


EDICIÓN (19/02/2018)

Sé que mi almacenamiento es GPT porque fdisk -l /dev/block/mmcblk0 me lo dice. Y he leído en Internet que fdisk no puede manejar GPT, mientras que parted sí puede. Simplemente no estoy seguro de por qué fdisk -l no muestra nada.

fdisk -l /dev/block/mmcblk0

Disco /dev/block/mmcblk0: 15 GB, 15634268160 bytes, 30535680 sectores
1908480 cilindros, 1 cabezal, 16 sectores/pista
Unidades: cilindros de 16 * 512 = 8192 bytes

Device             Boot StartCHS    EndCHS        StartLBA     EndLBA    Sectors  Size Id Type
/dev/block/mmcblk0p1    0,0,0       0,0,0                1   30535679   30535679 14.5G ee EFI GPT
La partición 1 no termina en el límite del cilindro

0 votos

Tu salida en realidad muestra que tu versión de fdisk es demasiado antigua y no soporta GPT. (¿Es fdisk de util-linux o fdisk de BusyBox?) Está mostrando la partición de "MBR protector".

0 votos

Corro el siguiente comando en el Emulador de Terminal en mi teléfono Android. Y tengo instalado busybox. No sé acerca de la versión de fdisk. Además, cuando me conecto con adb y ejecuto adb shell en la computadora, el resultado es el mismo. ¿Quieres decir que la versión más reciente de fdisk en Android admite GPT? ¿O fdisk en un sistema Linux puede manejar GPT?

0 votos

"fdisk en android" es irrelevante. La parte importante es de donde viene fdisk: Busybox tiene su propia versión de fdisk, al igual que tiene su propia versión de ls y su propia versión de sh, completamente separada de la tradicional Linux fdisk/ls/sh/etc.

5voto

Jack Wade Puntos 231

Nota: Esto es aplicable a Qualcomm SoC con eMMC (dispositivo de bloque accesible a través de FTL). No probado en MTK u otros chipsets (las rutas pueden diferir) o en dispositivos con memoria NAND/MTD sin procesar.

PARTED

¿Cómo "instalo" el comando parted en mi teléfono inteligente Android?

No hay una forma oficial, por lo que parted no forma parte de AOSP. Android no quiere que juegues con su tabla de particiones. Usar un binario estático es la mejor opción para evitar complicaciones del cargador/biblioteca de enlaces dinámicos, libc, etc.

Puedes obtener un binario estático de parted para arquitecturas aarch64 (ARM-v8) y armel (ARM-v5) desde este enlace. Los he compilado en ArchLinuxARM (ejecutándose en mi Redmi Note 4) y en Ubuntu (PC) utilizando gcc (cruz)compilador con glibc y funcionan genial. Compilar con Bionic libc en NDK (para hacerlo totalmente "Android-ish") requiere muchos cambios en el código fuente porque las llamadas a funciones (libc) y también algunas llamadas al sistema (kernel) difieren en Android y Linux. devmapper y NLS están deshabilitados ya que el primero no se usa directamente y el último no es compatible con Android.

FDISK / GDISK

¿Puedo usar fdisk en un sistema Linux o en Cynwin en un sistema Windows? Sabiendo que fdisk traído por BusyBox no puede manejar GPT. (Si es así, tal vez pueda publicar otra pregunta.)

También puedes usar fdisk en Android, pero fdisk es una herramienta tradicional para manipular tablas de particiones MBR, aunque versiones más nuevas también admiten GPT. fdisk muestra algo de información sobre GPT también porque GPT contiene el MBR protector (primer sector del disco o eMMC) que contiene información sobre las particiones. Además, la primera partición (módem) en la mayoría de los dispositivos Android que contiene firmware para el procesador de banda base (BP) es FAT16, más compatible con fdisk. Para otras particiones, fdisk puede comportarse de manera extraña o puede fallar.

Busybox fdisk es muy minimalista como otros applets, y creo que no ha sido actualizado por un tiempo. En cambio, GPT fdisk (gdisk) es una gran herramienta para Tablas de Partición GUID y desde ciertos aspectos es mejor que parted.

Los binarios estáticos de gdisk, fdisk y mkfs.ext4 (mke2fs) también están disponibles en el enlace mencionado anteriormente. Puedes colocarlos en cualquier lugar en tu PATH; /system/bin, /system/xbin, /vendor/bin,/sbin (volátil) o incluso en algún lugar en /data o sdcard.

Ahora simplemente ejecuta:

~# parted /dev/block/mmcblk0
(parted) p free

~# gdisk -l /dev/block/mmcblk0

Por favor nota que fdisk -l y parted -l no mostrarán información completa (o en absoluto) sobre GPT de Android porque el kernel de Linux popula los dispositivos de bloque directamente bajo /dev mientras que Android usa la ruta /dev/block. Necesitamos cambiar el código antes de compilar para que funcionen perfectamente. fdisk -l muestra dispositivos loop porque comparten la misma nomenclatura. blkid también muestra información de particiones porque lee de /proc/partitions y /sys/dev/block/.

¡Finalmente!

Con el poder viene la responsabilidad y las herramientas de Linux son poderosas. Realmente. Un desplazamiento de incluso un solo byte en los límites de las particiones puede meterte en serios problemas, siendo lo peor la incapacidad de usar los Flashers de Firmware de Fábrica. ¡Así que ten cuidado!

Lecturas adicionales:

0 votos

¡Muchas gracias por investigar esta pregunta! ¡Eres increíble! Todavía no lo he probado, pero aún así te doy la aceptación. Así que aquí está la razón por la que no lo he intentado. (1) parted. Todavía no tengo tiempo para leer todo el post. (2) gdisk. En el enlace que proporcionaste, creo que solo hay un binario para el sistema operativo Windows, como puedes ver aquí. Así que tal vez aún tenga que compilar para poder usar gdisk.

0 votos

¿Y podrías tomarte un par de minutos para echar un vistazo a esta pregunta porque no puedo configurar un entorno de compilación cruzada en Cygwin. ¿O me sugerirías instalar Linux en lugar de usar Cygwin?

0 votos

Ambos archivos binarios son ejecutables ELF, es decir, para Linux/Android, no para Windows. Y para el compilador cruzado, tengo un sistema de doble arranque; Windows y Ubuntu. Además, tengo Arch chroot en mi teléfono. Personalmente, no me gusta Cygwin. Hay bash para Windows y WSL, etc. Pero estos están limitados de una forma u otra. Si quieres disfrutar de la verdadera libertad, utiliza un sistema de arranque completo de Linux.

2voto

criss Puntos 58

quizá porque el disco de mi teléfono es GPT en lugar de MBR, el comando "fdisk -l" no muestra ninguna salida.

O quizá no tiene los privilegios para leer la tabla de particiones.

Aunque, hasta donde sé, muchos teléfonos Android no utilizan particiones de software, sino algo más complejo que eso: dividen el almacenamiento flash en hardware. Por lo tanto, ni siquiera parted te ayudaría en este caso.

Esta respuesta en Android.SE podría ser relevante: https://android.stackexchange.com/questions/5232/how-can-i-view-the-android-internal-partition-table

Con respecto a tu ejemplo de salida de fdisk. No está mostrando nada - ¡está mostrando una partición!

Pero es el tipo equivocado; el problema real es que tu versión de fdisk no es compatible con GPT y te está mostrando el contenido de la tabla de particiones "protective MBR".

Todos los discos GPT tienen un MBR falso que contiene una partición masiva que abarca todo el disco; su propósito es evitar que las herramientas antiguas solo de MBR destruyan accidentalmente datos. Si lo ves en la salida de fdisk, significa que tu versión de fdisk es solo MBR.

El fdisk que viene con util-linux ha añadido soporte GPT en la v2.23. Sin embargo, el fdisk de Busybox no lo tiene.


Dicho esto, el resto es bastante genérico y se aplica a todos los programas, no solo a parted.

He visitado el sitio web de GNU de "parted". Pero lo único que puedo descargar es el código fuente. ¿Necesito compilarlo?

Sí.

Si es así, ¿cómo lo compilo? ¿Puedo compilar el código fuente con MinGW en una PC con sistema Windows?

Probablemente no. MinGW está orientado a crear compilaciones para Windows x86/x64 - necesitas un compilador cruzado que proporcione binarios de Linux y que compile para una arquitectura de CPU distinta (tu teléfono inteligente usa alguna variante de ARM).

Cygwin podría tener una versión compatible de gcc, pero hacer la compilación en Linux podría ser mucho más fácil.

Espero encontrar una versión oficial del archivo "parted".

Es raro que los desarrolladores de Linux proporcionen versiones compiladas oficiales - eso generalmente queda a cargo de las distribuciones.

Puedes descargar los paquetes oficiales de varias distribuciones como Debian (Raspbian) o Arch Linux ARM, y extraer los archivos necesarios manualmente.

Sé cuidadoso al elegir la arquitectura de CPU correcta de tu teléfono.

Segundo, ten en cuenta que necesitarás más que solo el archivo "parted": la mayoría de la funcionalidad principal está realmente en una biblioteca (archivo DLL) llamada libparted.so.

0 votos

Gracias por la respuesta. Voy a intentar primero con los paquetes oficiales porque es más fácil para mí. Pero no sé qué arquitectura elegir. CPU-Z en mi teléfono muestra "8x ARM Cortex-A53". ¿Debería descargar la versión "arm64"?

0 votos

El kernel del sistema de mi teléfono es "armv8l", como se muestra en CPU-Z. Así que descargué armv7h en archlinuxarm.org. Pero no tengo idea de cómo instalarlo. ¿Podrías darme una palabra clave para buscar si no es algo sencillo?

0 votos

No, me refería a que fdisk -l literalmente no muestra nada, mientras el texto de ayuda dice que -l mostrará una lista de mis particiones. fdisk -l /dev/block/mmcblk0 muestra algo que puedes ver. Agradezco mucho tu respuesta, pero mi problema sigue sin resolver. Quiero elegir una forma fácil de usar parted en mi teléfono Android. He descargado desde el último enlace que proporcionaste, y supongo que armv7h es compatible con una arquitectura armv8l. Pero, ¿cómo "instalarlo"? Ni siquiera sé con qué palabra clave buscar en Google.

2voto

Dmitry Pavlov Puntos 109

Puedo usar el comando fdisk, pero quizás porque el disco de mi teléfono es GPT en lugar de MBR, el comando "fdisk -l" no muestra ninguna salida.

No es ni MBR ni GPT. Los teléfonos inteligentes suelen utilizar particiones MTD. Estas particiones están configuradas en el árbol del dispositivo, por lo que cambiarlas es significativamente más complicado que simplemente ejecutar un editor de particiones.

Puedes obtener información sobre las particiones ejecutando cat /proc/mtd.

0 votos

Desde la salida, es obviamente GPT. Y ten en cuenta Android.

0 votos

Lo siento, no fui claro. Estoy seguro de que mi almacenamiento es GPT. Simplemente no estoy seguro de por qué "fdisk -l" no muestra nada. Se ha añadido la salida de "fdisk -l /dev/block/mmcblk0".

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