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

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

Загрузчик операционной системы:
 обеспечивает необходимые средства для диалога с пользователем компьютера (например, загрузчик позволяет выбрать операционную систему для загрузки);
 приводит аппаратуру компьютера в состояние, необходимое для старта ядра операционной системы (например, на не-x86 архитектурах перед запуском ядра загрузчик должен правильно настроить виртуальную память);
 загружает ядро операционной системы (Ntoskrnl.exe в случае MS Windows) в ОЗУ. Загрузка ядра операционной системы не обязательно происходит с жесткого диска. Загрузчик может получать ядро по сети. Ядро может храниться в ПЗУ или загружаться через последовательные интерфейсы (это может пригодиться на ранней стадии отладки создаваемой компьютерной системы);
 формирует параметры, передаваемые ядру операционной системы (например, ядру Linux передаются параметры, указывающие способ подключения корневой файловой системы);
 передаёт управление ядру операционной системы.

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

Опишем процедуру, с помощью которой происходит загрузка с НЖМД IBM PC: 

BIOS производит чтение 512 байт первого сектора НЖМД (MBR) в ОЗУ по адресу 0x00007C00 (0x07C0:0x0000 в формате реального режима), затем прочитанному коду передаётся управление. Этот код читает и анализирует таблицу разделов жёсткого диска, а затем, в зависимости от вида загрузчика, либо передаёт управление загрузочному коду активного раздела жёсткого диска (см. Начальная загрузка компьютера), либо самостоятельно загружает ядро с диска (например, сетевого или съёмного) в оперативную память и передаёт ему управление. Первоначально загрузчик работает в режиме реальной адресации при отключенной адресной линии A20, что создает определенные трудности при написании загрузчиков.

Распространённые загрузчики 

 NTLDR — загрузчик ядра Windows NT/2000/XP.
 Windows Boot Manager (bootmgr, winload.exe) — загрузчик ядра Windows Vista, Windows 7, Windows 8 и Windows 10.
 LILO (LInux LOader) — загрузчик, в основном применяемый для загрузки ядра Linux.
 GRUB (Grand Unified Bootloader ) — применяется для загрузки ядра Linux и Hurd (StartUp Manager).
 OS/2 BootManager — загрузчик ядра OS/2.
 RedBoot — загрузчик для встраиваемых систем. Домашняя страница RedBoot .
 SILO (SPARC Improved bootLOader) — загрузчик Linux и Solaris для машин с архитектурой SPARC. Домашняя страница SILO .
 Loadlin — загружает Linux из-под DOS или Windows. Домашняя страница Loadlin .
 Syslinux — загружает Linux из-под DOS или Windows.
 Yaboot — загрузчик Linux на PowerPC.
 BootX — загрузчик Mac OS X.
 bootman — загрузчик BeOS.
 BootManager — загрузчик Haiku.
 Das U-Boot — универсальный загрузчик, применяется в основном во встраиваемых (embedded) системах.
 Plop Boot Manager — универсальный загрузчик, запускается с помощью собственных загрузчиков Windows и Linux, а также со съемных носителей. Домашняя страница Plop Boot Manager .
 SyMon — универсальный загрузчик, независим от типа операционной системы Домашняя страница SyMon.
 Acronis OS Selector — коммерческая графическая утилита прилагаемая к Acronis Disk Director, поддерживает Windows и Linux, появляется перед каждой загрузкой системы, умеет копировать системы  .
 uMon — загрузчик для встраиваемых систем.
 barebox — загрузчик для встраиваемых систем.
 Paragon Boot Manager — универсальный загрузчик, распространяется с дистрибутивом Paragon Partition Manager.
 XorBoot — универсальный загрузчик.

Ссылки 

 
 Russian x86 MultiBoot FAQ 
 Статья «Краткий обзор загрузки Windows, Linux, Mac OS X, QNX»
 Статья «Установка нескольких операционных систем на один IBM-PC совместимый компьютер»
 «Установка нескольких операционных систем с помощью мультизагрузчика SyMon»

Литература