Windows-Android-Linux-Visual Basic-PC - nic (NB) блог

 

Дата публикации: 17.07.2019
Автор: nic binary

Master Boot Record - Главная загрузочная запись

Существуют два типа разметки накопителей на жестких магнитных дисках.1-Главная загрузочная запись (MBR).2-Таблица разделов GUID.Таблица разделов GUID будет рассмотрена в следующих статьях.Здесь речь пойдёт исключительно о MBR.Отмечу,что MBR совмещает в себе три компонента: 1-Главный загрузочный код 2-Таблица разделов диска 3-сигнатуру 55АА.Сигнатура является флагом,указывающим,что диск имеет таблицу разделов соответствующую MBR.Загрузочный код может иметь максимальный размер 446 байт,далее идёт таблица разделов имеющая длину 64 байт по 16 байт на каждый раздел и сигнатура длиной 2 байта.Итого всё это укладывается в размер одного физического сектора диска 512 байт. BIOS при запуске компьютера и прохождении Self теста загружает этот сектор с диска в оперативную память.Этот сектор имеет номер 1 (отсчёт идёт с единицы).Далее передаёт управление на начало этого кода.Далее код может загружать систему любым известным только ему ) способом.Например ОС Windows,после передачи управления на код,копирует себя по адресу 0600h передаёт туда управление анализирует таблицу разделов,ищет раздел помеченный как активный (сигнатура 80h) и загружает код этого раздела.В MBR можно указать максимально четыре первичных раздела.Каждый раздел может содержать расширенный раздел,который,в свою очередь может содержать множество дополнительных разделов.(использовалось в MSDOS и UNIX системах).Сейчас в Windows расширенные разделы не используются(ИМХО).По-крайней мере,создать их средствами Windows,не предоставляется возможным.Подробнее о MBR в Wikipedia и здесь .

А теперь к главному...

Этот 1 сектор диска - косяк! и костыль! ОС использующих MBR.При каких либо повреждениях этого сектора,загрузчики нас "кормят" разными "понятными" сообщениями.Но всё сводится к невозможности загрузить этот самый 1-ой сектор или выполнить его программный код.Конечно,можно хранить копию этого сектора в другом свободном месте диска,но БИОСу абсолютно "по барабану",где этот код дополнительно сохранён! Она будет пытаться грузить его исключительно из сектора 1.И при невозможности удачной загрузки либо при нарушении целостности этого кода произойдёт ошибка загрузки.(Boot Fail) И мы увидим чёрный экран,с каким либо не особо информативным (обычному пользователю)сообщением.Самым главным местом в этом секторе является таблица разделов имеющая длину 64 байта.Её желательно зарезервировать,например на внешнем носителе.Восстановить её бывает крайне сложно (если она не была сохранена заранее).А сам загрузочный код не сильно меняется от версии к версии ОС и он довольно легко восстановим.Для его восстановлениясоздания можно воспользоваться замечательной утилитой BootIce.Об этом будет рассказано ниже.Здесь же речь пойдёт о резервировании и восстановлении именно той части MBR где храниться таблица разделов.Для этих действий будем использовать шестнадцатиричный редактор WinHex версии 15.5 (Можно использовать любой HEX редактор позволяющий обращатся напрямую к дисковым секторам) Редактор платный.По-этому использовать его или нет решать вам.Все примерыскриншоты будут сделаны с помощью этого редактора.Использована ОС Windows 7.

Резервируем таблицу разделов

Запускаем WinHex от имени администратора.
Вы можете использовать альтернативный редактор
Жмём F9 и выбираем наш загрузочный физический диск.Обычно он имеет номер 0.HD0

WinHex показывает нам некоторую информацию о приводе.

Выделаем область содержащую таблицу разделов с адреса 01BE.
 
Далее правая кнопка мыши edit ->  copy block -> into new file и выбираем место куда сохранить и сохраняем.Файлик должен весить 66 байт.Далее этот файлик можно отправить на внешний носитель. В данном примере сохраняется лишь таблица разделов и сигнатура.Можно сохранить весь сектор,выбрав стартовый адрес выделения 0  и конечный 01FF.

