Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

ПЛАН ВОССТАНОВЛЕНИЯ ВИНЧЕСТЕРА ПРИ РАЗРУШЕНИИ УПРАВЛЯЮЩИХ СИСТЕМНЫХ БЛОКОВ


ПЛАН ВОССТАНОВЛЕНИЯ ВИНЧЕСТЕРА ПРИ РАЗРУШЕНИИ УПРАВЛЯЮЩИХ СИСТЕМНЫХ
БЛОКОВ


Master Boot Record (MBR) и Boot Record.

Этот текст представляет собой обобщение моего опыта по восстановлению
разрушенных системных блоков при использовании драйвера Disk Manager и
ДОС 3.30. Предполагается, что пользователь уже имеет навык работы с про-
граммамиNorton Utilites 4.5 или Disk Editor 5.0.

Прежде, чем браться за восстановление винчестера нужно узнать его ос-
новные характеристики (Drive Info, Physical Characeristic), такие как
Sides(Число сторон винчестера), Tracks(Число дорожек), Sector per
track(Секторов на дорожку).

Для тех, кто не знаком с форматами MBR и Boot Record ниже приведены
соответствующие таблицы.

Master Boot Record (MBR) Таблица разделов диска
Самый первый сектор твердого диска (0/0/1 - Track/Side/Sector) содержит
Главную корневую запись, которая загружается в память и выполняется. По-
следняя часть этого сектора содержит таблицу разделов -- таблицу с 16-
байтовыми элементами. Этой таблицей манипулирует программа Disk Manager.
Структура элемента раздела

+0 1 ¦Boot Флаг загрузки: 0=не активен, 80H = активен
¦ ¦ Обычно равен 80h для раздела C:

+1 1 ¦Hd ¦ Начало раздела: номер головки

+2 2 ¦Sec Cyl¦ Начало раздела: сектор/цилиндр корневого сектора

+4 1 ¦Sys¦ Код системы: 0=неизвестна, 1=DOS 12-бит FAT, 4=16-бит
¦ ¦ 51h- Disk Manager

+5 1 ¦Hd ¦ Конец раздела: номер головки

+6 2 ¦Sec Cyl¦ Конец раздела: сектор/цилиндр последнего сектора

+8 4 ¦ младш старш ¦ Относительный номер начального сектора

+0cH 4 ¦ младш старш ¦ Размер (число секторов)

