Иногда случается так, что таблица разделов (PT или Partition Table)
оказывается пустой или заполненной неверными данными. В этом случае
система выдает сообщение типа «Non-System Disk or disk error. Replace
and press any key when ready» и более ничего не происходит. Ни любимого
рабочего стола, ни меню пуск – ничего, только черный экран умершего
компьютера. Конечно, это может случиться не только по причине
повреждения таблицы разделов (Partition Table), но и по причине
неправильных установок последовательности загрузки в CMOS-памяти и
забытой в дисководе дискете или CD-ROM. Но если никаких забытых дискет
или компакт-дисков нет, а в BIOS порядок загрузки начинается с нужного
жесткого диска, то повреждение Partition Table вполне вероятно.
Проверить точно можно с помощью Fdisk, запустив его и выбрав 4 пункт
меню «Вывод сведений об имеющихся разделах». Практически каждый
пользователь знает, какие разделы и логические диски у него на
компьютере и легко обнаружит, если Fdisk покажет что-то не так.
Это и будет повреждение Partition Table, хотя для полной уверенности следовало бы ознакомиться с книгой «Оптимизация и спасение IBM PC».
Если это произошло на компьютере геймера, больших проблем не
возникает. Нужно, всего-то, заново разбить разделы, создать логические
диски в дополнительном разделе (см. «Создание логических разделов и форматирование жестких дисков») и, отформатировав их, установить систему (см. «Загрузка MS-DOS, установка Windows»),
и все остальное – пару вечеров неспешной работы. Если же это произошло
на компьютере, хранящем важные базы данных, по глупости администрации,
не имеющие резервных копий, переустановкой системы проблему не решить –
прежде всего, требуется восстановление данных, а для этого, самым
надежным способом является восстановление диска в исходном состоянии.
О том, как восстановить таблицу разделов (Partition Table) по имеющейся резервной копии говорится в главе «Отказ компьютера от загрузки», книги «Оптимизация и спасение IBM PC», а о том, как получить эту копию, говорится в главе «Некоторые программы». Операции эти очень просты и не нуждаются в особых комментариях. Если же этих копий нет, дело значительно усложняется.
Но все в этом мире решаемо. В том числе и данная задача, для
примера решения которой возьмем случай средней сложности: Имеется диск,
на котором был основной раздел FAT32 MS-DOS, расширенный раздел MS-DOS и
два логических диска в расширенном разделе (всего три логических
диска); теперь ничего этого нет и Partition Table пуста; все три диска
должны быть восстановлены.
Для начала стоит попробовать запустить DOSовый Norton Disk Doctor
из Нортоновских утилит с параметром /UNDELETE (Отменить удаление
пропущенного ранее раздела) или /REBUILD (Восстановить целиком
поврежденный диск).
Если диск более 8,4 гигабайт, эти утилиты должны
иметь версию не ниже 2000, так как предыдущие версии не могут корректно
работать с большими дисками.
Не забываем создавать файлы Undo, для возвращения диска в
исходное состояние, если программа не осилит задачу. Если восстановление
не удалось, запускаем программу DiskEdit, из тех же утилит.
Выбираем «Object/Partition Table Alt+A», затем «View/as Partition
Table F6», затем разрешаем запись, снимая фишку «Read Only» в
«Tools/Configuration...». За тем, в первой строке колонки «System»,
пишем «FAT32x». Поскольку в данном примере имеется еще один раздел, во второй строке ставим «EXTNDx» (эти значения меняются пробелом). Во второй колонке ставим (так же, пробелом) «Yes» и «No»,
соответственно для первой и второй строки, поскольку первый раздел
является загрузочным, а второй – нет. Первая строка третьей колонки
заполняет так же легко, поскольку основной раздел всегда начинается в
одном и том же месте: Side=1, Cylinder=0, Sector=1. Вторая строка зависит от значений первой строки в четвертой колонке, а с ней, как и с остальными, придется повозиться.
Пока мы имеем следующий результат:
System | Boot | Starting Location | Ending Location | Relative sectors | Number of sectors |
| | Side | Cylinder | Sector | Side | Cylinder | Sector | | |
FAT32x | Yes | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
EXTNDx | No | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
unused | No | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
unused | No | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Однозначно известно, что, поскольку Fdisk разбивает диск так, чтобы разделы начинались с новой дорожки, Ending Location Sector, для обоих разделов будет 63, так как на современных дисках по 63 сектора на дорожку. Relative sectors для первого раздела будет 63, так, как первый логический диск начинается со второй дорожки (первая содержит только Partition Table).
Если бы на диске был только один раздел, на этом можно было бы и
остановиться, нажав Alt+T+R для авторасчета незаполненных данных
(Starting Location может быть рассчитан из Relative sectors и наоборот, а
Ending Location из Number of sectors и наоборот). Можно было бы так же,
поставить в Number of sectors общее количество секторов на диске,
вычисляемое по формуле:
Количество_секторов=Головок*Цилиндров*секторов_на_цилиндр
За минусом секторов в первом цилиндре, не входящем в основной раздел (63 сектора).
Затем можно было бы запустить NDD из Нортоновских утилит и
исправить ошибки, если они допущены при редактировании Partition Table. А
если бы это не помогло, внести в значения конечных секторов и
количество секторов (4 и 6 колонки) заведомо завышенные данные и
повторно запустить NDD. Однако наша задача посложнее. Поэтому следует
попытаться найти загрузочную запись первого раздела по адресу (63
абсолютный сектор или 1 головка, 0 цилиндр, 1 сектор), по 16-ти ричной
сигнатуре 55AA, строке «Invalid system disk» или по идентификатору
раздела MSDOS5.0 (для всех версий Windows идентификатор одинаков, так
как структура разделов, в их современном виде появилась, именно с DOS
5.0) или MSWIN4. Найдя загрузочную запись, следует переключить вид на
«as Boot Record(32) Alt+F7». В нормальном состоянии, она выглядит так:
Если загрузочный сектор уцелел и в нем указаны Sectors per track: 63, Sides: 255 Special hidden sectors: 63 и Big total number of sectors: 20482812, то:
Sides – 1 (с учетом того что, нумерация начинается с нулевой) – это Ending Location Side
Special hidden sectors – это Relative sectors.
Big total number of sectors – это Number of sectors.
Загрузочная запись логических дисков отображает
корректные данные только при обращении к ней на уровне логического
диска. При физическом доступе, щелкая по номерам секторов в таблице
разделов, можно перейти только на загрузочную запись основного раздела
или загрузочную запись первого логического диска в дополнительном
разделе. Перейти на загрузочную запись второго логического диска в
дополнительном разделе можно только указав номер кластера. Иначе, вместо
второго логического диска расширенного раздела будут отображаться
данные первого. и только для Big total number of sectors, а так же, Big
Sectors Per Fat можно будет определить истинные значения по данным
сообщаемым ДОС (колонка DOS Reports). Кроме того, колонка DOS Reports
сообщает неверные значения количества секторов на кластер (Sectors per
cluster), секторов в FAT (Big Sectors Per Fat), Всего секторов (Big
total number of sectors) и Всего секторов/Fat (Big Sectors Per Fat).
Таким образом, можно закончить заполнение первой строки, а не
заполненное значение Ending Location Cylinder получить авторасчетом
(предварительно поставив его на ноль и выделив всю строку) по нажатию
Alt+T+ R.
Если же загрузочная запись испорчена, остается только
экспериментировать со значениями и NDD. Можно попытаться найти
загрузочную запись расширенного раздела. Последний сектор основного
будет находиться на 64 сектора раньше.
Ни в коем случае нельзя создавать какой-либо раздел
на диске с помощью Fdisk: при сканировании дискового пространства fdisk
заполняет первый сектор каждой дорожки 16-ти ричным кодом F6, уничтожая в
нем всю информацию. На первый взгляд это может показаться
незначительной потерей, но именно в первом секторе находятся загрузочные
записи, а их уничтожение значительно уменьшает шансы на восстановление
дисковой структуры.
И так, первый диск прописан полностью. Настало время взяться за второй.
Relative sectors второго диска – это Number of sectors первого +
Relative sectors первого. Вводим значение, выделяем строку, нажимаем
Alt+T+ R и получаем третью колонку (Starting Location Side, очевидно
будет 0, а Starting Location Sector – 1). Number of sectors занимает
весь остаток секторов после первого раздела (всего_секторов –
Number_of_sectors_1_раздела – Relative_sectors_1_раздела).
Дополнительный раздел устроен так же, как жесткий диск. Поэтому, в
первом секторе дополнительного раздела находится своя Partition Table и
через меню «Link/ Partition» можно перейти к ней, если она не
повреждена, то, сложив ее Relative sectors для первого логического диска
дополнительного раздела (обычно 63) с Number of sectors всех его
дисков, получим значение, должное совпадать с Number of sectors
дополнительного раздела из главной Partition Table.
Для всех секторов, английская версия из утилит 2002
показывает абсолютный номер, а русская из Norton Utilities 4.0
показывает адрес сектора в формате Головка, цилиндр, сектор. Знание
адреса в различных вариантах может пригодиться при поиске или записи
абсолютных секторов.
Восстановление загрузочных записей (Boot Records) является
наиболее сложной процедурой. Избавиться от сложностей можно, используя
аналогичный диск, не содержащий ценной информации. На этом диске вручную
создаются (или копируются) такие же таблицы разделов, как были созданы
на восстанавливаемом, а затем, с помощью программы Format,
форматируются логические диски (при необходимости, предварительно,
создаются Fdisk-ом). Затем, полученные загрузочные записи (а при
необходимости и таблицы разделов) переносятся на восстанавливаемый диск,
на котором, при необходимости, могут быть предварительно
откорректированы DiskEdit-ом, а затем, проверены NDD. Обычно достигается
100% восстановление данных.
Если второго диска нет, можно попытаться восстановить загрузочные
записи, запустив NDD с теми же режимами, что и перед попыткой
низкоуровневого редактирования дисковых разделов вручную. Такой способ
тоже часто помогает.
Если не помогло и это, а ручное редактирование не дает
положительных результатов, структуру диска можно считать безвозвратно
утраченной и пытаться восстановить лишь некоторые его данные.
Но это уже другая тема. По этой теме предлогаю посмотреть Восстановление данных и скачивать программы для восстановления данных.