Cómo particionar la SD usando parted

De HTCMania Wiki

Este tutorial esta OBSOLETO, actualmente todos los recoverys tienen la posibilidad de particionar la SD directamente y sin problemas.

Contenido

Introducción

Esta guía nos servirá para particionar nuestra SD, de forma manual utilizando la herramienta parted.

Nos permite crear las particiones que queramos, su tipo, tamaño, orden y también redimensionar su tamaño.


Archivos/programas necesarios

  • Un terminal Android con acceso root y acceso al recovery.
  • Tarjeta SD, class 6 recomendado, mínimo clase 4. Una clase 2 no se recomienda en ningún caso, sería muy lenta y sufriríamos retardos al ejecutar aplicaciones.
  • Las Android SDK Tools, concretamente adb.
  • Y por lo tanto los drivers correctamente instalados, para el acceso al movil a través de ADB


ADVERTENCIA: ESTO BORRA TODA LA INFORMACION DE TU SD, HAZ UNA COPIA DE SEGURIDAD ANTES.


Primera Parte – Preparacion de la SD

Paso 1: Entrar en el recovery

En casi todos los teléfonos, se entra, apagando el teléfono y encendiéndolo mientras se pulsa la tecla "atrás" (flecha).

En la HTC Desire al no tener todavía el recovery implementado en el teléfono es un poco más complicado:

  • Reiniciar el telefono en modo recovery (Encender + Flecha atras) -> Fastboot -> Recovery
  • Abrir una consola (Inicio -> ejecutar -> CMD)
  • Introducir el comando:
recovery-windows.bat 
  • Con esto deberíamos estar en el recovery. A partir de aquí, es común para todos los Android


Paso 2: Iniciando parted y preparando la SD

  • Abrir una consola de dos (Inicio -> Ejecutar -> CMD) e introducir el comando:
adb shell
  • Ahora en el # prompt introducir:
parted /dev/block/mmcblk0
  • Ahora estamos en parted. Si no lo estas revisa lo que has escrito o empieza de nuevo.
  • Para saber el tamaño de tu SD y las particiones que contiene, introduce:
print
  • Puede que recibas como respuesta del comando:
Código:
"No Implementation: Partition 1 isn't aligned to cylinder boundaries. This is still unsupported."
  • Mas o menos dice, que la primera partición no esta alienada con el primer cilindro mas cercano, y que esto no es soportado por el programa. Para solucionarlo, introduce:
mklabel msdos
  • Nos dará el siguiente aviso:
Código:
Warning: The existing disk label on /dev/block/mmcblk0 will be destroyed and all data on
this disk will be lost. Do you want to continue?
parted: invalid token: msdos
  • Responde 'y' a la pregunta 'yes/no'..
  • Entonces:
Código:
New disk label type?
  • Confirma con:
msdos
  • Vuelve a introducir:
print
  • Deberías obtener algo parecido a:


Código:
print
print
Model: Unknown (unknown)
Disk /dev/block/mmcblk0: 7969MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number Start       End         Size        Type        File system Flags
1           512B      7469MB   7469MB  primary     fat32           lba
2           7469MB 7969MB    500MB   primary     ext2

  • O, si tu sdcard es nueva/esta vacía obtendrás:
Código:
print
print
Model: Unknown (unknown)
Disk /dev/block/mmcblk0: 7969MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number Start End Size Type File system Flags

  • Si no te muestra particiones numeradas, pasa al siguiente paso, en caso contrario, borra todas las particiones que veas con el commando rm. El formato es:
rm <numero de particion> 
  • En este caso:
rm 1
rm 2
  • La cuarta línea de la salida del comando 'print' muestra el espacio total de la sdcard en MB(o GB si tu tarjeta es grande)..La mía dice: Disk /dev/block/mmcblk0: 7969MB


Usa este número(XXXXMB) y haz una simple resta para calcular el tamaño de las nuevas particiones:

7969MB - 32MB linux-swap = 7937MB

7937MB - 500MB ext2 = 7437MB

fat32

32MB son suficientes para swap, pero podría queres variarlo dependiendo del tamaño de tu tarjeta (nunca mas de 96MB). 500 MB es mas que suficiente para la partición ext2 y usar App2SD, Si quieres comprobar si App2SD esta instalado pulsa aquí.

Esto nos deja con 7437MB para fat32 y almacenar nuestros datos.


Segunda Parte - Creando particiones:

Generalidades:

Para que a2sd y swap funcionen perfectamente, deberemos crear las particiones en el orden adecuado: fat32, ext2, linux-swap

El commando para crear las particiones es mkpartfs...y su formato es:

mkpartfs <partition type> <fs type> <start> <end>
  • nota#1: Los números <inicio>/<final> de la siguiente sección, correspondes a los números en itálica de la sección de arriba, la información dei tus particiones podría ser diferente a la mostrada aquí.
  • nota#2: por defecto parted, asume que estas usando MB como unidad en los comandos. Así que si tu tarjeta es grande(como 16GB) y quieres una particion de 12GB...tendrás que usar las unidades apropiadas(ejm. mkpartfs primary fat32 0 12GB) y parted lo hará. Puedes usar decimales... si quieres una partición de 15.4GB(ejm. mkpartfs primary fat32 0 15.4GB).

