Логическая организация жесткого диска

(Окончание, начало в №30)

На этот раз предлагаю рассмотреть вопросы, связанные с начальной загрузкой операционной системы. На примере DOS, конечно, которая только недавно изгнана из состава операционных систем Microsoft (я имею в виду Windows ME).


Начальная загрузка

Загрузка операционной системы происходит следующим образом:

  1. BIOS, после проведения первичной самодиагностики (POST, Power-On Self-Test), считывает самый первый сектор с того устройства, которое задано первым в Setup (Advanced Features, Boot Sequence или First Boot Device), и начинает его выполнение.
  2. Загрузчик, который был в этом секторе, просматривает свою таблицу разделов на предмет наличия активного (загрузочного) раздела, вычисляет адрес загрузочного сектора активного раздела, считывает и запускает этот сектор.
  3. Загрузчик из boot-сектора выполняет считывание и запуск файлов операционной системы; для DOS 7.1, входящей в состав Windows95/98, это всего один файл - IO.SYS.
  4. IO.SYS сначала просматривает файл CONFIG.SYS - ищет там загрузочное меню, устанавливает драйверы устройств, которые там могут быть заданы (кроме того, HIMEM. SYS, IFSHLP.SYS и SETVER.EXE загружаются в любом случае), после чего запускает обработчик командной строки COMMAND.COM.
  5. COMMAND.COM выполняет пакетный файл AUTOEXEC.BAT, после чего вызывает программу WIN.COM; впрочем, если подправить файл MSDOS.SYS (бывший компонент операционной системы, сейчас просто конфигурационный файл), COMMAND.COM не начнет загрузку Windows, перейдя в режим диалога.

Все эти операции происходят без участия программы кэширования дисковых операций (SMARTDRV. EXE - стандартная программа кэширования), поэтому происходит постоянное обращение к FAT за информацией о кластерах каждого файла. Значит, при проведении дефрагментации загрузочного раздела жесткого диска следует предусмотреть расположение перечисленных файлов как можно ближе к началу диска. Первым на диске должен быть файл подкачки WIN386.SWP, потом - директории (или каталоги, папки - кто как привык их называть), после них нужно располагать файлы, участвующие в загрузке. Конечно, стандартный Defrag этого не может, но есть много других хороших программ дефрагментации. Если вы еще не пользуетесь ими, подумайте, может быть, есть смысл установить Norton Utilities 2000, в составе которых имеется дефрагментатор Speed Disk.


Boot virus

Так называется разновидность вирусов, внедряющихся на одном из этапов начальной загрузки, обычно на самом первом. Boot-вирус записывает в MBR свой загрузчик вместо исходного. Тем самым вместо операционной системы первым загружается вирус. Он размещает в памяти свое тело, которое хранит в неиспользованных секторах, идущих после MBR, но до первого загрузочного сектора раздела. Перехватив обращения к дискам, вирус продолжает загрузку операционной системы. В случае обращения к дискете вирус изменит ее boot-сектор, заменив в нем программу-загрузчик. Если пользователь загрузится с такой дискеты, вирус получит управление и сразу же заразит MBR жесткого диска.

Если boot-вирус не умеет заражать файлы, обходясь только системными секторами, он не представляет большой опасности. Во-первых, заразиться можно только при загрузке с дискеты (или второго жесткого диска), во-вторых, можно просто включить "Virus Warning" в Setup - вы получите предупреждение о попытке вторжения в загрузочный сектор (вопреки распространенному мнению, эта опция должна выключаться только при инсталляции Windows), в-третьих, вылечить жесткий диск можно всего одной командой - "fdisk /mbr", которая записывает в MBR оригинальную программу-загрузчик.


Проблемы при загрузке

