La herramienta gdisk
es la variante de fdisk
para tablas de particiones GPT. Este artículo demuestra su sencillo funcionamiento para crear una nueva tabla de particiones GPT y particionar un disco desde línea de comandos en GNU/Linux.
GPT fidsk (gdsik) es una herramienta de línea de comandos para crear y manipular tablas de particiones. Convierte automáticamente tablas de particiones MBR (Master Boot Record) o BSD disklabel (sólo si está almacenada sin anidar dentro de una partición MBR) al nuevo formato GPT (GUID Partition Table). De lo contrario carga la tabla GPT existente en el dispositivo.
gdisk
opera principalmente sobre tablas de particiones y cabeceras GPT. Sin embargo, puede generar una tabla MBR legacy (Protective MBR) si se necesita.
La interfaz de gdisk
es similar a la de fdisk
, sólo que modifica particiones GPT. Esto hace que sea muy fácil de utilizar, y una transición directa para quienes estén familiarizados con fdisk
. Por otro lado tiene la capacidad de transformar tablas de particiones MBR o BSD disklabel en particiones GPT.
Al igual que fdisk
, gdisk
no modifica estructuras ni hace cambios en tablas hasta que explícitamente se escriban los cambios a disco, lo cual permite introducir errores al momento de particionar sin riesgo alguno. Si se comete un error al particionar, simplemente se puede salir del programa sin aplicar los cambios utilizando el subcomando q
.
Veamos un ejemplo práctico. El siguiente sistema posee dos discos SCSI conectados. Es posible verificar esta información revisando los mensajes del kernel Linux con dmesg
:
root@devuan:/home/emi# dmesg | grep disk [ 1.450479] sd 0:0:0:0: [sda] Attached SCSI disk [ 1.457317] sd 1:0:0:0: [sdb] Attached SCSI disk [ 1.663288] PM: Starting manual resume from disk
La opción -l
permite listar la tabla de particiones de un dispositivo pasado como parámetro:
root@devuan:/home/emi# gdisk -l /dev/sda GPT fdisk (gdisk) version 1.0.1 Partition table scan: MBR: MBR only BSD: not present APM: not present GPT: not present *************************************************************** Found invalid GPT and valid MBR; converting MBR to GPT format in memory. *************************************************************** Disk /dev/sda: 16777216 sectors, 8.0 GiB Logical sector size: 512 bytes Disk identifier (GUID): 5DFC95BB-53D4-4F42-85B9-43EF49F7F2F7 Partition table holds up to 128 entries First usable sector is 34, last usable sector is 16777182 Partitions will be aligned on 2048-sector boundaries Total free space is 6077 sectors (3.0 MiB) Number Start (sector) End (sector) Size Code Name 1 2048 14680063 7.0 GiB 8300 Linux filesystem 5 14682112 16775167 1022.0 MiB 8200 Linux swap
Se observa que el disco sda
posee una tabla de particiones MBR. Notar el resultado "MBR only" dentro de la información de escaneo de tablas de partición al comienzo de la salida.
En cambio, el disco sdb
no posee tabla de particiones alguna:
root@devuan:/home/emi# gdisk -l /dev/sdb GPT fdisk (gdisk) version 1.0.1 Partition table scan: MBR: not present BSD: not present APM: not present GPT: not present Creating new GPT entries. Disk /dev/sdb: 16777216 sectors, 8.0 GiB Logical sector size: 512 bytes Disk identifier (GUID): 64EFD9F8-E13C-4168-8277-92F553DD7D56 Partition table holds up to 128 entries First usable sector is 34, last usable sector is 16777182 Partitions will be aligned on 2048-sector boundaries Total free space is 16777149 sectors (8.0 GiB) Number Start (sector) End (sector) Size Code Name
Para crear una nueva tabla de particiones GPT, lanzar gdisk
con la ruta al dispositivo como parámetro:
root@devuan:/home/emi# gdisk /dev/sdb GPT fdisk (gdisk) version 1.0.1 Partition table scan: MBR: not present BSD: not present APM: not present GPT: not present Creating new GPT entries. Command (? for help):
El subcomando ?
presenta la ayuda de gdisk
:
Command (? for help): ? b back up GPT data to a file c change a partition's name d delete a partition i show detailed information on a partition l list known partition types n add a new partition o create a new empty GUID partition table (GPT) p print the partition table q quit without saving changes r recovery and transformation options (experts only) s sort partitions t change a partition's type code v verify disk w write table to disk and exit x extra functionality (experts only) ? print this menu Command (? for help):
Se observa que los comandos son casi idénticos a los de fdisk
.
El subcomando p
permite imprimir la tabla de particiones actual (la misma salida que se muestra con -l
):
Command (? for help): p Disk /dev/sdb: 16777216 sectors, 8.0 GiB Logical sector size: 512 bytes Disk identifier (GUID): 4938D35E-A1B8-401A-9F0F-BF72A5613374 Partition table holds up to 128 entries First usable sector is 34, last usable sector is 16777182 Partitions will be aligned on 2048-sector boundaries Total free space is 16777149 sectors (8.0 GiB) Number Start (sector) End (sector) Size Code Name Command (? for help):
Para crear una nueva partición, utilizar n
(new):
Command (? for help): n Partition number (1-128, default 1): First sector (34-16777182, default = 2048) or {+-}size{KMGTP}: Last sector (2048-16777182, default = 16777182) or {+-}size{KMGTP}: +6G Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): Changed type of partition to 'Linux filesystem' Command (? for help):
Primero se solicita el número de partición. Luego el primer sector (por defecto el primero disponible), último sector (en el ejemplo se especifican 6 GB de tamaño de partición, por defecto es todo el tamaño disponible) y tipo (el tipo por defecto es "Linux", código 8300
).
Resulta muy fácil especificar el tamaño de la partición dejando que gdisk
calcule automáticamente el sector final empleando el operador +
. El mismo permite utilizar diferentes unidades de tamaño como KB, MB, GB, etc.
Al momento de especificar el tipo (valor numérico), es posible utilizar el subcomando l
para obtener la lista de tipos de sistema de archivo por código. Veamos otro ejemplo para crear una partición de tipo "Linux swap" en los 2 GB de disco restantes:
Command (? for help): n Partition number (2-128, default 2): First sector (34-16777182, default = 12584960) or {+-}size{KMGTP}: Last sector (12584960-16777182, default = 16777182) or {+-}size{KMGTP}: Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): l 0700 Microsoft basic data 0c01 Microsoft reserved 2700 Windows RE 3000 ONIE boot 3001 ONIE config 3900 Plan 9 4100 PowerPC PReP boot 4200 Windows LDM data 4201 Windows LDM metadata 4202 Windows Storage Spac 7501 IBM GPFS 7f00 ChromeOS kernel 7f01 ChromeOS root 7f02 ChromeOS reserved 8200 Linux swap 8300 Linux filesystem 8301 Linux reserved 8302 Linux /home 8303 Linux x86 root (/) 8304 Linux x86-64 root (/ 8305 Linux ARM64 root (/) 8306 Linux /srv 8307 Linux ARM32 root (/) 8400 Intel Rapid Start 8e00 Linux LVM a500 FreeBSD disklabel a501 FreeBSD boot a502 FreeBSD swap a503 FreeBSD UFS a504 FreeBSD ZFS a505 FreeBSD Vinum/RAID a580 Midnight BSD data a581 Midnight BSD boot a582 Midnight BSD swap a583 Midnight BSD UFS a584 Midnight BSD ZFS a585 Midnight BSD Vinum a600 OpenBSD disklabel a800 Apple UFS a901 NetBSD swap a902 NetBSD FFS a903 NetBSD LFS a904 NetBSD concatenated a905 NetBSD encrypted a906 NetBSD RAID ab00 Recovery HD af00 Apple HFS/HFS+ af01 Apple RAID af02 Apple RAID offline af03 Apple label af04 AppleTV recovery af05 Apple Core Storage bc00 Acronis Secure Zone be00 Solaris boot bf00 Solaris root bf01 Solaris /usr & Mac Z bf02 Solaris swap bf03 Solaris backup bf04 Solaris /var bf05 Solaris /home bf06 Solaris alternate se bf07 Solaris Reserved 1 bf08 Solaris Reserved 2 Press thekey to see more codes: bf09 Solaris Reserved 3 bf0a Solaris Reserved 4 bf0b Solaris Reserved 5 c001 HP-UX data c002 HP-UX service ea00 Freedesktop $BOOT eb00 Haiku BFS ed00 Sony system partitio ed01 Lenovo system partit ef00 EFI System ef01 MBR partition scheme ef02 BIOS boot partition f800 Ceph OSD f801 Ceph dm-crypt OSD f802 Ceph journal f803 Ceph dm-crypt journa f804 Ceph disk in creatio f805 Ceph dm-crypt disk i fb00 VMWare VMFS fb01 VMWare reserved fc00 VMWare kcore crash p fd00 Linux RAID Hex code or GUID (L to show codes, Enter = 8300): 8200 Changed type of partition to 'Linux swap' Command (? for help):
Se observa que se cambia el tipo por defecto por el código 8200
.
Para verificar, imprimir la tabla resultante con p
:
Command (? for help): p Disk /dev/sdb: 16777216 sectors, 8.0 GiB Logical sector size: 512 bytes Disk identifier (GUID): 64BEB8D5-84E0-457F-95DF-0F2D90A9185D Partition table holds up to 128 entries First usable sector is 34, last usable sector is 16777182 Partitions will be aligned on 2048-sector boundaries Total free space is 2014 sectors (1007.0 KiB) Number Start (sector) End (sector) Size Code Name 1 2048 12584959 6.0 GiB 8300 Linux filesystem 2 12584960 16777182 2.0 GiB 8200 Linux swap Command (? for help):
Se están creando (aún no, pues no fueron aplicados los cambios a disco) dos particiones. Una de tipo "Linux" de 6 GB, y otra a continuación de tipo "Linux swap", de 2 GB de tamaño.
Finalmente llega el momento de la verdad: plasmar los cambios a disco. Tener en cuenta que se sobrescribe cualquier partición existente.
Utilizar el comando w
para escribir los cambios a disco (igual que en fdisk
):
Command (? for help): w Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): y OK; writing new GUID partition table (GPT) to /dev/sdb. The operation has completed successfully. root@devuan:/home/emi#
Este comando escribe los cambios a disco y cierra el programa. Es posible comprobar el resultado con -l
:
root@devuan:/home/emi# gdisk -l /dev/sdb GPT fdisk (gdisk) version 1.0.1 Partition table scan: MBR: protective BSD: not present APM: not present GPT: present Found valid GPT with protective MBR; using GPT. Disk /dev/sdb: 16777216 sectors, 8.0 GiB Logical sector size: 512 bytes Disk identifier (GUID): 64BEB8D5-84E0-457F-95DF-0F2D90A9185D Partition table holds up to 128 entries First usable sector is 34, last usable sector is 16777182 Partitions will be aligned on 2048-sector boundaries Total free space is 2014 sectors (1007.0 KiB) Number Start (sector) End (sector) Size Code Name 1 2048 12584959 6.0 GiB 8300 Linux filesystem 2 12584960 16777182 2.0 GiB 8200 Linux swap
Se observa que aparecen dos nuevos dispositivos sdb1
y sdb2
, los cuales corresponden con las nuevas particiones del dispositivo sdb
:
root@devuan:/home/emi# ls -l /dev/sdb* brw-rw---- 1 root disk 8, 16 nov 11 11:55 /dev/sdb brw-rw---- 1 root disk 8, 17 nov 11 11:55 /dev/sdb1 brw-rw---- 1 root disk 8, 18 nov 11 11:55 /dev/sdb2
Referencias