Опубликован: 15.10.2008 | Уровень: специалист | Доступ: платный
Лекция 5:

Загрузка

< Лекция 4 || Лекция 5: 123456 || Лекция 6 >

Загрузка операционной системы

Во время установки программа установки Windows Server 2003 поместила данные в первый сектор первичного (primary) раздела вашего компьютера (загрузочный сектор). Эти данные содержатся в главной загрузочной записи (MBR), и она содержит исполняемые инструкции на компьютере x86. Кроме исполняемых инструкций MBR содержит также таблицу, в которой имеется до четырех записей, определяющих местоположение первичных разделов на диске. Программа установки также копирует в корневую папку загрузочного диска два файла, которые инициируют последовательность загрузки Windows Server 2003 (Ntldr и Ntdetect.com), а также помещает в эту папку файл Boot.ini, содержащий опции загрузки. (См. ниже раздел "О файле Boot.ini".)

MBR содержит таблицу разделов, в которой может быть не более четырех записей, поскольку на одном жестком диске можно создать не более четырех первичных разделов. Но вы можете использовать большее число логических дисков за счет использования дополнительных (extended) разделов. Дополнительные разделы допускают вложенность, поэтому теоретически вы можете иметь на компьютере неограниченное число логических дисков.

Каждый раздел имеет свою таблицу раздела, содержащую следующие поля.

  • Флаг загрузки (логическое значение "загрузочный/не загрузочный раздел").
  • Начальная сторона.
  • Начальный цилиндр.
  • Начальный сектор.
  • Указатель системы (указывает тип файловой системы).
  • Конечная сторона.
  • Конечный цилиндр.
  • Конечный сектор.
  • Относительные секторы.
  • Количество секторов.
Примечание. Если загрузочный сектор, который будет использоваться для Windows Server 2003, был ранее отформатирован для DOS (сюда же относятся системы Windows 9x), то программа установки копирует содержимое этого загрузочного сектора в файл bootsect.dos и помещает его в корневую папку загрузочного диска. Это позволяет осуществлять двойственную загрузку с Windows 9x.

Исполняемый код MBR

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

Файлы загрузки Windows Server 2003 находятся в системном разделе, а файлы операционной системы находятся в загрузочном разделе:

  • Системный раздел содержит связанные с оборудованием файлы, которые требуются для загрузки Windows Server 2003, включая MBR. На машинах x86 это должен быть первичный раздел, который помечен как активный. Это всегда диск 0, поскольку именно к этому диску обращается BIOS для переключения процесса загрузки на MBR.
  • Загрузочный раздел содержит файлы операционной системы, то есть папку %SystemRoot%. Файлы поддержки %SystemRoot%\System тоже должны находиться в загрузочном разделе.
Примечание. Обычно системный раздел и загрузочный раздел совпадают, хотя это не является обязательным требованием.

Исполняемые файлы загрузки Windows Server 2003

Код загрузочного сектора считывает Ntldr в память для запуска процесса загрузки операционной системы. Ntldr содержит доступный только по чтению код NTFS и FAT. Он начинает работать в реальном режиме, и его первой задачей является переключение компьютера в определенную форму защищенного режима. Этот первый вариант защищенного режима не может выполнять преобразования из физического в виртуальное состояние, поскольку это средство становится доступно по окончании загрузки операционной системы.

Вся физическая память доступна операционной системе, и компьютер действует как 32-битная машина. Ntldr активизирует страничный обмен и создает таблицы страниц. Затем Ntldr считывает файл Boot.ini из корневой папки, и, если требуется, выводит на монитор меню выбора загружаемой операционной системы. Если Ntldr отсутствует или повреждена, вы увидите следующее сообщение об ошибке:

Ntldr is missing (Ntldr отсутствует)
Press CTL+ALT+DEL to restart (Нажмите CTL+ALT+DEL для перезагрузки)

Как раз это делать не нужно; вы снова запустите тот же цикл, и в конце появится то же сообщение. Вы должны заменить Ntldr. Загрузитесь с загрузочной дискеты (см. ниже раздел "Создание загрузочной дискеты").

  • Если нет Ntldr, скопируете ее с этой дискеты в корневую папку загрузочного диска (обычно это C:).
  • Если Ntldr есть на жестком диске, то, видимо, она запорчена. Для ее замены вы должны сначала изменить атрибут "read-only".

Если у вас нет загрузочной дискеты, вы должны запустить программу установки Windows Server 2003 (Setup) с компакт-диска и затем выбрать вариант Repair. Информацию по восстановлению отказавшей операционной системы см. в лекции 17 курса "Внедрение, управление и поддержка сетевой инфраструктуры MS Windows Server 2003".

Меню выбора загружаемой операционной системы

Если на компьютере активизирована двойственная загрузка, то появляется меню, содержащее список доступных для загрузки операционных систем. Если пользователь не выбрал конкретную операционную систему до истечения заданного промежутка времени, то запускается операционная система по умолчанию (обычно это Windows Server 2003).

Совет. Как только вы нажали клавишу со стрелкой, перемещающую вас среди вариантов выбора, отсчет времени прекращается, что позволяет вам не торопясь выбрать нужный вариант.

