УДК 004.451.84

О ЗАГРУЗЧИКАХ ОС И ИХ СТРУКТУРЕ НА ПРИМЕРЕ WINDOWS И UNIX ОБРАЗОВ

Клопов Николай Викторович
Брянский Государственный Университет имени академика И.Г. Петровского
магистрант

Аннотация
В данной статье описан поэтапный процесс загрузки операционных систем, таких как Windows и Unix посредством встроенных в них стандартных загрузчиков NTLDR и LILO.

Ключевые слова: загрузчики операционных систем


ABOUT THE OS LOADERS AND THE STRUCTURE OF THE EXAMPLE OF WINDOWS AND UNIX IMAGES

Klopov Nikolay Viktorovich
Bryansk State University named after academician I.G. Petrovsky
undergraduate

Abstract
This article describes the gradual process of booting operating systems such as Windows and Unix with built-in them a standard boot NTLDR and LILO.

Keywords: LILO, loaders operating systems, NTLDR, Unix, Windows


Рубрика: 05.00.00 ТЕХНИЧЕСКИЕ НАУКИ

Библиографическая ссылка на статью:
Клопов Н.В. О загрузчиках ОС и их структуре на примере Windows и Unix образов // Современные научные исследования и инновации. 2016. № 11 [Электронный ресурс]. URL: http://web.snauka.ru/issues/2016/11/74286 (дата обращения: 03.10.2017).

Загрузчик операционной системы  представляет собой программное средство, которое относится к системному программному обеспечению. При помощи него происходит загрузка операционной системы непосредственно после включения компьютера.

В деятельности системного администратора или обычного рядового пользователя  ПК нередко возникает ситуация, когда необходимо обеспечить возможность поочередной загрузки двух или более операционных систем на одной рабочей машине. Как правило, в большинстве случаев данная проблема может быть решена стандартным BOOT меню из главной загрузочной записи, иначе называемой MBR. Но возможности данного варианта имеют комплекс ограничений, особенно если поставлена задача загрузки операционных систем разных классов, например, Unix и Windows.

Для операционных систем семейства Unix, как правило, применяются загрузчики LILO или GRUB. Любая загрузка операционной системы затрагивает оперативную память, с которой работает как первичный загрузчик, так и вторичный. При загрузке ОС могут происходить какие-либо ошибки, которые загрузчик или игнорирует, или вовсе завершает процесс загрузки.

Рассмотрим процесс загрузки ОС Microsoft на примере MS-DOS и MS Windows [1]. При включении ПК в самую первую очередь запускается программа POST (Power On Sеlf Test). Ее основными функциями служит определение количества доступной памяти и проверка на работоспособность, поиск другого подключенного к данной машине оборудования (жесткий диск, принтер и др.), инициализация карт адаптеров. В это время на экране компьютера отображаются основные сведения о количестве памяти и ее работоспособности.

Как только данная утилита завершает тестирование, вызывается INT 19h прерывание BIOS, при помощи которого производится поиск загрузочного устройства строго в том порядке, который установлен в Setup BIOS путем проверки нулевых секторов соответствующих устройств.

Диск называется загрузочным, в случае если в нулевом секторе находится Master Boot Record. Последние 2 байта MBR ‒ это некое “волшебное число”, подтверждающее тот факт, что данный сектор и есть MBR. Соответственно, найденный диск называется загрузочным. Помимо “волшебного числа” в MBR содержится специальная таблица разделов диска и первичный загрузчик, размер которого 446(0*1ВЕ) байт. В приведенной ниже таблице 1 показана схема таблицы MBR.

Таблица 1. Схема таблицы MBR

Адрес Состав
0*000 Код первичного загрузчика
0*1ВЕ Таблица разбиения диска
0*1FE “Волшебное число” (0*АА55)

19h прерывание BIOS перемещает первичный загрузчик в оперативную память компьютера и передает ей дальнейшее управление. Но в силу своего маленького размера и ограниченного функционала, первичный загрузчик не может выгрузить операционную систему. Поэтому его основная задача – загрузка более мощной программы, именуемой вторичный загрузчик [2].

Для этого производится поиск в таблице разделов активного и считывается в память вторичный загрузчик, который располагается, начиная с первого логического сектора активного раздела. Необходимо сакцентировать внимание на слово “начиная”. Дело в том, что вторичный загрузчик в разных системах имеет разную структуру и размер.

Вторичный загрузчик выгружает первый пакет программ, которые необходимы для запуска ОС. В операционных системах MS – DOS программа-загрузчик запускает IO.SYS, расположенный по адресу 700h, а затем MSDOS.SYS и происходит передача управления разделу SYSINIT модуля IO.SYS.

Если же по каким-либо обстоятельствам на жестком диске не найден его активный раздел, то процесс загрузки продолжается обрабатыванием прерывания 18h. Данная ветвь используется полностью в очень редких случаях. При удаленной загрузке, когда ОС загружается непосредственно с сервера, данное прерывание переадресовывается утилитой POST на память сетевой карты.

В MS–DOS и ранних версиях Windows доступ непосредственно к дискам производится через Int 13h BIOS. При этом используется адресация секторов диска на основе номера цилиндра.

