Загрузчик ОС, этапы загрузки ОС. Master Boot Record (MBR). Загрузка ОС.


Инициализация компьютера является процессом, а не событием. За время, проходящее с момента включения питания до появления на мониторе приглашения командной строки или графического интерфейса ОС, выполняется вполне определенная последовательность операций по проверке системы и подготовке ее к работе. Для того чтобы более четко представлять себе взаимодействие программного обеспечения и аппаратных средств, вы должны хорошо понимать, что происходит на каждом из этапов инициализации компьютера. Знание деталей этого процесса поможет вам в поиске и локализации неисправностей, возникающих в системе во время ее загрузки. В этом разделе последовательно описываются все стадии инициализации типичного компьютера.

Инициализация компьютера начинается после его включения. Если блок питания вырабатывает все необходимые напряжения, то в нем формируется сигнал высокого уровня PowerGood (Питание в норме). Смомента включения питания до появления этого сигнала проходит от 100 до 500 мс. Он поступает на микросхему формирования синхросигналов (таймер) системной платы, которая в результате прекращает выработку сигнала сброса для процессора. С этого момента начинается работа процессора.

Термин boot (загрузка) происходит от слова bootstrap (ремешок на заднике ботинка, помогающий надеть его на ногу. — Прим. ред.) и возник по ассоциации с методом, посредством которого персональный компьютер приводится в рабочее состояние. Как вы натягиваете большой ботинок, держась за маленький ремешок, так и персональный компьютер загружает сначала небольшую программу, которая затем «втаскивает» за собой операционную систему. Первой операцией, которую выполняет процессор, является выборка команды из ячейки памяти с адресом FFFF:OOO0h. Поскольку указанная ячейка отстоит всего на 16 шагов от конца отведенного для ПЗУ адресного пространства, в ней содержится инструкция перехода (JMP) на реальный начальный адрес системной BIOS. Стандартизация адреса первой исполняемой процессором инструкции необходима потому, что ПЗУ BIOS уникальны для каждого типа системной платы, и коды микропрограмм могут располагаться по самым разным адресам.

Проверка ядра системы — это составная часть процедуры POST, которая, в свою очередь, является важнейшей операцией, выполняемой BIOS на этапе инициализации компьютера. Нетрудно понять, что если позволить системе начать работать при наличии неисправностей на системной плате, в модулях памяти или дисковой подсистеме, то это может привести к катастрофическим последствиям для данных, как загруженных в память, так и хранящихся на дисках. Проверка целостности системы производится с помощью серии специализированных подпрограмм самотестирования основных компонентов системной платы. Кроме того, на этом этапе производится поиск и идентификация других специализированных BIOS (контроллера накопителей, видеосистемы, контроллера SCSI и т.д.).

BIOS начинает работу с проверки устройств, смонтированных на системной плате: процессора и сопроцессора, микросхемы формирования синхросигналов (таймера), контроллера прямого доступа к памяти (DMA — Direct Memory Access) и контроллера прерываний (IRQ — Interrupt ReQuesi). Если неисправность обнаруживается на этой ранней стадии выполнения проверок, то генерируется определенная последовательность звуковых сиг налов (звуковой код ошибки). Звуковая сигнализация используется по той причине, что видеосистема на этом этапе еще не инициализирована. Зная фирму-разработчика BIOS, вы можете по звуковому коду определить характер обнаруженной неисправности. Подробные сведения о звуковых и иных диагностических кодах приведены в Книге 2.

На следующем этапе BIOS производит поиск ПЗУ видеосистемы в диапазоне адресов от C000:0000h до C780:0000h. Практически во всех системах этот поиск заканчивается обнаружением BIOS, записанной в смонтированной на плате видеоадаптера микросхеме ПЗУ (речь идет об отдельном адаптере, установленном в слот расширения). После обнаружения ПЗУ BIOS видеоадаптера выполняется тестирование его содержимого (проверка контрольных сумм). Если тест завершается успешно, то управление передается BIOS видеосистемы, которая инициализирует видеоадаптер. После завершения его инициализации на экране монитора появляется курсор, а управление возвращается системной BIOS. Если BIOS отдельного видеоадаптера не обнаруживается, то системная BIOS выполняет процедуру инициализации видеоконтроллера, смонтированного на системной плате, что также приводит к появлению курсора на экране монитора. После инициализации видеосистемы на экране монитора, как правило, появляется текст, в котором содержится информация о фирме-разработчике системной BIOS и BIOS видеосистемы, а также номера их версий. Если проверка контрольных сумм завершается неудачно, то на дисплей выводится сообщение об ошибке наподобие «С000 ROM Error» (Ошибка в ПЗУ по адресу С000) или «Video ROM Error» (Ошибка в ПЗУ видеосистемы). В такой ситуации процесс инициализации, как правило, прекращается.