Запуск Ntdetect

Ntldr запускает Ntdetect.com. Ntdetect запрашивает в BIOS информацию об устройствах и конфигурации. Информация, которую собирает Ntdetect, передается в реестр и помещается в подразделы внутри HKEY_LOCAL_MACHINE\Hardware\Description.

В случае проблемы Ntdetect (файл отсутствует или поврежден), возможно, не появится никакого сообщения об ошибке. Просто может остановиться процесс загрузки. В таких случаях нужно заменить Ntdetect.com. Используйте для загрузки своего компьютера загрузочную дискету и скопируйте Ntdetect с этой дискеты в корневую папку своего жесткого диска.

Запуск Ntoskrnl и загрузка HAL

После того как Ntdetect завершает процедуры проверки оборудования, управление процессом загрузки операционной системы снова передается Ntldr, которая запускает Ntoskrnl.exe и загружает HAL.dll (оба файла находятся в папке %SystemRoot%\System32 ).

Ntoskrnl.exe содержит подсистему ядра и исполнительные подсистемы. Это основной файл для компонента режима ядра Windows Server 2003. Он содержит Executive, Kernel, Cache Manager, Memory Manager, Scheduler, Security Reference Monitor и т.д. Ntoskrnl.exe – это как раз тот файл, который реально запускает Windows Server 2003.

Чтобы оборудование могло взаимодействовать с операционной системой, Ntoskrnl.exe требуется HAL.dll, где содержится код, позволяющий осуществлять это взаимодействие (HALHardware Abstraction Layer – Уровень абстрагирования оборудования).

Иногда может возникать сообщение об ошибке, указывающее проблему Ntoskrnl.exe, но чаще всего это "ложная" ошибка, вызываемая тем, что папка, которая указана в Boot.ini, не совпадает с именем папки, в которую были установлены системные файлы Windows Server 2003. Это обычно означает, что кто-то переименовал папку %SystemRoot% или создал новую папку и переместил в нее файлы Windows Server 2003. Переместите файлы назад в папку, указанную в Boot.ini. (Правда, это может также означать, что кто-то редактировал файл Boot.ini, и тогда вам нужно внести исправления в этот файл.)

Загрузка драйверов и служб

Затем Ntldr загружает низкоуровневые системные службы и драйверы устройств, но службы не инициализируются – это происходит позже. Это конец последовательности автозагрузки (boot sequence), после чего начинается последовательность загрузки (load sequence), или фаза ядра. Ntldr имеет определенный порядок загрузки системных служб и драйверов устройств. При установке Windows Server 2003 на ваш компьютер копируются не только те драйверы, которые соответствуют вашему оборудованию. Каждый драйвер, известный любому программисту Microsoft, имеет свою запись в реестре. Откройте реестр и перейдите в HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services. Вы увидите очень большой список служб и драйверов устройств. Выберите любой подраздел и посмотрите элемент данных типа REG_DWORD с именем Start. Эта запись имеет шестнадцатеричное значение и заканчивается числом в круглых скобках. Именно это число задает для Ntldr порядок загрузки.

  • Значение (0) указывает, что данная служба загружается на этапе загрузки ядра.
  • Значение (1) указывает, что данная служба загружается на этапе инициализации ядра (следующая фаза).
  • Значение (2) указывает, что данная служба загружается на этапе загрузки служб.
  • Значение (3) указывает, что данная служба активизируется (enable), но не инициализируется (для нее требуется ручной запуск, который вы осуществляете в оснастке Services).
  • Значение (4) указывает, что данная служба не активизируется.

Загрузка операционной системы

Ntoskrnl.exe начинает загружать операционную систему. Инициализируется ядро Windows Server 2003, загружаются и инициализируются подсистемы, обеспечивая работу базовых систем, которые требуются для выполнения задачи загрузки операционной системы. Инициализируются драйверы, загруженные ранее с помощью Ntldr, после чего следует инициализация остальных драйверов и служб.

При инициализации драйверов первого уровня вы можете столкнуться с проблемой – обычно в форме STOP или "синего" экрана. Это почти всегда происходит во время первой автозагрузки после того, как вы обновили какой-либо драйвер. Ntoskrnl инициализирует этот драйвер, и операционная система останавливается.

Используйте меню Advanced Options, чтобы использовать вариант Last Known Good Configuration (Загрузка последней удачной конфигурации), см. ниже раздел "Меню Advanced Options (Меню дополнительных вариантов загрузки)". Затем используйте более подходящий драйвер от изготовителя или вернитесь к предыдущему драйверу.

Если нет ошибки драйвера, то начинают действовать ядро и исполнительные системы Windows Server 2003. Подсистема Session Manager Subsystem (Smss.exe) создает среду пользователя. Выполняется проверка реестра, и загружаются остальные драйверы и программы, которые требуется загрузить. Ядро загружает Kernel32.dll, Gdi32.dll и User32.dll, которые обеспечивают службы Win32 API, требующиеся клиентским программам.

< Лекция 4 || Лекция 5: 123456 || Лекция 6 >
Алихан Ергалиев
Алихан Ергалиев
Россия
Иван Иванов
Иван Иванов
Украина, Черкаси