Creamos las particiones:

mkpartfs primary fat32 0 7437
mkpartfs primary ext2 7437 7937
mkpartfs primary linux-swap 7937 7969
  • Para comprobar que se han creado correctamente:
print
  • La salida será similar a:
Código:
print
print
Model: Unknown (unknown)
Disk /dev/block/mmcblk0: 7969MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number   Start       End       Size       Type    File system     Flags
1            512B      7437MB  7437MB primary fat32               lba
2            7437MB 7937MB  500MB   primary ext2
3            7937MB 7969MB  32.2MB  primary linux-swap(v1)

  • Para salir de parted:
quit
  • Después de salir, recibirás un mensaje:
Código:
Information: You may need to update /etc/fstab.


No te preocupes. fstab es un fichero que necesita guardar la información de los discos y particiones en *nix. Mas información sobre fstab aquí


Tercera Parte - convertir ext2 a ext3/ext4:

parted no crea ext3/ext4 partitions...

Convertir ext2 a ext3

Para convertirlas se usa:

upgrade_fs

El comando anterior nos convierte la ext2 a ext3 con journaling. Mas información sobre journaling aquí. Si ext3 es lo que queremos, salta el comando siguiente.

Convertir ext3 a ext4

introduce:

tune2fs -O extents,uninit_bg,dir_index /dev/block/mmcblk0p2
e2fsck -fpDC0 /dev/block/mmcblk0p2
Reinicia el teléfono y ya tienes las particiones creadas y listas para usar

Mover particiones

En construcción

Redimensionar Particiones

En construcción

Eliminar partición de App2SD y conservar Linux Swap como tercera partición

  Una vez que hayamos creado las tres particiones y permaneciendo en modo recovery, desde una consola con "adb shell" abierto escribimos los siguientes comandos:

parted /dev/block/mmcblk0
print 

Con el comando print forzamos que se nos muestre en la pantalla la información de las particiones en nuestra tarjeta SD, la salida podría ser parecida a esto:


Model: Unknown (unknown)

Disk /dev/block/mmcblk0: 7969MB

Sector size (logical/physical): 512B/512B

Partition Table: msdos

Number  Start       End         Size       Type        File system Flags

1            512B      7437MB   7437MB   primary   fat32           lba

2            7437MB  7937MB   500MB    primary   ext2

3            7937MB  7969MB   32.2MB   primary   linux-swap(v1)


Nuestro objetivo, ahora, es borrar la ext2, la segunda partición, para después, agrandar la FAT32 para ocupar todo el tamaño libre de la SD y no perder espacio. De este modo, al final, solo tendremos 2 particiones (FAT32 y Linux Swap) pero la Linux Swap estará marcada como la 3ª partición. De este modo el kernel de Cyanogen o cualquier otra ROM que lo soporte, podrá activar el Linux Swap en esa partición.

Si nos fijamos en la salida de "print", la partición ext2 empieza en 7437MB y termina en 7937Mb, en total 500Mb, luego tendremos que aumentar el tamaño de nuestra fat32 hasta el final de la ext2 (7937Mb).

Lo primero es borrar la ext2, para ello (sin salir de parted, continuando en la sesión anterior) ejecutamos este comando:

rm 2

Este comando borra la 2ª partición, en este caso la ext2.

Lo siguiente es cambiarle el tamaño a la FAT32, para ello se usa el comando resize:

resize 1 512 7937

Los parámetros usados son:

* 1 - Número de partición
* 512 - Inicio de la partición
* 7973 - Final de la partición

Donde inicio de la partición es el mismo número que nos daba print como inicio de la FAT32 (512) y final de la partición es el número que nos daba print como final de la partición ext2 (7937)

Para comprobar que se ha realizado correctamente, volvemos a ejecutar print y debería mostrarnos esto:


Model: Unknown (unknown)

Disk /dev/block/mmcblk0: 7969MB

Sector size (logical/physical): 512B/512B

Partition Table: msdos


Number  Start       End        Size       Type      File system   Flags

1            512B      7937MB  7437MB  primary  fat32             lba

3            7937MB  7969MB  32.2MB  primary   linux-swap(v1)


Ahora tan solo nos falta salir del parted y reiniciar el móvil. Nos valdrá con estos comandos.

quit
reboot

A partir de aquí nuestra Rom podrá usar swap, sin perder el espacio de la partición ext, muy practico si no queremos usar app2sd.

Agradecimientos:

  • Parte de esta guía es una traducción y adaptación de la guía original realizada por 51dusty, y publicada en el foro de XDA-Developers.
  • Gracias a shawe_ewahs por su ayuda para realizar la guía y por crear el wiki, junto a jorge_kai.
Herramientas personales