+10H начало следующего элемента раздела (или 0aa55H для
последн.элемент
Значение "относительного сектора" по смещению 08H в каждом разделе
эквивалентно головке, сектору и цилиндру начального адреса раздела.
Относительный сектор 0 совпадает с цилиндром 0, головкой 0, сектором
1. Относительный но мер сектора прирастает сначала по каждому сектору
на головке, затем по каж дой головке и наконец по каждому цилиндру.
Применима формула:

отн_сек = (#Цил * сек_на_цил * головок) + (#Гол * сек_на_цил) + (#Сек -1)

Структура корневого сектора (Boot Record)
Корневой сектор диска или раздела диска должен иметь следующий формат.

Смещ. Длина Содержимое

+0 3 ¦JMP¦ xx xx ¦ Переход на код загрузки

+3 8 ¦'I' 'B' 'M' '3' '.' '2'¦ OEM-имя компании и версия систем

+0bH 2 ¦SectSiz¦ байт на сектор

+0dH 1 ¦ClustSiz секторов на единицу распределения (кластер)

+0eH 2 ¦ResSecs¦ резервных секторов (секторов перед первой FAT)

+10H 1 ¦FatCnt число таблиц FAT

+11H 2 ¦RootSiz¦макс.число 32-байтовых элементов корневого оглавления

+13H 2 ¦TotSecs¦ общее число секторов на носителе (раздел DOS)

+15H 1 ¦Media дескриптор носителя (то же, что 1-й байт FAT)

+16H 2 ¦FatSize¦ число секторов в одной FAT

+18H 2 ¦TrkSecs¦ секторов на дорожку (цилиндр)

+1aH 2 ¦HeadCnt¦ число головок чтения/записи (поверхностей)

+1bH 2 ¦HidnSec¦ спрятанных секторов (исп. в схемах разделения)

1eH размер форматированной порции корневого сектора
начало кода и данных загрузки

Ситуация N 1.

1. В один прекрасный момент один или несколько разделов винчестера
перестали читаться и тестовые программы утверждают, что это не Hard
Disk, а Drive. При этом с этим диском ДОС не может работать.

Наиболее вероятной причиной этого может быть разрушение Boot Record
этого диска.

Адрес Boot Record можно найти в физическом секторе с координатами
0/0/1 (Track/Head/Sector) в соответствующем разделу элементе Partition
Table. Далее надо перейти к этому сектору и просмотреть его в формате
Boot Record (клавиша F7 в программе Disk Editor). Если в полях корневого
сектора находится "мусор", то надо в ручную восстановить этот сектор.

Надо забить нулями остальную часть загрузочного сектора или скопиро-
вать на это место загрузочный сектор системной дискетты если раздел дис-
ка активен (C:)
Затем надо вручную заполнить управляющие поля этого сектора:

Поле Boot Record ¦ Корректное значение
OEM ID: ¦ Можете записать сюда свое имя
Bytes per sector: ¦ 512
Sectors per cluster: ¦ ??? (См. дальше)
Reserved sectors at beginning: ¦ 1
FAT Copies: ¦ 2
Root directory entries: ¦ 512
Total sectors on disk: Это значение берется из Partition Table
¦ (поле +0Ch в соответствующем элементе)
Media descriptor byte: ¦ F8 Hex
Sectors per FAT: ¦ ??? (См. дальше)
Sectors per track: ¦ Значение берется из Drive Info
Sides: ¦ Значение берется из Drive Info
Special hidden sectors: ¦ Это значение равно значению Relative Sectors
¦ (Относительный номер начального сектора)
¦ (поле +08h в соответствующем элементе Part. Table)
¦ Если диск не загрузочный, то к этому значению
¦ прибавляется число 8388608 (800000h)
В этой таблице остались незаполненными поля Sectors per FAT (Секторов
на FAT) и Sectors per Claster (Секторов на кластер). Их надо вычислять
дополнительно:

Sectors per FAT : Просматриваем сектора диска, следующие за Boot Record,
пока не найдем начало коренного каталога. Запоминаем координаты сектора
каталога. Затем вычисляем относительный номер этого сектора относительно
Boot Record из расчета, что известны Число Сторон на диске, Число Секторов
на Дорожку и Относительный адрес Boot Record = 1. Затем находить искомое
поле S/F: S/F := ( -1) div 2. Sectors per Claster
: Это значение надо подобрать из расчета, что оно может принимать
значения 8 sect/clast или 4 sect/clast.
2. В случае разрушения Partition Table Восстановить утраченные зна-
чения гораздо сложней. Здесь самое сложное - это восстановить координаты
начала и конца разделов диска. Это возможно только путем просмотра соде-
ржимого винчестера и контекстного поиска строк, характерных для Boot
Record каждого размера винчестера. В качестве примера таких строк можно
предложить:
"NOSYSTEM", "MSDOS3.3", "Disk Boot failure" и т.д.
Если вам удастся выполнить эту кропотливую работу, остальное не пре-
дставляет проблем.

Поля элементов Partition Table заполняются следующим образом:

Флаг загрузки: =0 или =80H для диска C:

Начало раздела: номер головки ____ Найденное значения
Начало раздела: сектор/цилиндр корневого сектора / координат начала
раздела.
Код системы: =1 для диска C: или =51h для остальных разделов
Конец раздела: номер головки ____ Найденное значения
Конец раздела: сектор/цилиндр последнего сектора / координат конца
раздела.

Относительный номер начального сектора : Вычисляется по формуле,
приведенной ранее, в описании формата Part. Table
Размер (число секторов): = Относит. сектор начала следующего раздела минус
Относит. сектор начала этого раздела
3. В случае разрушения и MBR и Boot Record задача значительно усло-
жняется. Могу только порекомендовать восстановить сначала MBR, а затем
все остальное.

  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2024
    Реклама на сайте