Если видеосистема готова к работе, то системная BIOS сканирует память в диапазоне адресов от C800:0000h до DF80:0000h (с шагом 2 Кбайт) в поисках ПЗУ, которые могут быть установлены на других платах адаптеров. При обнаружении таких микросхем прриз-водится проверка их контрольных сумм, и исполняются записанные в них программные инструкции. При этом на экран монитора выводится информация о фирме-разработчике BIOS адаптера и номер ее версии. В некоторых случаях записанные в дополнительных (установленных на платах адаптеров) ПЗУ программные инструкции могут подменять собой процедуры системой BIOS. Например, BIOS, встроенная в плату контроллера UltraDMA/133, заменяет собой процедуры управления накопителями, входящие в системную BIOS. Если проверка контрольных сумм какого-либо ПЗУ завершается неудачно, то на дисплей выводится сообщение об ошибке наподобие «ХХХХ ROM Error» (Ошибка в ПЗУ по адресу ХХХХ), где ХХХХ — сегментный адрес, по которому обнаружено неисправное ПЗУ. При обнаружении неисправного ПЗУ процесс инициализации системы, как правило, прекращается.

После проверки ядра системы BIOS проверяет значение слова в ячейке памяти 0000:0472, чтобы выяснить, является ли данный запуск системы «горячим» (после нажатия на кнопку сброса или на клавиши CTRL+ALT+DEL) или «холодным» (после включения питания). Если значение слова, записанного в этой ячейке, равно 1234h, то это является признаком «горячего» запуска, при котором в процедуре POST пропускается операция тестирования системной памяти. Любое другое значение указанного слова свидетельствует о «холодном» запуске, и процедура POST в этом случае выполняется в полном объеме.

При выполнении полной процедуры POST проверяется функционирование системной платы, памяти, клавиатуры, видеосистемы, накопителей на гибких и жестких дисках, сопроцессора, последовательного и параллельных портов и других подсистем. В обшей сложности количество тестов достигает нескольких десятков. При обнаружении неисправности в порт ввода/вывода с адресом 80h посылается однобайтный код ошибки, который может быть считан и зафиксирован специальной диагностической платой (адапте ром), установленной в один из слотов расширения. Если видеосистема уже запушена, то сообщение об ошибке может появиться на экране монитора (после чего дальнейшая инициализация системы прекращается). Следует иметь в виду, что коды ошибок процедуры POST и их расшифровки могут быть различными для BIOS разных фирм-разработчиков. Подробнее об этих кодах рассказано в гл. «Коды ошибок» (входит во вторую книгу). Если процедура POST завершается успешно, то из встроенной в системный блок динамической головки раздается короткий одиночный звуковой сигнал.

После завершения процедуры 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* (Не удается произвести загрузку с диска).

Если при считывании загрузочного сектора дискеты и проверке его содержимого проблем не возникло, то сначала загружается первый файл из каталога (IO.SYS), а затем настает очередь файла MSDOS.SYS. Если операционную систему не удастся загрузить с дискеты, то BIOS предпринимает попытку сделать это с первого стационарного накопителя (жесткого диска). Загрузить ОС с жесткого диска несколько сложнее, чем с гибкого. В первую очередь BIOS разыскивает главный загрузочный сектор (MBS— Master Boot Sector, другое название MBR— Master Boot Record) на первом жестком диске (цилиндр 0, головка 0, сектор 1 — начальный сектор диска). Если MBS найден, тоего содержимое загружается в область памяти с начальным адресом 0000:7СОО и подвергается проверке на предмет наличия специального ключевого кода — сигнатуры. Этот код есть ни что иное, как два последних байта 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 активного раздела считывается успешно, то его содержимое проверяется на наличие сигнатуры. Если последние два байта сектора не равны контрольному значению SSh и 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* (Не удается произвести загрузку с диска).