Конечно при изменении геометрии разделов диска этот бекап следует сделать заново.

Теперь восстановление. 

Если предпологается восстановление,то это говорит о том что система незагружаетсяне видит разделы жесткого диска.Здесь возможны два варианта. 1-система не загружается,2-"не виден" жесткий диск.В первом случае можно восстановить сектор из бекапа всего сектора как описано выше.Если бекап сделан только на таблицу разделов то можно воспользоватся средствами восстановления кода MBR.Например программой BootIce.См.ниже.
Если "не виден" жесткий диск,необходимо загрузиться с диска WinPE или с загрузочной флешки с предварительно установленным WinHex или другим редактором. Запускаем редактор и жмем CTRL+O (открыть) и выбираем наш файл.(Файл уже должен быть на флешке или загрузочном CD)
Далее жмём CTRL+A -> CTRL+C (выделить всё и скопировать содержимое в буфер).Открываем наш физический драйв по F9 как было указано выше.Он может быть уже не с номером 0 если загрузка была с флешки.Устанавливаем курсор на адрес 01BE если бекап только разделов или на адрес 0 если бекап всего сектора.Далее праваякнопка мыши edit -> clipboard data -> write.Будет выведен диалог подтверждения.Соглашаемся.При закрытии редактора будет диалог о сбросе измененных данных на диск.Соглашаемся.Перезагрузка в нормальном режиме. :-)
 

Бекап и восстановление с помощью утилиты BootIce.

Описание утилиты на сайте 4pda.ru
Здесь всё проще.Программа "заточена" под эти действия. Запускаем утилиту.Выбираем HD0.

Выбираем Process MBR
 
Далее Backup MBR.Выбираем путь сохранения и имя файла.

MBR сохранён.Утилита сохраняет весь сектор.Все 512 байт. Восстановление делаем также.Загрузка с диска WinPE или флешки.Выбираем жесткий диск (по имени проще,если запомнили,т.к. первым диском при загрузке с флешки будет сама флешка).Выбираем Process MBR -> Restore MBR и выбираем сохраненный файл с MBR который должен быть на флешке.После сообщения об удачной замене MBR перезагружаем компьютер в нормальном режиме.
Есть ещё стандартная утилита от Microsoft bootsect.exe входящая в состав Windows Vista и выше и присутвующая на установочном носителе либо в различных сборках WinPE.Для её использования имеется документация присутствующая в самой утилите.Да много чего ещё есть ))).Много информации можно прочитать здесь http://greenflash.su


P.S.Некоторые сообщения выдаваемые при ошибках загрузки


Это сообщение выдаёт БИОС при невозможности загрузить 1 сектор диска.Это может быть ошибка контроллера диска,физическая неисправность носителя,отсутствиеплохой контакт накопителя.Метод решения - перезагрузиться войти в БИОС и проверить корректность определения накопителя.Если накопитель определяется,то возможно повреждение сигнатуры 55АА. Тогда её необходимо проверитьвосстановить с помощью,например,выше указанного редактора или  редактора в составе утилиты BootIce.Имеет смещение 01FE и значение АА55 длину 2 байта.Большинство версий проверяют сигнатуру.Хотя встречаются исключения.

Invalid partition table,Error loading operating system,Missing operating system - эти сообщения выдаёт уже загруженный код сектора 1 ( ОС Windows).Они указавают на ошибку таблицы разделов либо ошибку в коде второго уровня загрузки PBR.

Некоторые загрузчики,например grub4dos не используют загрузочный код в PBR.Загружая непосредственно основной загрузчик в виде файла на носителе (grldr).

*WinPE - Preinstalation Environment.Версия системы используемая для аварийных случаев и для установки основной системы.Может называтся LiveCD (DVD).

Удачи в резервировании и восстановлении!!!

Комментарии к странице
Дата: 02.11.2019 - 18:23:07
Имя: Алексей
Комментарий: Перезвоните мне пожалуйста по номеру 8 (812)747-16-80 Алексей

Ваш комментарий




Наверх