Коли пристрій завантаження знайдено, система шукає нульовий сектор (з адресою циліндр0, головка0, сектор0). та виконує код, розташований у цьому секторі. Цей код знаходить та зчитує таблицю розділів (розташовану відразу ж після нульового сектора) та знаходить в ній активний розділ. Після цього починається виконання коду записаного у першому блоці активного розділу. Для Linux цей код є завантажувачем LILO або GRUB
LILO
В деяких випадках завантажувач LILO розміщують безпосередньо в MBR. В цьому випадку він використовується для завантаження інших ОС. Якщо ж завантажувач занесено на початок розділу диску (такий завантажувач ще називають вторинним - secondary), то він використовується для завантаження Linux з цього розділу.
Нехай LILO розташовано в MBR. Тоді підчас завантаження BIOS завантажує код LILO у пам”ять по визначеній фіксованій адресі (0x7C00) та виконується. Цей код використовує процедури BIOS завантажує у свою чергу вторинний завантажувач на адресу 0x9B000. Всі операції з відображення меню виконує вже вторинний завантажувач.
GRUB
Завантажувач GRUB є альтернативою до LILO. GRUB (Grand Unified Bootloader) використовується в дистрибутивах Mandriva, Ubuntu та деякіх інших. Подібно до LILO – головне призначення GRUB – завантажити ядро операційної системи. Крім цього, GRUB надає користувачам деякі інші можливості, такі як завантаження різних ОС та різних версій однієї ОС, захист процесу завантаження паролем, графічне та кольорове оформлення екрану завантаження.
Як правило, завантажувач GRUB встановлюється підчас інсталяції системи. Є можливість інсталювати цей завантажувач окремо, наприклад на флеш-диск. Файли, що керують роботою завантажувача можна знайти у каталозі /boot/grub/. Головним конфігураційним файлом є menu.lst. Розглянемо приклад такого файлу.
default 0
timeout 3
hiddenmenu
title Ubuntu, kernel 2.6.20-15-generic
root (hd0,0)
kernel /boot/vmlinuz-2.6.20-15-... ro quiet splash
initrd /boot/initrd.img-2.6.20-15-generic
Файл має заголовок, в якому визначені загальні параметри завантажувача та додатові секції, по одній на кожен пункт меню завантажувача, що вказує на тип ОС яку потрібно завантажити.
Параметр
| Коментар
|
default
| Визначає пункт меню який обирають за замовчуванням. Нумерація починається з 0
|
timeout
| Як довго (секунди) меню затримається на екрані, поки не буде обрано пункт за замовчуванням
|
hiddenmenu
| Якщо цей пункт є, то меню на екрані не відображається, автоматично завантажується система вказана за замовчуванням
|
title
| текст пункту меню
|
root
| Вказує завантажувачу на якому диску та розділі знайти ядро
|
kernel
| Визначає яке ядро буде завантажене
|
initrd
| Вказує завантажувачу яку програму потрібно виконати після завантаження ядра
|
Після завантаження ядра завантажуються та ініціалізуються драйвери для пристроів комп”ютера. Власне на цьому етапі часто виникають проблеми, якщо драйвер не відповідає наявному пристрою. Якщо всі драйвери розпізнані та ініціалізовані без помилок, то система переходить до запуску спонтанних процесів, серед яких чільне місце займає процес init. Зазвичай виконувальний код init знаходиться у /sbin каталозі.