Wie kann die Reihenfolge der Partitionstabelle korrigiert werden?

Wie kann die Reihenfolge der Partitionstabelle korrigiert werden?

Ich wollte eine komplett neue Linux-Distribution (Mageia) installieren und sah dies als Gelegenheit, meine Partitionen neu zu organisieren. Ich wollte alle meine Nicht-Linux-Partitionen (Windows, Wiederherstellen usw.) am Anfang und meine Linux-Partitionen am Ende haben, damit ich leichter neue Linux-Partitionen erstellen kann, wenn ich weitere Distributionen testen möchte.

Ich habe GParted verwendet, um die vorhandenen Linux-Partitionen zu löschen (ich habe die Daten gesichert, die ich behalten wollte) und die verbleibenden nach vorne verschoben. Später habe ich die Linux-Partitionen im Mageia-Installationsprogramm erstellt.

Es dauerte eine Weile, aber am Ende wurde GParted ohne Probleme fertiggestellt. Auch Mageia wurde ohne Probleme installiert.

Beim Booten in Mageia hatte ich ein (damit nicht zusammenhängendes?) Problem mit der ATI Radeon-Grafikkarte (immer noch ungelöst), das mir nur die Konsole ließ, und beim Neustart sah ich, wie etwas Error: Can't have overlapping partitionsvorbeihuschte.

Kein Problem, dachte ich, ich starte GParted einfach noch einmal und behebe das Problem. Leider zeigt GParted die gesamte Festplatte als nicht zugeordnet an. OK, zurück zu Linux. Wenn ich Parted über die Befehlszeile starte, bekomme ich

[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.

fdisksollte mir mehr Informationen geben und das tat es:

[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

Wenn ich nach Partitionsstart sortiere, scheint es, dass /dev/sda5und /dev/sda6aufgerufen werden sollte /dev/sda3und /dev/sda4umgekehrt.

   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

Durch Googeln habe ich herausgefunden, dass testdisksich das Problem beheben lässt.

  1. Wie verwende ich testdisk? Die Benutzeroberfläche ist ziemlich verwirrend.
  2. Kann ich es unter Linux/Windows ausführen oder muss ich eine Live-Version booten?

Dank im Voraus,

Nick


Ich habe die Anweisungen in der Antwort unten befolgt, aber es funktioniert nicht.

Diese Partitionen muss ich neu erstellen:

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

Das ist, was passiert:

[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):

Die 1. Partition muss bei 95074 beginnen0992aber der neue startet möglicherweise erst bei 950743040.

Wie gehe ich vor?

Antwort1

Die beste Lösung, die ich zum Korrigieren der Partitionsreihenfolge gefunden habe:

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.

Erledigt!

Antwort2

Das Problem der überlappenden Partitionen entsteht teilweise aufgrund der Eigenheiten der PC-Partitionierung.

Die Partitionstabelle bietet Platz für genau 4 „primäre Partition“-Einträge. Wenn Sie mehr als 4 Partitionen benötigen, gibt es einen Mechanismus namens „erweiterte“ Partitionen – dieser erstellt tatsächlich eine große Partition (in Ihrem Fall Partition Nr. 2), die wiederum eine eigene Unterpartitionstabelle hat, die zusätzliche Einträge ermöglicht, die als „logische“ Partitionen bezeichnet werden.

Sie haben eine erweiterte Partition erstellt, die sich vom Sektor 208845 bis 1953520064 erstreckt, aber auch zusätzliche primäre Partitionen 3 und 4, die den für die „erweiterte“ Partition reservierten Speicherplatz überlappen.

Der einfachste Weg, das Problem zu lösen, wäre wie folgt:

  • Löschen Sie die Partitionen 3 und 4 mit Linux fdisk
  • Erstellen Sie sie (erneut mit fdisk) als logische Partitionen innerhalb der erweiterten Partition neu und verwenden Sie dabei die gleichen Sektor-Start-/Endwerte wie zuvor

Wenn Sie möchten, dass die logische Partitionsreihenfolge ihren "physischen" Speicherort auf der Festplatte widerspiegelt, fdiskkann dies ebenfalls hilfreich sein. Drücken Sie einfach "x", um die erweiterte Funktionalität zu aktivieren, und verwenden Sie dieF ix PartitionsreihenfolgeFunktion. Möglicherweise müssen Sie Ihre s für Linux-Systeme danach anpassen fstab– Windows verfügt über eine GUID-basierte Partitionsidentifikation und sollte sich nicht um die Reihenfolge kümmern.

Antwort3

Seien Sie gewarnt: Ich habe die erweiterte Fix-Option in fdisk ausprobiert und mein System neu gestartet. Dies hatte katastrophale Auswirkungen, da mein /dev/sda8 in meinem Fall zu /dev/sda5 wurde und sich /boot/grub dadurch nicht ändert.

Die offensichtliche Lösung für dieses Problem, um die Verstümmelung zu vermeiden, ist also:

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

Stellen Sie jedoch zunächst sicher, dass die Grub-Befehle (siehe oben) installiert sind, da diese auf manchen Systemen veraltet zu sein scheinen.

verwandte Informationen