Я собирался установить совершенно новый дистрибутив 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
это можно исправить.
- Как пользоваться
testdisk
? Интерфейс довольно запутанный. - Могу ли я запустить его из 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 порядок разделовфункция. После этого вам может потребоваться настроить fstab
s для систем Linux — Windows использует идентификацию разделов на основе GUID и не должна беспокоиться о порядке.
решение3
Будьте осторожны: я попробовал расширенную опцию исправления в fdisk и перезагрузил систему. Это имело катастрофические последствия, так как мой /dev/sda8 стал /dev/sda5 в моем случае, а /boot/grub в результате не изменился.
Итак, очевидным решением этой проблемы, позволяющим избежать искажения, является:
$ fdisk /dev/sda
x
f
w
$ update-grub
$ grub-install
но сначала убедитесь, что у вас установлены команды grub (см. выше), так как в некоторых системах они, похоже, устарели.