Нарушение процесса загрузки может произойти на любом из этапов. Чтобы определить причину и "виновника", нужно обратить внимание на появляющиеся сообщения:

  1. Если все сообщение - в верхнем регистре (т.е. заглавными буквами), то это BIOS не находит MBR на указанном ему в Setup устройстве, что свидетельствует об ошибке чтения либо об отсутствии признака системного сектора у первого сектора диска (т.е. диск не размечен). Чтобы убедиться, что с диском все нормально, нужно зайти в BIOS Setup и запустить Autodetect.
  2. Сообщения "Invalid partition table" и "Error loading operating system" принадлежат загрузчику из MBR; загрузочный сектор активного раздела либо не читается, либо его еще (или уже) нет.
  3. Сообщения "Invalid system disk" и "Disk I/O error" выдает загрузчик из boot-сектора, сообщая об отсутствии файлов операционной системы или об ошибке на диске.

Что делать в случаях, когда загрузка не происходит? Рассмотрим это по пунктам:

  1. Если проблема не связана с самим диском, нужно серьезно разбираться с тем, куда делись системные сектора. Обычным пользователям это не под силу.
  2. Во втором случае налицо либо нарушения таблицы DPT, либо разрушение загрузочного сектора. Лечить диск запуском NDD или Scandisk с дискеты я не рекомендую - можно все окончательно загубить и добавить работы тем, кто будет потом восстанавливать информацию на диске.
  3. В третьем случае системные файлы могли быть удалены или испорчены, можно попытаться исправить ситуацию загрузкой с дискеты и вводом команды "sys c:".


NDD, Scandisk, fdisk... Советы

Прежде всего, при возникновении серьезных проблем с системными секторами никогда не пользуйтесь программами диагностики NDD или Scandisk. Назначение таких программ - поиск "потерянных" кластеров и "отвязанных" длинных имен, все остальное им не под силу.

Для "ручной" работы с диском обычно используется Diskedit из комплекта Norton Utilities - не потому, что он самый продвинутый и удобный, а в силу привычки, так как Нортоновские утилиты существуют с незапамятных времен. Если вы не владеете глубокими знаниями о структуре и механизмах работы системных секторов и загрузчиков, вам лучше не пытаться экспериментировать с этой программой. Хотя иметь ее, безусловно, необходимо. Для чего - смотрите ниже.

А вот уметь пользоваться fdisk должен каждый. Как размечать ею диски - не тема этой статьи. Могу только дать одну подсказку. Если вы хотите выделить первый раздел диска исключительно под Windows, лучше задать ему размер 1-2 Гб и поставить туда FAT16 - быстрее будет грузиться, легче будет, в случае чего, восстанавливать. Известно, что fdisk по умолчанию устанавливает FAT32 на раздел больше 500 Мб. Чтобы "переубедить" его, выберите "N" в "начальной заставке" fdisk (там, где что-то говорится о поддержке больших разделов). Размечайте первый раздел (больше 2 Гб не получится), запускайте fdisk снова, выбрав уже "Y".

Еще один совет. После разметки и форматирования нового диска не поленитесь создать загрузочную дискету, на которую с помощью diskedit запишите MBR (Alt-A, Alt-W, выбрать имя файла), загрузочный сектор первого раздела (Alt-B, Alt-W, имя файла), diskedit, unerase, fdisk, sys, format, himem.sys, какой-нибудь русификатор (если DOS русифицирована). В случае сбоя такая дискета позволит сэкономить массу времени и нервов.

Теперь совет по восстановлению. Если вы умеете пользоваться diskedit'ом, вы можете восстановить "полетевший" жесткий диск и без автоматических программ-восстановителей типа Tiramisu. Как найти начало раздела - понятно, по сигнатуре 55АА, причем в последних версиях diskedit можно искать по определенному смещению (в данном случае это "510"). Бут-сектор (если не стандарта FAT32, который занимает три сектора) можно взять у дискеты и вручную подобрать параметры. Восстановить FAT тоже возможно. Для этого нужно найти корневой каталог (искать нужно строку "MSDOS" или "COMMAND COM"), каждому файлу изменить первую букву названия на русскую "х" (код E5), после чего запустить unerase. Чем меньше фрагментация, тем выше шансы вернуть файлы к жизни, поэтому проводить дефрагментацию важных данных нужно как можно чаще.

Макс КУРМАЗ,
max_kurmaz@mail.ru

Версия для печатиВерсия для печати

Номер: 

31 за 2000 год

Рубрика: 

Hardware
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!