Поиск операционной системы

 Рубрика: Операционные системы и процесс начальной загрузки

После завершения процедуры POST компьютер готов к загрузке операционной системы. Вначале BIOS пытается найти загрузочный сектор тома (VBS — Volume Boot Sector) на дискете А:. Если дискета не вставлена в дисковод, то BIOS обратится к следующему накопителю, перечисленному в загрузочном списке (он указывается при настройке параметров BIOS, обычно это накопитель С:). Если же в дисководе А: дискета будет обнаружена, то BIOS загрузит содержимое ее VBS (головка 0, цилиндр 0, сектор 1 — начальный сектор диска) в память по адресу 0000:7C00h и проверит выполнение следующих условий.
■ Если значение первого байта VBS на дискете А: меньше, чем 06h, или оно больше или равно 06h, но при этом первые девять слов одинаковы, то появляется сообщение об ошибке наподобие «602 — Diskette Boot Record Error» (Ошибка в загрузочной записи дискеты). ■ Если системные файлы IO.SYS и MSDOS.SYS не являются первыми в корневом каталоге, или возникают проблемы с их загрузкой, то вы увидите следующее сообщение: «Non-System disk or disk error» (Несистемный диск или ошибка на диске). ■ Если дискета была подготовлена программами FORMAT или SYS, входящими в DOS 3.3 или более раннюю версию, a VBS поврежден, то вы увидите сообщение: «Disk Boot failure» (He удается произвести загрузку с диска). Если при считывании загрузочного сектора дискеты и проверке его содержимого проблем не возникло, то сначала загружается первый файл из каталога (IO.SYS), а затем настает очередь файла MSDOS.SYS. Если операционную систему не удастся загрузить с дискеты, то BIOS предпринимает попытку сделать это с первого стационарного накопителя (жесткого диска). Загрузить ОС с жесткого диска несколько сложнее, чем с гибкого. В первую очередь BIOS разыскивает главный загрузочный сектор (MBS— Master Boot Sector, другое название MBR — Master Boot Record) на первом жестком диске (цилиндр 0, головка 0, сектор 1 — начальный сектор диска). Если MBS найден, то его содержимое загружается в область памяти с начальным адресом 0000:7С00 и подвергается проверке на предмет наличия специального ключевого кода — сигнатуры. Этот код есть ни что иное, как два последних байта MBS; если они не равны соответственно 55h и AAh; то выводится сообщение об ошибке вида «No boot device available» (Загрузочноеустройство недоступно), и инициализация системы прекращается. Сообщение об ошибке, в зависимости от фирмы-разработчика BIOS, может быть и иным, а в некоторых старых системах предпринимается попытка запустить встроенный интерпретатор BASIC (в первых персональных компьютерах интерпретатор языка Бейсик хранился в ПЗУ системной BIOS, что давало возможность пользователям работать с компьютером даже в отсутствие операционной системы. — Прим. ред.). Если интерпретатор в ПЗУ системной BIOS отсутствует (практически наверняка это именно так, поскольку от него отказались лет 15 назад), то появляется сообщение об ошибке наподобие «SYSTEM HALTED» (Система остановлена).
Если проверка сигнатуры MBS жесткого диска завершается успешно, то записанная в нем микропрограмма разыскивает в таблице разбиения MBS запись с системными индикаторными байтами, указывающими на наличие расширенного раздела. Если программа находит такую запись, то она считывает содержимое загрузочного сектора расширенного раздела (содержимое этого сектора называется расширенной загрузочной записью или EBR — Extended Boot Record), найдя его в указанном месте диска. Частью EBR также является таблица, в которой может содержаться указание на следующий расширенный раздел. Если такая запись найдена, то с указанного места на диске считывается еще одна EBR. Поиск продолжается до тех пор, пока не будут исчерпаны все указания на наличие расширенных разделов или их количество не достигнет максимального — 24. Кроме того, предпринимается попытка найти в таблице разбиения MBS индикаторные байты загрузки, которыми помечается активный раздел. Если значение какого-либо индикаторного байта загрузки в таблице разбиения MBS задано некорректно, или если в качестве активных указано несколько разделов, то работа системы прекращается, и на дисплее появляется следующее сообщение наподобие «Invalid partition table» (Неверная таблица разбиения). В старых системах в подобной ситуации предпринимается попытка вызвать встроенный интерпретатор BASIC — с соответствующими последствиями.
Если в MBS обнаруживается запись об активном разделе, то загружается и проверяется содержимое его VBS. Если VBS активного раздела не может быть прочитан за пять попыток (из-за ошибок считывания), то работа системы прекращается и появляется сообщение наподобие «Error loading operating system» {Ошибка при загрузке операционной системы).
Если VBS активного раздела считывается успешно, то его содержимое проверяется на наличие сигнатуры. Если последние два байта сектора не равны контрольному значению 55h и AAh, то работа системы прекращается и появляется сообщение «Missing operating system» {Операционная система отсутствует).
Если проверка сигнатуры VBS активного раздела завершается успешно, то запускается на исполнение записанная в нем микропрограмма. Она проверяет корневой каталог тома и выясняет, доступны ли два файла ядра операционной системы — IO.SYS и MSDOS.SYS (или IBMBIO.COM и IBMD0S.COM для PC DOS). В старых MS-DOS версиях файлы IO.SYS и MSDOS.SYS должны быть перечислены в каталоге первыми. Если загрузочный сектор тома был создан под управлением MS-DOS 3.3 или более ранней версии и два упомянутых файла не указаны первыми (или возникла ошибка при их загрузке), то выводится сообщение «Non-System disk or disk error» (Несистемный диск или ошибка на диске). При повреждении VBS выводится сообщение наподобие «Disk Boot failure» (Heудается произвести загрузку с диска).