Также необходимо отметить, что данные ограничения существенны только на этапе загрузки ОС, так как Linux и более старшие версии Windows при работе с дисками уже не используют 13 прерывание BIOS, а вместо этого применяются собственные драйверы. Но, опять же, прежде чем система будет использовать собственный драйвер, его необходимо как минимум выгрузить в ОЗУ. Именно по этой причине любая система должна использовать BIOS. Но, в свою очередь многие операционные системы невозможно разместить за пределами 8 Гб. Для того чтобы понять, как можно обойти данные ограничения, необходимо пояснить, как же происходит загрузка операционных систем семейства Linux.

Поставленную задачу выполняют специальные программы-загрузчики. В современности существует огромное множество таких программ. Так как речь идет о Linux образах, то в первую очередь необходимо упомянуть загрузчик LiLo, который содержится в составе любого дистрибутива Linux [3].

LiLo представляет из себя комплекс нескольких утилит. Это собственно сам загрузчик и другие программы, использующиеся для его установки и настройки.

‒                   программа /sbin/lilo, которая запускается из-под Linux и служит для записи информации, необходимой на этапе загрузки. Такую информацию требуется перезаписывать каждый раз после внесения изменения в ядро системы или в конфигурационный файл загрузчика LILO;

‒                   различные служебные файлы, которые нужны LILO. Данные файлы располагаются в /boot каталоге. Основные из них – это сам загрузчик и map-файл (/boot/map), в котором указан адрес местоположения ядра системы. Еще одним из самых важных файлов является файл конфигурации LILO (/etc/lilo.conf);

Загрузочный сектор LILO при установке ОС предлагается разместить в следующих местах:

‒                   загрузочный сектор дискеты формата Linux (/dev/fd0,…);

‒                   Master Boot Record первого жесткого диска (/dev/had, /dev/sda,…);

‒                   разгрузочный сектор первого раздела файловой системы Linux на первом жестком диске (/dev/hda1, /dev/hda2,…);

‒                   загрузочный сектор логического раздела первого жесткого диска (/dev/hda5,…).

Большинство программ, например fdisk, не предполагают, что можно загрузиться из расширенного раздела и по этой причине отказываются объявлять его активным. Именно поэтому в состав загрузчика LILO добавлена утилита (activate), позволяющая обойти данное ограничение. Но программа fdisk поддерживает возможность сделать расширенный раздел активным [4].

Загрузочный сектор LILO запрещается размещать в таких местах, как:

‒                   загрузочный сектор дискеты или первичный раздел, который отформатирован в другой файловой системе;

‒                   в swap–раздел Linux.

Кроме того, LILO во время своей загрузки подгружает такие файлы как /boot/boot.b, /boot/map. Помимо данных файлов выгружаются все версии ядра. Это возможно, если выбрать требуемую версию ядра на этапе загрузки ОС.

Когда LILO загружается, на экране компьютера отображается слово ”LILO”. При этом вывод каждой буквы означает завершение определенного действия или этапа загрузки LILO. Если загрузка прекратилась на каком-либо определенном этапе, то по числу отображаемых букв можно судить о причине возникновения проблемы.

Если на экране компьютера не отобразилось ни одной буквы, следовательно, никакая часть LILO не загружена. В таком случае говорят, что, либо LILO не был установлен вовсе, либо раздел, на который данный загрузчик записан, не помечен как активный.

L (код ошибки) – первичный загрузчик выгружен в ОЗУ компьютера и на него передано управление, но не удалось загрузить вторичный загрузчик. Код ошибки отображается в двухзначном виде и указывает на конкретную причину проблемы. В большинстве случаев данная проблема связана с дефектами жесткого диска.

LI – первичный загрузчик выгрузил вторичный в оперативную память компьютера, но последний не запустился на выполнение. Это может быть вызвано тем, что файл /boot/boot.b перемещен либо вовсе отсутствует без перезапуска /sbin/lilo.

LIL – вторичный загрузчик выгружен в ОЗУ и запущен, но не удалось запустить таблицу дескрипторов из файла mар. Чаще всего, причиной является наличие дефектов винчестера.

LIL? – вторичный загрузчик выгружен по неверному адресу.

LIL- – таблица дескрипторов повреждена или вовсе разрушена. Как правило, это происходит вследствие ошибки задания геометрии диска.

LILO – работа загрузчика выполнена без ошибок.

На рисунке 1 представлено графическое отображение рассматриваемого загрузчика, на котором пользователю предлагается выбор операционной системы для запуска.

Рисунок 1. Меню загрузчика LILO

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


Библиографический список
  1. Колисниченко Д.Н., Ален Питер В. LINUX: полное руководство. – СПб: Наука и Техника, 2006. – 784 с.
  2. Партыка, Т.Л. Операционные системы, среды и оболочки: учебное пособие для сред. Проф. Обр. рек. МО / Партыка, Т.Л, Попов, И.И.- М.: ФОРУМ: ИНФРА – М, 2006. – 399с.
  3. Такет Д., Барнет С. Специальное издание. Использование LINUX / Пер. с англ. – 4-е изд. СПб.: Вильямс, 2003.
  4. Установка и настройка загрузчика LILO. [Электронный ресурс].URL: http://rus-linux.net/book1.php?name=book1/gl-02/gl_02_07.html/ (дата обращения 07.11.2016).


Все статьи автора «Клопов Николай Викторович»


© Если вы обнаружили нарушение авторских или смежных прав, пожалуйста, незамедлительно сообщите нам об этом по электронной почте или через форму обратной связи.

Связь с автором (комментарии/рецензии к статье)

Оставить комментарий

Вы должны авторизоваться, чтобы оставить комментарий.

Если Вы еще не зарегистрированы на сайте, то Вам необходимо зарегистрироваться: