Що таке GRUB? Принцип дії і для чого потрібен
GRUB (GRand Unified Bootloader, головний уніфікований завантажувач) - є популярним завантажувачем ОС, який спочатку був розроблений під операційну систему GNU / Hard та поширювався під ліцензією GNU GPL, в повністю вільному вигляді. Але на теперішній час використовується, як завантажувач для багатьох ОС, так як є універсальним інструментом з широким функціоналом.
Однією з головних цілей GRUB є надання можливості варіювання і розміщення декількох операційних систем на одній машині, і при необхідності завантажувати будь-яку з них на вибір. Ну, і звичайно, варто виділити гнучкість в налаштуванні параметрів системи при завантаженні. Про це більш детально розглянемо нижче.
За допомогою GRUB можна здійснювати установку будь-якої ОС, яка підлягає під специфікацію Multiboot. З їх числа можливі для інсталяції такі операційні системи: Linux, OpenBSD, FreeBSD, Solaris, NetBSD. Також GRUB може працювати з численними ОС, передаючи по ланцюжку управління іншому вторинному завантажувачу, це дозволяє йому завантажувати навіть Windows (через завантажувач NTLDR), MS-DOS, OS / 2 і інші системи.
Робота з GRUB і коригування параметрів системи йде через Menu GRUB, його можна бачити на скрині знизу. У вікні представлений список операційних систем або ядер, упорядкований по імені. Певну операційну систему або ядро можна вибрати за допомогою клавіш зі стрілками. Якщо потрібно завантажити альтернативний пункт меню без редагування, просто натисніть клавішу "Enter", щоб продовжити.
Якщо є необхідність відредагувати параметри перед завантаженням, натисніть "e" для редагування або ж "c" для переходу до командного рядка. Вікно з меню GRUB можна побачити в stage 2, до неї ще повернемося.
Особливості та переваги GRUB як завантажувача
GRUB є завантажувачем за замовчуванням для багатьох дистрибутивів Linux, і ось чому, розглянемо особливості і плюси GRUB, як завантажувача:
- GRUB підтримує велику кількість ОС і файлових систем (серед них, ext2, FAT16 і FAT32, FFS, ReiserFS і д.р.). З GRUB ви можете "бачити" вміст файлової системи без завантаження операційної системи через командний рядок.
- В GRUB є можливість виконати розпакування образу операційної системи перед її інсталяцією.
- GRUB є динамічно конфігурованим. Це визначає те, що користувач може внести свої зміни в налаштування GRUB під час завантаження. GRUB забезпечує максимальну гнучкість при завантаженні операційних систем з необхідними опціями, просто редагуючи конфігураційний файл. Параметри завантаження, такі як параметри ядра, можна змінити за допомогою командного рядка GRUB.
- GRUB підтримує LBA (це режим логічної блокової адресації, де кожен блок має свій номер). Використання LBA дозволяє GRUB завантажувати операційні системи з розділів, що перевищують обмеження в 1024 циліндра.
- Запустити і встановити GRUB також можна з різних пристроїв (наприклад, з гнучкого диска - дискети, жорсткого диска, CD- ROM приводу, USB диска, мережевого диска і т.д.).
Алгоритм роботи для BIOS і UEF
Для BIOS і UEFI сам принцип роботи кардинально відрізняється. Нам не потрібно заглиблюватися в тонкощі, просто розглянемо основні моменти і відмінності, щоб побачити саму суть і роль завантажувача.
Обидві ці програми, що BIOS, що UEFI є ПО низького рівня, які запускаються при старті комп'ютера перед тим, як завантажиться операційна система для перевірки готовності системи, про це ще поговоримо нижче. Але UEFI - це відносно нове рішення, яке прийшло на зміну BIOS і міститься в більш сучасних машинах. Завдяки використанню розбивки на розділи GPT замість звичайної MBR, UEFI може підтримувати жорсткі диски більшого обсягу.
Під час старту машини, запускається спочатку алгоритм Power-On Self Test для проходження тестування апаратного забезпечення, після завершення перевірки працездатності системи BIOS / UEFI передає управління завантажувачу для здійснення налаштувань параметрів ядра і вибору ОС.
Далі йдуть відмінності, так як для систем з BIOS по закінченню POST, BIOS проводить пошук Master Boot Record, або MBR - головний завантажувальний запис. MBR розміщена на самому початку диска, якщо точніше, то вона займає перші його 512 байта, або ж в розділі / dev / sda1 (boot). Вона містить в собі дані про те, які логічні і розширені розділи є на цьому пристрої. Далі GRUB за замовчуванням замінює код MBR власним кодом, цей етап процесу ще носить назву stage 1.
Оскільки MBR має обмежений і невеликий розмір, зазвичай цей код використовується тільки для ініціалізації основного завантажувача, розташованого десь на диску. Тому після stage 1 йде перехід до stage 2, де вже містяться всі необхідні конфігураційні дані.
UEFI, в свою чергу, використовує зовсім інший спосіб установки завантажувача. Тут завантажувач не потрібно нікуди попередньо записувати, він є стандартним додатком EFI, який вміщений на розділ EFI, і там вже повністю успішно функціонує поряд з іншими компонентами системи. Тобто відразу запускається виконання самої програми EFI замість коду, розташованого в MBR.
Вторинний завантажувач також відомий, як завантажувач stage 2, він завантажується в пам'ять основним завантажувачем stage 1. У stage 2 читається конфігураційний файл, який містить всі компоненти користувальницького інтерфейсу з їх характеристиками, які необхідні для роботи GRUB.
Далі йде відображення меню GRUB, це дозволяє користувачеві переглядати системні параметри і вибирати операційну систему для завантаження. Як тільки GRUB визначить операційну систему або ядро для завантаження, буде виконано їх завантаження в пам'ять вторинним завантажувачем. Після цього управління машиною повністю передається їм.
Також в цьому циклі може існувати проміжний крок 1.5, тоді завантажувач stage 1.5 завантажується в пам'ять завантажувачем етапу 1. Це може бути необхідно в рідкісних випадках для деяких апаратних засобів, яким потрібно ще додатковий крок, перед тим, як здійснювати перехід безпосередньо до вторинного завантажувачу stage 2 .
Якщо в процесі виконання stage 2 не буде знайдена конфігураційна таблиця, тоді GRUB припинить процес завантаження і передає користувачеві можливість вибрати вручну всю системну конфігурацію використовуючи командний рядок.