Если с загрузочным сектором тома DOS проблем не возникает, то загружается на исполнение файл IO.SYS (или IBMBI0.COM). Аналогом IO.SYS может быть файл WINBOOT.SYS, который и будет запущен на исполнение. В файл IO.SYS входят программы низкого уровня, взаимодействующие с BIOS и дополняющие ее: драйверы клавиатуры, принтера и т.п. Кроме того, частью файла IO.SYS является программный код инициализации, который исполняется только при запуске системы. Эта программа копирует саму себя в максимально удаленную область не фрагментированной основной памяти DOS и передает управление этой копии. На следующем этапе выполняется загрузка файла MSDOS.SYS (или IBMD0S.COM), причем осуществляется она таким образом, что код MSDOS.SYS замещает в памяти ту часть файла IO.SYS, в которой содержится код инициализации (поскольку в этой области памяти он больше не нужен). После загрузки файла MSDOS.SYS (ядра MS-DOS) исполняется его программный код, в результате чего происходит запуск драйверов основных устройств, определяется состояние аппаратной части, происходит сброс дисковой подсистемы, сброс и инициализация внешних коммуникационных устройств (параллельного и последовательных портов) и устанавливаются принятые по умолчанию значения параметров системы. В итоге все основные компоненты MS-DOS оказываются загруженными в память, и управление возвращается программе инициализации файла IO.SYS (WINBOOT.SYS).

В Windows 2000/ХР загрузчиком операционной системы является файл NTLDR.

Если на диске присутствует файл CONFIG.SYS, то программа инициализации, входящая в состав файла IO.SYS или WINBOOT.SYS, просматривает его несколько раз. В процессе первого просмотра выполняются операторы DEVICE (в том порядке, в котором они записаны) и загружаются указанные в них драйверы. В процессе второго просмотра выполняются операторы INSTALL (в том порядке, в котором они записаны) и загружаются и выполняются указанные в них программы. В процессе третьего просмотра исполняется оператор SHELL, в результате чего загружается указанный в нем командный процессор с заданными параметрами. Если оператор SHELL не включен в файл CONFIG.SYS, то в этом случае загружается процессор COMMAND.COM (т.е. первый встреченный в корневом каталоге загрузочного диска файл с указанным именем) с параметрами, принятыми по умолчанию. При загрузке командного процессора программа инициализации стирается из памяти (поскольку ее миссия на этом заканчивается). В Windows 95/98 программа C0MMAND.COM загружается лишь тогда, когда на диске существует файл AUTOEXEC.BAT, поскольку только в этом случае могут быть выполнены записанные в нем команды. В процессе последнего просмотра исполняются в заранее определенном порядке все остальные операторы. Поэтому порядок появления в файле CONFIG.SYS прочих операторов, кроме DEVICE, INSTALL и SHELL, не имеет значения. Кроме того, программа инициализации, входящая в состав файла WINBOOT.SYS, разыскивает и просматривает файл реестра SYSTEM.DAT.

Если на диске присутствует файл AUTOEXEC.BAT, то командный процессор СОМ-MAND.COM запускает его на исполнение. После выполнения команд, включенных в файл AUTOEXEC.BAT, появляется приглашение командной строки DOS (если только при исполнении AUTOEXEC.BAT не будет вызвано какое-нибудь приложение или программа-оболочка — в этом случае пользователь может приступить к работе, вообще не увидев командной строки DOS). Если файл AUTOEXEC.BAT отсутствует, то процессор C0MMAND.COM выполняет встроенные команды DATE и TIME, выводит сообщение об авторских правах и появляется приглашение командной строки DOS, из которой вы можете запустить прикладную программу или ввести какую-либо команду. Запустить приложение или программную оболочку (например, Windows 3.x) можно и из файла AUTOEXEC.BAT. В Windows 95/98 при выполнении программы инициализации, входя-шей в состав файла IO.SYS или WINBOOT.SYS, автоматически загружаются драйверы HIMEM.SYS, IFSHLP.SYS и файл SETVER.EXE. Последним запускается на исполнение файл WIN.COM, и начинается сеанс работы Windows.

 



Дата добавления: 2021-01-11; просмотров: 572;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.015 сек.