GRUB - завантажувач системи
GRUB (GRand Unified Bootloader 1)) - програма-завантажувач операційних систем.
GRUB є еталонною реалізацією завантажувача, що відповідає специфікації Multiboot і може завантажити будь-яку сумісну з нею операційну систему. Серед них: Linux, FreeBSD, Solaris та багато інших. Крім того, GRUB вміє по ланцюжку передавати керування іншому завантажувачу, що дозволяє йому завантажувати Windows (через завантажувач NTLDR), MS-DOS, OS/2 та інші системи.
Після налаштування GRUB Користувач при включенні комп'ютера бачить список операційних систем, які встановлені на його комп'ютер і які можна завантажити, вибравши відповідну та натиснувши Enter .
GRUB дозволяє користувачеві при завантаженні задавати довільні параметри та передавати їх у ядро Multiboot-сумісної ОС для подальшої обробки.
GRUB - Найпопулярніший завантажувач у світі Linux і є завантажувачем за замовчуванням у більшості відомих дистрибутивів.
Тут і далі в інших статтях під назвою програми GRUB мається на увазі GRUB 2, який використовується в операційних системах сімейства Ubuntu, починаючи з версії 9.10, до нього використовувався. GRUB першої версії, зараз відомий як GRUB Legacy. GRUB 2 повністю переписаний з нуля і не має нічого спільного з GRUB Legacy, розробка якого була зупинена на користь більш досконалого та потужного GRUB.
Перші кроки
При першому порівнянні GRUB зі старим GRUB Legacy найвагомішою відмінністю виявляється змінена структура файлів конфігурації.
Налаштування GRUB проводиться тепер принципово в інший спосіб - основним файлом конфігурації є "/boot/grub/grub.cfg". Однак, не поспішайте правити його так, як звикли це робити з «menu.lst» у GRUB Legacy.При уважному прочитанні ми бачимо на початку файлу grub.cfg такі рядки:
# # DO NOT EDIT THIS FILE # # It is automatically generated by /usr/sbin/grub-mkconfig using templates # from /etc/grub.d and settings from /etc/default/grub #
І про це нас попереджають не так. Адже grub.cfg генерується автоматично з використанням декількох скриптів. Тому після наступного оновлення GRUB ваш grub.cfg буде створено заново, і всі ваші правки будуть втрачені.
Крім файлу grub.cfg, що відповідає за завантажувальне меню, є файл /etc/default/grub і папка /etc/grub.d. Розглянемо їх докладніше.
/etc/default/grub
Цей файл містить основні настройки для GRUB. Через нього, власне, вони змінюються. Для наочності нижче наводиться зразковий вміст цього файлу:
GRUB_DEFAULT=6 #GRUB_HIDDEN_TIMEOUT=0 GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TIMEOUT="2" GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDLINE_LINUX="" # Uncomment to disable графічний terminal (grub-pc only) #GRUB_TERMINAL=console # The resolution used on graphical terminal # note that you can VBE # Ви можете повідомити їх в реальному GRUB with command `vbeinfo' #GRUB_GFXMODE=640x480 # Uncomment if you don't want GRUB на pass "root=UUID=xxx" parameter to Linux #GRUB_DISABLE_LINUX_UUID=true # Uncomment to recovery mode menu entrys #GRUB_DISABLE_LINUX_RECOVERY="true"
Файл є набором опцій у зрозумілому форматі ОПЦІЯ=ЗНАЧЕННЯ.
Найпоширеніша потреба при налаштуванні GRUB - зміна стандартного пункту завантаження та/або часу показу меню. Розглянемо, як це робиться.
Зміна стандартного пункту завантаження
Стандартний пункт (виділений при показі меню) - верхній у списку. Після встановлення Ubuntu вона опиниться нагорі, а Windows, наприклад, буде останнім пунктом.
Значення «GRUB_DEFAULT» – це номер пункту меню, який має бути обраний стандартним. Щоб вибрати інший пункт, нам потрібно дізнатися, яким він буде в списку. Є два варіанти:
Переглянути вміст "/boot/grub/grub.cfg" і порахувати, який за рахунком виявиться потрібний запис;
Нумерація пунктів меню розпочинається з нуля. Значення за замовчуванням – 0, тому й вибирається перший пункт.
П'ятому зверху пункту буде відповідати значення 4, другому - 1, першому - 0. У наведеному вище прикладі встановлено значення 6, тобто стандартним заданий сьомий пункт меню.
Команда sudo grub-reboot 1 одноразово вибирає другий пункт меню за замовчуванням (тільки для наступного завантаження),
Команда sudo grub-set-default 2 вибирає на постійній основі третій пункт меню за замовчуванням.
Або ж можна вказати значення ідентифікатора (id), воно має бути саме таким, яким ми його бачимо у /boot/grub/grub.cfg. Цей спосіб зручний тим, що після оновлення ядра не доведеться змінювати налаштування через нумерацію, що збилася.
приклад
Якщо пункт «grub.cfg» пункт меню виглядає так:
menuentry 'Example GNU/Linux distribution' --class gnu-linux --id example-gnu-linux
Це значення параметра «GRUB_DEFAULT» має вказуватися саме у вигляді:
GRUB_DEFAULT=example-gnu-linux
Раніше документація пропонувала вказувати назву пункту меню завантаження (так, як він відображається в самому меню).Хоча цей спосіб, як і раніше, працює, використовувати його не рекомендується, оскільки ці назви можуть змінюватися, наприклад, при оновленні ядра/версії ОС
Зміна часу відображення меню
За промовчанням меню завантаження відображається 10 секунд (за наявності інших встановлених ОС, якщо система одна - GRUB за замовчуванням не відображається і відразу починає завантаження), після чого завантажується стандартний пункт, якщо раніше не натиснути Enter або не вибрано інший пункт, що зупиняє таймер. За цю затримку відповідає параметр GRUB_TIMEOUT, значення задається в секундах.
Якщо поставити значення «-1», то меню буде відображатися доти, доки користувач не вибере будь-який пункт
Зверніть увагу, що цифра вказується у лапках. У прикладі це значення - 2, тобто меню відображається дві секунди.
"Приховане" меню
Якщо на комп'ютері встановлено лише Ubuntu, меню завантаження за замовчуванням не відображатиметься, а GRUB завантажуватиме вас безпосередньо в систему. Однак, іноді може виникнути необхідність завантажитися з іншим ядром або запустити перевірку пам'яті. Для цього передбачено "приховане меню" за нього відповідає параметр "GRUB_HIDDEN_TIMEOUT".
У разі встановлення інших ОС цей параметр закоментований (# на початку рядка). Це дозволить призупинити завантаження на задану кількість секунд, даючи користувачеві можливість викликати меню завантаження, натиснувши Esc .
Якщо значення встановлено в 0, то затримки не буде, проте викликати меню можна, утримуючи під час завантаження Shift
Параметр GRUB_HIDDEN_TIMEOUT_QUIET відповідає за відображення таймера під час паузи. Якщо його значення "true" таймер не відображатиметься, а зі значенням "false" буде.
Щоб GRUB відображав меню зі списком встановлених операційних систем, без натискання клавіш виклику меню (наприклад Shift або Esc) необхідно:
sudo gedit /etc/default/grub
Виставити час до автоматичного завантаження виділеної системи/ядра (наприклад, 10 секунд):
Щоб меню GRUB відображалося, необхідно закоментувати наступний рядок (значком #):
#GRUB_HIDDEN_TIMEOUT=0
Налаштування параметрів ядра в Grub
Ядру Linux можна передавати різні параметри для зміни стандартної поведінки або інформування про нестандартну конфігурацію обладнання. передаються за допомогою завантажувача Grub.
Якщо ви хочете змінити або додати параметри ядра Linux за допомогою Grub, вам необхідно відредагувати файл шаблону конфігурації або конфігураційний файл завантажувача.
Налаштування параметрів ядра Grub у системі
Файл шаблону конфігурації Grub у Debian подібних системах знаходиться за адресою /etc/default/grub Додайте параметр ядра у вигляді ім'я = значення у змінну GRUB_CMDLINE_LINUX_DEFAULT:
sudo vi /etc/default/grub
Тут же можна видалити небажані параметри ядра Grub встановлені за умовчанням, наприклад, замінити quiet на verbose для детального виведення інформації про процес завантаження.
Якщо такої команди не існує, потрібно встановити пакет grub2-common:
sudo apt install grub2-common
У Fedora та CentOS скрипта update-grub для оновлення конфігурації завантажувача немає, тому треба вручну згенерувати новий конфігураційний файл:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Найкраще додавати параметри завантаження ядра linux саме цим способом, але розглянемо ще кілька альтернативних варіантів
Параметри завантаження ядра в grub.cfg
Якщо ви не можете скористатися способом, описаним вище, можна відредагувати безпосередньо конфігураційний файл завантажувача, який знаходиться на шляху /boot/grub/grub.conf. У цьому файлі потрібно знайти секцію, що відповідає за стандартне завантаження Linux. menuentry:
Знайдіть її, а потім у цій секції знайдіть рядок linux /boot/vmlinuz. в кінець цього рядка ви можете дописати свої параметри, в такому ж форматі. Збережіть зміни в файлі і перезавантажте комп'ютер. її такий:
linux параметри_ядра
Цей спосіб підійде майже для будь-якого дистрибутива, але більш правильним шляхом буде використовувати шаблон конфігурації, де це можливо, тому що при наступному оновленні дистрибутива всі ваші налаштування в цьому файлі можуть бути стерті.
Параметри ядра Grub під час завантаження
Завантажувач Grub також дозволяє редагувати пункти меню перед запуском системи. Для цього в меню Grub виберіть потрібний пункт і натисніть клавішу. E. Відкриється редактор поточної секції меню. linux /boot/vmlinuz. і дописати до кінця ваші параметри ядра Linux, наприклад, init=/bin/bash:
Потім натисніть кнопку F10 або Ctrl+X щоб продовжити завантаження з новими параметрами.Ці параметри будуть актуальні до наступного перезавантаження.