- •Глава 10
- •В.Г.Олифер, н.А.Олифер. Сетевые операционные системы. Учебное пособие.-сПб.:бхв-Петербург, 2006.-536с.
- •В.А.Шеховцов. Операційні системи. Підручник .-к.:Виканавча група внv. 2005. 576с.
- •Столлингс в. Операционные системы. М.: Вильямс, 2001. -672с.
- •Раздел 10
- •10.1. Общие принципы загрузки ос
- •10.1.1. Аппаратная инициализация компьютера
- •9.1.2. Загрузчик ос
- •9.1.3. Двоетапне загрузки
- •10.1.4. Загрузка и инициализация ядра
- •10.1.5. Загрузка компонентов системы
- •10.2. Загрузка Linux
- •10.2.1. Особенности загрузчика Linux
- •10.2.2. Инициализация ядра
- •10.3. Загрузка Windows хр
9.1.2. Загрузчик ос
Загрузчиком ОС (boot loader) называют программу, вызванную кодом ВIOS во время выполнения процедуры начальной загрузки для создания образа ядра операционной системы в оперативной памяти. Рассмотрим основные принципы работы самого простого загрузчика в архитектуре РС.
Как отмечалось, ВIOS начинает выполнять код, который сохраняется в МВR. Обычно МВR содержит таблицу разделов и небольшую программу, которая загружает первый (загрузочный) сектор одного из разделов в память и начинает выполнять код, который находится в нем, — обычно этот код называют кодом загрузчика ОС. Выбор раздела, из которого нужно загрузить сектор, преимущественно осуществляют с помощью флажка активного раздела, заданного для ячейки таблицы разделов. Таким способом можно загрузить только ту ОС, ядро которой находится на активном разделе, другие подходы рассмотрим позже.
Загрузчика ОС обычно записывают в загрузочный сектор во время инсталляции системы, тогда же задается и код для МВR. Код самого простого загрузчика сводится к поиску на диске ядра ОС (обычно это файл, который находится в фиксированном месте корневого каталога) и загрузки его в память.
9.1.3. Двоетапне загрузки
Использование загрузочного сектора для непосредственной загрузки ядра ОС имеет свои особенности:
-
код загрузчика вынужденно является очень простым, потому в нем не возможно выполнять более сложные действия (например, руководить загрузкой нескольких ОС), большинство других недостатков являются последствиями этого;
-
не возможно передавать параметры в загрузчика;
-
процесс ограничен описанной схемой переключения из МВR на загрузочный сектор, нет возможности руководить этим процессом;
-
нет возможности загружать ядро из другого раздела диска или из подкаталога;
-
ОС всегда будет запущена в реальном режиме процессора.
Для того, чтобы решить эти проблемы, код загрузчика ОС должен быть усложнен. Естественно, что усложненный код не поместится в один сектор, потому предложен подход, который получил название схемы двухэтапной загрузки.
В этом случае загрузчика разбивают на две части: загрузчик первого и второго этапов. Первый, как и раньше, хранят в загрузочном секторе диска (отметим, что во время использования этой технологии он может также сохраняться и в МВR.), но теперь основным его заданием является поиск на диске и загрузка в память не ядра, а загрузчика второго этапа.
Загрузчик второго этапа — это полномасштабное применение, которое получает контроль над компьютером после выполнения начальной загрузки (оно может быть выполнено в реальном режиме процессора, а может переключаться в привилегированный режим). В сущности, такой загрузчик является мини-ОС специализированного назначения.
Рассмотрим некоторые возможности двухэтапного загрузчика.
-
В нем можно руководить загрузкам нескольких операционных систем. Особенно удобно это делать в загрузчиках, которые принимают управление от МВR: при этом загрузчик берет на себя поиск активного раздела и загрузку системы из него. Конфигурацию такого загрузчика можно динамически изменять во время изменения разделов диска. Загрузчик может содержать код доступа к разным файловым системам, код загрузки разных ядер и тому подобное.
-
Может предоставлять интерфейс пользователя, который обычно сводится к отображению меню выбора загружаемой операционной системы. Возможна также передача введенных пользователем параметров в ядро перед его загрузкой.
-
Его конфигурация может быть задана пользователем из загруженной ОС. Для этого, например, можно задать текстовый конфигурационный файл, сохранить его на диске и запустить специальную утилиту, которая сделает синтаксический разбор файла, превратит его во внутреннее отображение и сохранит на диске в фиксированном месте, известному загрузчику.
-
Не ограничен одним разделом и одним диском загрузчик может работать со всеми дисками компьютера, загружать ядра, которые находятся в разных местах на диске (в частности внутри иерархии каталогов). Двоетапни загрузчики чрезвычайно распространены, их могут поставлять вместе с ОС (например, lilo или GRUB для Linux, загрузчик Windows ХР), а также они могут быть реализованы как отдельные продукты — менеджеры загрузки (boot managers).
