Как исправить порядок таблицы разделов?

Как исправить порядок таблицы разделов?

Я собирался установить совершенно новый дистрибутив Linux (Mageia) и увидел в этом возможность реорганизовать свои разделы. Я хотел, чтобы все мои не-Linux разделы (Windows, восстановление и т. д.) были в начале, а разделы Linux — в конце, чтобы мне было легче создавать новые разделы Linux, если я захочу протестировать еще несколько дистрибутивов.

Я использовал GParted для удаления существующих разделов Linux (я сделал резервную копию данных, которые хотел сохранить) и переместил оставшиеся на передний план. Позже я создам разделы Linux в установщике Mageia.

Это заняло некоторое время, но в итоге GParted завершился без проблем. Mageia также установилась без сучка и задоринки.

При загрузке Mageia у меня возникла какая-то (не связанная с этим?) проблема с видеокартой ATI Radeon (до сих пор не решенная), из-за которой у меня осталась только консоль, а при перезагрузке я увидел, как Error: Can't have overlapping partitionsчто-то пролетает мимо.

Нет проблем, подумал я, я просто снова загружу GParted и исправлю это. Увы, GParted показывает весь диск как нераспределенный. Ладно, вернемся к Linux. Запуск parted из командной строки дает мне

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

fdiskдолжно было дать мне больше информации, и оно это сделало:

[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

Если я сортирую по началу раздела, то, похоже, /dev/sda5и /dev/sda6следует называть /dev/sda3и /dev/sda4и наоборот.

   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

Погуглив, я нашел, как testdiskэто можно исправить.

  1. Как пользоваться testdisk? Интерфейс довольно запутанный.
  2. Могу ли я запустить его из Linux/Windows или мне следует загрузить live-версию?

Заранее спасибо,

Ник


Я выполнил инструкции, приведенные в ответе ниже, но это не помогло.

Эти разделы мне придется создать заново:

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

Вот что происходит:

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

Первый раздел должен начинаться с адреса 95074.0992но новый может начинаться только с 950743040.

Как мне действовать?

решение1

Лучшее решение, которое я нашел для исправления порядка разделов:

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.

Сделанный!

решение2

Проблема перекрывающихся разделов возникает отчасти из-за особенностей разбиения ПК на разделы.

Таблица разделов имеет место ровно для 4 записей "первичного раздела". Если вам нужно больше 4 разделов, есть механизм, называемый "расширенными" разделами - он фактически создает большой раздел (в вашем случае раздел №2), который в свою очередь имеет собственную таблицу подразделов, позволяющую вводить дополнительные записи, называемые "логическими" разделами.

Вы создали расширенный раздел, охватывающий сектор от 208845 до 1953520064, а также дополнительные основные разделы 3 и 4, перекрывающие дисковое пространство, зарезервированное для «расширенного» раздела.

Самый простой способ решения вопроса был бы следующим:

  • удалить разделы 3 и 4 с помощью Linux fdisk
  • пересоздайте их (снова с помощью fdisk) как логические разделы внутри расширенного раздела, используя те же значения начала/конца сектора, что и раньше

Если вы хотите, чтобы логический порядок разделов отражал их "физическое" расположение на диске, fdiskможет помочь. Просто нажмите "x", чтобы активировать расширенную функциональность и используйтеф ix порядок разделовфункция. После этого вам может потребоваться настроить fstabs для систем Linux — Windows использует идентификацию разделов на основе GUID и не должна беспокоиться о порядке.

решение3

Будьте осторожны: я попробовал расширенную опцию исправления в fdisk и перезагрузил систему. Это имело катастрофические последствия, так как мой /dev/sda8 стал /dev/sda5 в моем случае, а /boot/grub в результате не изменился.

Итак, очевидным решением этой проблемы, позволяющим избежать искажения, является:

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

но сначала убедитесь, что у вас установлены команды grub (см. выше), так как в некоторых системах они, похоже, устарели.

Связанный контент