Загрузка Sun Solaris

Полный цикл загрузки Solaris (версия Unix System V Release 4, поставляющаяся фирмой Sun) на компьютерах х86 происходит в шесть этапов. Первые три эта­па стандартны для всех ОС, работающих на IBM PC-совместимой технике. При включении компьютера запускается прошитый в ПЗУ BIOS. Он проводит тести­рование процессора и памяти и инициализацию машины. В процессе инициа­лизации BIOS устанавливает обработчик прерывания int 13h. Этот обработ­чик умеет считывать и записывать отдельные секторы жестких и гибких дисков и производить некоторые другие операции над дисковыми устройствами. Пер­вичные загрузчики ОС обычно пользуются этим сервисом. Некоторые ОС, на­пример MS/DR DOS, используют этот сервис не только при загрузке, но и при работе, и, благодаря этому, могут не иметь собственного модуля управления дисками.

Если загрузка происходит с жесткого диска, BIOS загружает в память и запус­кает нулевой сектор нулевой дорожки диска. Этот сектор обычно содержит не первичный загрузчик операционной системы, a MBR (Master Boot Record — главная загрузочная запись). Эта программа обеспечивает разбиение физиче­ского жесткого диска на несколько логических разделов (partition) и возмож­ность попеременной загрузки различных ОС, установленных в этих разделах .

MBR перехватывает прерывание int 13h и транслирует обращения к дисковой подсистеме так, что обращения к логиче­скому диску N преобразуются в обращения к N-ному разделу физического диска. Один из разделов диска должен быть помечен как активный или загрузочный. MBR загружает начальный сектор этого раздела — обычно это и есть первичный загруз­чик ОС. Многие реализации MBR, в том числе и поставляемая с Solaris, могут пре­доставлять пользователю выбор раздела, с которого следует начинать загрузку. Выбор обычно предоставляется в форме паузы, в течение которой пользователь может нажать какую-то клавишу или комбинацию клавиш. Если ничего не будет на­жато, начнется загрузка с текущего активного раздела.

Так или иначе, но загрузочный сектор — по совместительству, первичный за­грузчик Solaris оказывается в памяти и начинает исполняться. Исполнение его состоит в том, что он загружает — нет, еще не ядро, а специальную программу, называемую DCU (Device Configuration Utility, утилита конфигурации устройств). Основное назначение этой программы — имитация сервисов консольного мо­нитора компьютеров фирмы Sun на основе процессоров SPARC. DCU производит идентификацию установленного в машине оборудования. Пользователь может вмешаться в этот процесс и, например, указать системе, что такого-то устройства в конфигурации нет, даже если физически оно и при­сутствует, или установить драйверы для нового типа устройств. Драйверы, ис­пользуемые DCU, отличаются от драйверов, используемых самим Solaris, на­зываются они BEF (Boot Executable File), и начинают исполнение, как и сама DCU, в реальном режиме процессора х86. Найдя все необходимое оборудование, DCU запускает вторичный загрузчик Solaris. Логический диск, выделенный Solaris, имеет внутреннюю структуру и также разбит на несколько разделов. Чтобы не путать эти разделы разделами, создаваемыми MBR, их называют слайсами (slice). Загрузочный диск Solaris должен иметь минимум два байта— Root (корневая файловая система) и Boot, в котором и размещаются вторичный загрузчик и DCU. Вторичный загрузчик, пользуясь BEF-модулем загрузочного диска для доступа к этому диску, считывает таблицу слайсов и находит корневую файловую систе­му. В этой файловой системе он выбирает файл /kernel/unix, который и является ядром Solaris. В действительности, вторичный загрузчик исполняет командный файл, в котором могут присутствовать условные операторы, и, зависимости от тех или иных условий, в качестве ядра могут быть использованы различные файлы, /kernel/unix используется по умолчанию. Кроме того, пользователю предоставляется пауза (по умолчанию 5 секунд), в течение которой он может прервать загрузку по умолчанию и приказать загрузить какой-то другой файл, или тот же файл, но с другими параметрами. Будучи так или иначе загружено, ядро, пользуясь сервисами вторичного загрузчика, считывает файл /etc/system, в котором указаны параметры настройки сие темы. Затем, пользуясь информацией, предоставленной DCU, ядро формирует дерево устройств— список установленного в системе оборудования, и в соответствии с этим списком начинает подгружать модули, управляющие устройствами — драйверы. Подгрузка по-прежнему происходит посредством сервисов вторичного загрузчика — ведь все драйверы размещены на загрузочном диске и в корневой файловой системе, в том числе и драйверы самого этого диска 1 этой файловой системы.

Загрузив драйверы всех дисковых устройств и файловых систем (а при загруз­ке из сети — также сетевых контроллеров и сетевых протоколов), ядро начина­ет их инициализацию. С этого момента использовать сервисы вторичного за­грузчика становится невозможно, но они уже и не нужны. Проинициализировав собственный драйвер загрузочного диска и корневой файловой системы, ядро запускает программу init, которая подключает остальные диски и файловые системы, если они есть, указывает параметры сетевых устройств и инициали­зирует их, запускает обязательные сервисы, в общем, производит всю осталь­ную стартовую настройку системы.

Существуют ОС, которые не умеют самостоятельно выполнять весь цикл бутстрапа. Они используют более примитивную операционную систему, ко­торая исполняет их вторичный (или какой это уже будет по счету) загруз­чик, и помогает этому загрузчику поместить в память ядро ОС. На процес­сорах х86 в качестве стартовой системы часто используется MS/DR DOS, а загрузчик новой ОС оформляется в виде ЕХЕ-файла.

Таким образом устроены системы MS Windows 1.x—3.x, Windows 95/98/МЕ, DesqView и ряд других "многозадачников" для MS DOS. Таким же образом загружается сервер Nowell Netware, система Oberon для х86, программы, на­писанные для различных расширителей DOS (DOS extenders) и т. д. Многие из перечисленных систем, например Windows (версии младше 3.11 - в обя­зательном порядке, а 3.11 и 95/98/МЕ только в определенных конфигураци­ях) используют DOS и во время работы в качестве дисковой подсистемы. Тем не менее, эти программные пакеты умеют самостоятельно загружать Пользовательские программы и выполнять все перечисленные во введении Функции и должны, в соответствии с нашим определением, считаться пол­ноценными операционными системами.