¿Cómo arreglar el orden de la tabla de particiones?

¿Cómo arreglar el orden de la tabla de particiones?

Iba a instalar una distribución de Linux completamente nueva (Mageia) y lo vi como una oportunidad para reorganizar mis particiones. Quería todas mis particiones que no sean de Linux (Windows, restaurar, etc.) al principio y las de Linux al final para poder crear más fácilmente nuevas particiones de Linux si quiero probar más distribuciones.

Utilicé GParted para eliminar las particiones de Linux existentes (hice una copia de seguridad de los datos que quería conservar) y moví las restantes al frente. Posteriormente crearía las particiones de Linux en el instalador de Mageia.

Tomó algo de tiempo pero al final GParted terminó sin problemas. Mageia también se instaló sin problemas.

Al iniciar Mageia tuve algún problema (¿no relacionado?) con la tarjeta de video ATI Radeon (aún sin resolver) que me deja solo con la consola y al reiniciar vi Error: Can't have overlapping partitionspasar rápidamente.

No hay problema, pensé, simplemente iniciaré GParted nuevamente y lo arreglaré. Por desgracia, GParted muestra todo el disco como no asignado. Bien, volvamos a Linux. Comenzar desde la línea de comando me da

[root@localhost ~]# parted
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Error: Can't have overlapping partitions.

fdiskdebería darme más información y lo hizo:

[root@localhost ~]# fdisk -l -u /dev/sda

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x2bd2c32a

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      206847      102400    7  HPFS/NTFS
/dev/sda2          208845  1953520064   976655610    5  Extended
/dev/sda3       950740992  1013655551    31457280    7  HPFS/NTFS
/dev/sda4      1013655552  1015754751     1049600   12  Compaq diagnostics
/dev/sda5          208896   409808895   204800000    7  HPFS/NTFS
/dev/sda6       409810944   950740991   270465024    7  HPFS/NTFS
/dev/sda7      1015757883  1034184374     9213246   82  Linux swap / Solaris
/dev/sda8      1034184438  1953520064   459667813+  83  Linux

Si ordeno por inicio de partición, parece que /dev/sda5debería /dev/sda6llamarse /dev/sda3y /dev/sda4viceversa.

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      206847      102400    7  HPFS/NTFS
/dev/sda2          208845  1953520064   976655610    5  Extended
/dev/sda5          208896   409808895   204800000    7  HPFS/NTFS
/dev/sda6       409810944   950740991   270465024    7  HPFS/NTFS
/dev/sda3       950740992  1013655551    31457280    7  HPFS/NTFS
/dev/sda4      1013655552  1015754751     1049600   12  Compaq diagnostics
/dev/sda7      1015757883  1034184374     9213246   82  Linux swap / Solaris
/dev/sda8      1034184438  1953520064   459667813+  83  Linux

Al buscar en Google descubrí que testdiskpuede solucionar este problema.

  1. ¿Cómo lo uso testdisk? La interfaz es bastante confusa.
  2. ¿Puedo ejecutarlo desde Linux/Windows o debería iniciar una versión en vivo?

Gracias de antemano,

Mella


Seguí las instrucciones en la respuesta a continuación pero no funciona.

Estas particiones las tengo que volver a crear:

/dev/sda3       950740992  1013655551    31457280    7  HPFS/NTFS
/dev/sda4      1013655552  1015754751     1049600   12  Compaq diagnostics

Esto es lo que pasa:

[root@localhost ~]# fdisk /dev/sda

Command (m for help): d
Partition number (1-8): 3

Command (m for help): d
Partition number (1-8): 4

Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First sector (950743040-1953520064, default 950743040): 950740992
Value out of range.
First sector (950743040-1953520064, default 950743040):

La primera partición debe comenzar en 950740992pero el nuevo sólo puede comenzar en 950743040.

¿Cómo procedo?

Respuesta1

La mejor solución que encontré para arreglar el orden de las particiones:

Enter into the disk partition place: 
fdisk /dev/sda

Command (m for help):   m  
Command action
  ...
   l   list known partition types
   m   print this menu
   p   print the partition table
   q   quit without saving changes
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help):   x

Expert command (m for help):   m
Command action
...
   f   fix partition order
   m   print this menu
   p   print the partition table
   q   quit without saving changes
   r   return to main menu
   v   verify the partition table
   w   write table to disk and exit

Expert command (m for help):   f
Done.

Expert command (m for help):   w

The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

¡Hecho!

Respuesta2

El problema de la partición superpuesta surge en parte debido a las rarezas de la partición de la PC.

La tabla de particiones tiene espacio para exactamente 4 entradas de "partición primaria". Si necesita tener más de 4 particiones, existe un mecanismo llamado particiones "extendidas": en realidad crea una partición grande (en su caso, la partición número 2) que a su vez tiene su propia tabla de subparticiones, lo que permite entradas adicionales llamadas particiones "lógicas".

Lo que ha hecho es crear una partición extendida que abarca desde el sector 208845 hasta 1953520064, pero también las particiones primarias 3 y 4 adicionales que se superponen al espacio en disco reservado para la partición "extendida".

La forma más sencilla de resolver los asuntos sería la siguiente:

  • eliminar las particiones 3 y 4 usando fdisk de Linux
  • Vuelva a crearlas (nuevamente usando fdisk) como particiones lógicas dentro de la partición extendida usando los mismos valores de inicio/fin del sector que antes.

Si desea que el orden de las particiones lógicas refleje su ubicación "física" en el disco, fdisktambién puede ayudarle. Simplemente presione "x" para activar la funcionalidad extendida y usar elF ix orden de particiónfunción. Es posible que deba ajustar sus fstabs para sistemas Linux después de eso: Windows tiene una identificación de partición basada en GUID y no debería preocuparse por el orden.

Respuesta3

Tenga cuidado: probé la opción de reparación avanzada en fdisk y reinicié mi sistema. Esto tuvo efectos desastrosos ya que mi /dev/sda8 se convirtió en /dev/sda5 en mi caso y /boot/grub no cambia como resultado.

Entonces, la solución obvia a este problema para evitar la destrucción es:

$ fdisk /dev/sda
x
f
w
$ update-grub
$ grub-install

pero primero asegúrese de tener instalados los comandos grub (arriba), ya que parece estar obsoleto en algunos sistemas.

información relacionada