Таблица разделов неверно отображается внутри программного обеспечения раздела

383
kellogs

Я хотел бы поработать над sdb3разделом:

sudo fdisk -l  Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes 16 heads, 63 sectors/track, 1938021 cylinders, total 1953525168 sectors  Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk identifier: 0x2052474d  Device Boot Start End Blocks Id System  /dev/sdb1 63 549971855 274985896+ 7 HPFS/NTFS/exFAT  Partition 1 does not start on physical sector boundary. /dev/sdb2 549971856 1470063167 460045656 7 HPFS/NTFS/exFAT  /dev/sdb3 * 1470063168 1810175471 170056152 7 HPFS/NTFS/exFAT 

Однако оба инструмента разметки (gParted и KDE Partition Manager), которые я пробовал, не могут найти этот раздел:

Скриншот

Как я попал в эту ситуацию

Я делал операцию изменения размера раздела из KDE Part Manager. Через 10 секунд я вспомнил, что я также хотел, чтобы этот раздел был перенесен на другой диск. Нажмите Отмена, спустя 2 часа KDE Partition Manager все еще пытался отменить операцию. Я принудительно остановил его, затем с помощью Testdisk мне удалось восстановить 3 раздела sdb. Зашел в Windows XP и успешно запустился chkdsk /fна всех 3 NTFS-разделах sdb. Прямо сейчас они могут быть смонтированы и использованы в Linux и Windows, видимо, нормально.

Как мне сделать так, чтобы 3 раздела снова появлялись в программном обеспечении для создания разделов?

редактировать 1

kellogs-PC kellogs # lsblk /dev/sdb NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb 8:16 0 931,5G 0 disk  ├─sdb1 8:17 0 262,3G 0 part /media/kellogs/downloads 2 ├─sdb2 8:18 0 438,8G 0 part /media/kellogs/para backup └─sdb3 8:19 0 162,2G 0 part /media/kellogs/Win8 

edit2

Ответ Камиля @ https://superuser.com/a/1225632/60373 не помог мне.

Забыл упомянуть о важном. Эта машина имеет 3 ОС

/ dev / sda - Windows XP, Linux / dev / sdb - Windows 8.1

Таблица разделов неверно отображается внутри программного обеспечения раздела Таблица разделов неверно отображается внутри программного обеспечения раздела

/ dev / sda1 - это раздел Win XP, очевидно, с загрузчиком Win8:

kellogs-PC kellogs # update-grub Generating grub configuration file ... Warning: Setting GRUB_TIMEOUT to a non-zero value when GRUB_HIDDEN_TIMEOUT is set is no longer supported. Found linux image: /boot/vmlinuz-3.13.0-24-generic Found initrd image: /boot/initrd.img-3.13.0-24-generic Found memtest86+ image: /boot/memtest86+.elf Found memtest86+ image: /boot/memtest86+.bin No volume groups found Found Windows 8 (loader) on /dev/sda1 done 

Это выглядит хорошо для меня, но ... Windows 8.1 не загружается. Опять же, раздел Win8 (он же sdb3 ) прекрасно монтируется из Win XP и Linux. Поиск в интернете кода ошибки «0xc000000e» не дает мне четкого ответа на мою проблему.

0
Хм, похоже что-то неправильно сообщается libparted. Если оба они показывают одинаковый вывод. Кстати, вставьте вывод команды lsblk / dev / sdb. А где вы взяли эту древнюю версию KDE Partition Manager 1.0.3? Текущая версия 3.1.0. Какой дистрибутив это? Кто-то должен пинговать упаковщиков. Andrius Štikonas 6 лет назад 1
@ AndriusŠtikonas отредактировал с выходом, спасибо kellogs 6 лет назад 0
Хм, интересно, можно ли было бы посмотреть на ваш файл MBR? Я мог бы попытаться увидеть, где застревает KDE Partition Manager, например, в KPM или в libparted ... Andrius Štikonas 6 лет назад 1
@ AndriusŠtikonas уверен, что будет, вот оно: http://194.150.85.156:8080/html/sdb.mbr.backup kellogs 6 лет назад 0

2 ответа на вопрос

1
Kamil Maciorowski

Изменить:
К сожалению, этот ответ не решает проблему ОП . Я не буду удалять это хотя (по крайней мере пока). Это документирует неудачную попытку, которая имеет некоторую образовательную ценность. Это также помешает другим опубликовать такое же возможное решение.

(Редактирование заканчивается здесь, оригинальный ответ ниже).


Ваша ситуация может быть похожа на это, но несколько отличается. Я признаю, что не могу объяснить, как именно действия, которые вы описали, могли вызвать это, тем не менее, я думаю, что моя следующая теория правдоподобна .

В связанном вопросе действительно была суперфлоппи (т.е. файловая система на всем устройстве, без таблицы разделов), но большинство программ (включая Windows) сначала обнаружили свою (недействительную) таблицу разделов.

У вас есть действительная таблица разделов, и большинство программ должны обнаруживать ее (как это делает Windows). Тем не менее KDE Partition Manager считает, что ваш диск является суперфлоппи с файловой системой NTFS на всем устройстве. Похоже, что сначала он пытается обнаружить суперфлоппи файловую систему, и если это удается, он пропускает дополнительные тесты. Я предполагаю, что некоторые части /dev/sdbMBR вводят в заблуждение ваш менеджер разделов.

Если вы не загружаетесь с/dev/sdb (т. Е. Загрузочный код там полностью не используется, вы загружаетесь /dev/sdaтолько и точно), вы можете записать нули в область загрузочного кода /dev/sdbMBR. В моем ответе на связанный вопрос есть диаграмма, которая сравнивает MBR с NTFS VBR:

 MBR │ byte offset │ NTFS VBR │ hex / dec │ ───────────┼─────────────┼───────────── │ 0x000 / 000 │ mainly NTFS bootstrap │ … │ metadata code ├─────────────┼───────────── │ 0x054 / 084 │ │ … │ bootstrap ───────────┼─────────────┤ code partition │ 0x1BE / 446 │ table │ … │ ───────────┼─────────────┼───────────── 0x55 │ 0x1FE / 510 │ 0x55 0xAA │ 0x1FF / 511 │ 0xAA ───────────┴─────────────┴───────────── 

Этого должно быть достаточно для записи нулей в первые 84 байта диска, чтобы любой инструмент не мог найти подпись NTFS на (предполагаемой) суперфлоппи-диске.

В Linux:

# making backup of the entire MBR just in case dd if=/dev/sdb of=~/sdb.mbr.backup bs=512 count=1  # zeroing alleged NTFS metadata, use 'bs=446' to zero the entire bootstrap code of MBR dd if=/dev/zero of=/dev/sdb bs=84 count=1 sync 

Затем (пере) запустите KDE Partition Manager и посмотрите, помогло ли это. Если этого не произошло, было бы разумно отменить изменение на тот случай, если вы допустили ошибку, считая, что загрузочный код /dev/sdbне имеет значения.

# reverting dd if=~/sdb.mbr.backup of=/dev/sdb sync 
Это может сработать. На самом деле в некоторых старых версиях KDE Partition Manager была ошибка, из-за которой стирание сигнатур файловой системы не работало. Это было исправлено давно, но у @kellogs не было этих исправлений в его версии. Andrius Štikonas 6 лет назад 0
Спасибо! не имеет значения, как эти два инструмента разметки просматривают диск * sdb *. Я добавил `edit 2` к моему вопросу. Хотите посмотреть? kellogs 6 лет назад 0
@kellogs Вы можете добавить замечание к вашему вопросу, что вы опробовали мое решение, но оно не удалось. Таким образом, другие пользователи сразу узнают, что уже сделано. При этом, пожалуйста, сделайте ссылку на этот конкретный ответ (не говорите «ответ Камиля» без ссылки), потому что если у меня есть другая (отличная) идея, я, вероятно, добавлю * еще один * ответ. Kamil Maciorowski 6 лет назад 0
@KamilMaciorowski сделано. kellogs 6 лет назад 0
1
Andrius Štikonas

Я думаю, что таблица разделов MBR сломана. Хотя fdisk может распознать разделы, сам parted застрял. Как KDE Partition Manager, так и GParted полагаются на libparted для обнаружения разделов, поэтому отображают неверную информацию.

Я предлагаю воссоздать таблицу разделов с точно такими же границами разделов, как и раньше.

Вы можете проверить мою попытку здесь: https://stikonas.eu/files/sdb.mbr.new

Также обратите внимание, что ваши разделы не выровнены по границам MiB. Вероятно, не имеет большого значения для старых жестких дисков, но это будет иметь значение для SSD.