Швидке відновлення завантажувача Grub в Ubuntu. Відновлення Grub2.

GRUB2 - мультисистемний, кросплатформний завантажувач ядра операційної системи. Основним чином використовується для завантаження ядер Linux. Дозволяє мати кілька встановлених операційних системна одній машині та при включенні комп'ютера вибирати завантаження потрібної ОС.

GRUB2 це нова гілка та кардинально відрізняється від GRUB Legacy, створений на основі PUPA та має модульну структуру. Підтримує безліч файлових систем, працює з BIOS та EFI.

Установка GRUB2:

Про установку багато писати не буду, на різних дистрибутивах вона може відрізнятись, зазвичай це виглядає так:

# grub-install /dev/sda

/dev/sda – це пристрій, а не розділ.

# grub-install

Також існує ряд опцій, для кожного випадку, версій GRUB2 і дистрибутива вони можуть відзначитись, описувати немає сенсу. Переустановка нічим не відрізняється від установки та виконується командою grub-install.

Після встановлення завантажувач готовий до роботи в консольному режимі, для виправлення цього потрібно генерувати файл конфігурації, про це нижче.

Налаштування:

за замовчуванням файл конфігурації знаходиться тут - /boot/grub/grub.cfg . Якщо файл був генерований за допомогою grub-mkconfig, він непридатний до редагування і при наступному оновленні він буде перезаписаний. А якщо ви все-таки вирішили налаштувати файл завантажувача самі, тоді видаліть згенеровану версію і створіть нову, самі або на основі прикладів.

Автоматична конфігурація:

Почнемо з найпростішого, автоматична генерація виконується командою:

# grub-mkconfig

Ця команда генерує файл grub.cfg. Щоб автоматично виявити сторонні ОС, необхідний пакет os-prober. В основному налаштування конфігуратора grub-mkconfig виконується у файлі /etc/default/grub, а також у файлах каталогу /etc/grub.d/. Додати свої пункти меню можна у файлі /etc/grub.d/40_custom або /boot/grub/custom.cfg. Щоб зміни набули чинності, необхідно виконати команду:

# grub-mkconfig -o /boot/grub/grub.cfg

Команда створить файл /boot/grub/grub.cfg та перевірить конфігураційні файли на наявність помилок. Конфігураційний файл/etc/default/grub містить параметри за замовчуванням, кожен параметр має коментар ( короткий опис) на англійській мові. Далі опис деяких параметрів із конфігураційного файлу:

  • GRUB_DEFAULT — Вибір завантаження пункту меню за промовчанням. Може бути обраний за номером чи назвою.
  • GRUB_TIMEOUT — Вказує на час затримки перед завантаженням стандартного пункту.
  • GRUB_HIDDEN_TIMEOUT — Час очікування перед відображенням списку завантаження пунктів меню.
  • GRUB_DISABLE_OS_PROBER — Забирає перевірку на наявність встановлених операційних систем.
  • GRUB_GFXMODE - Відповідає за дозвіл екрана. Командою vbeinfo можна переглянути список доступних параметрів роздільної здатності в командному рядку GRUB2.
  • GRUB_BACKGROUND — Шлях до фонового зображення.
  • GRUB_THEME - Шлях до тем.

Ручна конфігурація:

Мова скрипта конфігурації GRUB2 спрощена UNIX-шелл. Скрипт може бути як простим, так і дуже складним, складність скрипту нічим не обмежена. Скрипт grub-mkconfig, що генерується, придатний для завантаження в більшості випадків, але він громіздкий.

Ручна конфігурація GRUB2 відкриває доступ до всіх можливостей, а за рахунок спрощення та видалення зайвого коду можна досягти більшої стабільності, надійності та швидкості роботи.

Докладніше про конфігурацію GRUB2 з прикладами коду конфігурації та іншою інформацією можна прочитати на


Автор: Mayank Sharma
Дата публікації: 10 вересня 2015 р.
Переклад: А. Панін
Дата перекладу: 16 грудня 2015 р.

Існує не так багато речей, які можуть дратувати настільки сильно, як дратує непрацездатність системного завантажувача. Саме тому ми будемо вчитися використовувати максимально можливості системного завантажувача GRUB 2, підтримуючи його в робочому стані.

Для чого це потрібно?

  • GRUB 2 є найпопулярнішим системним завантажувачем, який використовується практично в кожному дистрибутиві Linux.
  • Системний завантажувач є важливим програмним компонентом, який може працювати некоректно в ряді випадків.
  • GRUB 2 є розширюваним та гнучким системним завантажувачем, що підтримує безліч параметрів конфігурації.

Системний завантажувач Linuxпід назвою GRUB 2 є якісним та гнучким програмним компонентом. Хоча цей системний завантажувач не є єдиним системним завантажувачем, що підтримує Linux, він є найбільш популярним і використовується практично у всіх широко відомих дистрибутивах. Процес функціонування системного завантажувача GRUB 2 можна розділити на дві фази. По-перше, він виводить меню з назвами всіх встановлених на комп'ютері операційних систем і дозволяє вибрати одну з них. По-друге, він завантажує ядро ​​Linux у разі вибору операційної системи на основі відповідного ядра за допомогою меню завантаження.

Очевидно, що під час використання операційної системи на основі ядра Linux ви просто не зможете обійтися без системного завантажувача. При цьому системний завантажувач є чи не найзагадковішим компонентом дистрибутива Linux. В рамках цього посібника ми познайомимо вас з деякими з можливостей даного системного завантажувача та навчимо вирішувати проблеми, пов'язані з його некоректним функціонуванням.

Найбільш важливим компонентом системного завантажувача GRUB 2 є набір з текстових файлів і кількох сценаріїв командної оболонки. Перший компонент даного набору, з яким варто познайомитись, розташований у директорії /etc/default/grub . Це текстовий файл, за допомогою якого ви можете встановлювати зміни змінних конфігурації та інших параметрів меню GRUB 2 (зверніться до розділу "Установки меню завантаження").

Іншою важливою директорією, пов'язаною з GRUB 2 є директорія /etc/grub.d . У цій директорії розташовані всі сценарії, що формують опис кожного елемента меню. Імена цих сценаріїв повинні мати префікси, що складаються із двох цифр. Ці префікси призначені для встановлення порядку, в якому сценарії будуть виконуватися, а також порядку розташування відповідних елементів у меню GRUB 2. Насамперед здійснюється читання файлу 00_header , після чого відбувається розбір файлу конфігурації /etc/default/grub. Після цього здійснюється формування елементів меню для ядер Linux поточної системи за допомогою сценарію 10_linux. Цей сценарій створює один звичайний елемент меню для завантаження для ядра Linux та один елемент меню для відновлення системи для цього ж ядра Linux з розділу /boot.

Далі виконуються сценарії пошуку інших операційних систем, такі, як 30_os-prober і 40_custom . Сценарій os-prober створює елементи меню інших ядер та інших операційних систем, які виявляються інших розділах жорстких дисків. Він здатний розпізнати встановлені системи Linux, Windows, BSD та Mac OS X. Якщо ви використовуєте надто екзотичну для сценарію os-prober конфігурацію розділів вашого жорсткого диска, що запобігає розпізнаванню встановленого дистрибутива, ви можете додати опис даного дистрибутива до сценарію 40_custom (зверніться до розділу "Користувацькі елементи меню завантаження").

GRUB 2 не вимагає ручного редагування файлів конфігурації для зміни параметрів завантаження системи: натомість він дозволяє генерувати файл конфігурації /boot/grub/grub.cfg за допомогою утиліти grub2-mkconfig . Дана утилітадозволяє здійснювати аналіз сценаріїв з директорії /etc/grub.d , а також файлу конфігурації /etc/default/grub для автоматичного формування опису параметрів завантаження системи.

Відновлення працездатності системного завантажувача у графічному режимі

Переважна більшість проблем, пов'язаних із системним завантажувачем GRUB 2, може бути просто вирішена шляхом натискання єдиної кнопки програми Boot Repair. Це витончене, простий додаток має інтуїтивний інтерфейс користувача і дозволяє сканувати і розпізнавати різні типидисків та схем дискових розділів, а також може з'ясовувати розташування та коректно ідентифікувати встановлені в рамках цих розділів операційні системи. Утиліта може працювати як на звичайних комп'ютерах з основними завантажувальними записами (Master Boot Record, MBR), так і на нових комп'ютерах з UEFI та таблицями розділів GUID (GUID Partition Table, GPT).

Найпростіший спосіб використання утиліти Boot Repair полягає у її встановленні в рамках Live-сесії дистрибутива Ubuntu. Запустіть live-версію дистрибутива Ubuntu на машині з непрацездатним системним завантажувачем та встановіть програму Boot Repair, в першу чергу додавши відповідний репозиторій PPA за допомогою команди:

Sudo add-apt-repository ppa:yannubuntu/Boot Repair

Після цього оновіть список репозиторіїв за допомогою команди:

Sudo apt-get update

Нарешті, ви можете встановити програму за допомогою команди:

Sudo apt-get install -y Boot Repair

Після закінчення процесу встановлення ви зможете запустити програму. Воно просканує ваш жорсткий дискперед відображенням інтерфейсу користувача, Що складається з декількох кнопок. Для виконання запропонованих програмою дій ви можете просто натиснути на кнопку "Recommended Repair", яка дозволить виправити більшість проблем, пов'язаних із системним завантажувачем. Після відновлення системного завантажувача утиліта виведе посилання, яке слід запам'ятати. При переході за цим посиланням ви зможете ознайомитися з детальною інформацією про ваші диски, включаючи їх розділи, а також вміст. важливих файлівконфігурації GRUB 2, таких як файли з директорії /etc/default/grub та файл /boot/grub/grub.cfg . Якщо програмі не вдасться відновити ваш системний завантажувач, ви зможете розмістити це посилання на форумі вашого дистрибутива для того, щоб відвідувачі змогли ознайомитися зі схемою розділів вашого жорсткого диска та дати корисні поради.

Відновлення системного завантажувача

Проблеми, пов'язані із системним завантажувачем GRUB 2, можуть привести систему до різних станів. Текст, який виводиться на екран замість меню системного завантажувача, вказує на стан системи. У тому випадку, якщо система перестала завантажуватися з виводом запрошення grub>, можна зробити висновок про те, що були завантажені модулі GRUB 2, але не вдалося завантажити файл конфігурації grub.cfg. Це запрошення виводиться у повнофункціональній командній оболонці системного завантажувача, за допомогою якої ви можете виконати чимало дій, спрямованих на завантаження системи. Якщо ви бачите запрошення grub rescue> , то нескладно зробити висновок, що системний завантажувач не може виявити свої модулі, а також файли з описом параметрів завантаження системи. Однак, якщо на екрані комп'ютера виводиться лише слово "GRUB", можна зробити невтішний висновок про те, що системному завантажувачу не вдалося виявити навіть базову інформацію, яка зазвичай зберігається в основній. завантажувального запису.

Ви можете виправити ці неполадки GRUB 2, скориставшись або Live CD будь-якого дистрибутива, або командною оболонкою GRUB 2. Якщо вам пощастить, і ваш системний завантажувач виведе вітання grub> , ви зможете використовувати всю потужність вбудованої командної оболонки GRUB 2 для виправлення будь-яких помилок.


Наступні команди будуть працювати як у разі виведення запрошення grub>, так і у разі виведення запрошення grub rescue>. Команда set pager=1 дозволяє задіяти механізм прокручування тексту для запобігання його автоматичному прокручування. Також ви можете використовувати команду ls, яка дозволяє вивести список всіх видимих ​​GRUB 2 розділів жорсткого диска аналогічним чином:

Grub > ls (hd0) (hd0, msdos5) (hd0, msdos6) (hd1, msdos1)

Як ви бачите, дана командадозволяє вивести інформацію про схему таблиці розділів жорсткого диска поряд з інформацією про розділи.

Крім того, ви можете використовувати команду ls по відношенню до кожного розділу жорсткого диска для пошуку розділу з вашою кореневою файловою системою:

Grub> ls (hd0,5)/ lost+found/ var/ etc/ media/ bin/ initrd.gz boot/ dev/ home/ selinux/ srv/ tmp/ vmlinuz

Ви можете відкинути ідентифікатор типу розділу msdos під час запису імені розділу. Також у тому випадку, якщо ви пропустите слеш в кінці імені розділу і виконайте, наприклад, таку команду, як ls (hd0,5) ви отримаєте інформацію про розділ, що включає дані про тип файлової системи, її загальний розмір і час останньої модифікації. Якщо на жорсткому диску створено кілька кореневих розділів, ви можете прочитати вміст файлу /etc/issue за допомогою команди cat з метою ідентифікації дистрибутива аналогічним чином: cat (hd0,5)/etc/issue .

Якщо припустити, що ви знайшли потрібну кореневу файлову систему в розділі (hd0,5), ви повинні переконатися, що дана файлова система містить директорію /boot/grub та образ ядра Linux з ім'ям, аналогічним vmlinuz-3.13.0-24- generic , який ви бажаєте завантажити. Тепер для завантаження системи вам залишається ввести такі команди:

Grub> set root=(hd0,5) grub> linux /boot/vmlinuz-3.13.0-24-generic root=/dev/sda5 grub> initrd /boot/initrd.img-3.13.0-24-generic

Перша команда передає системному завантажувачу GRUB 2 інформацію про розділ жорсткого диска, на якому розміщуються файли дистрибутива для завантаження. Друга команда передає йому інформацію про розташування файлу образу ядра у межах зазначеного розділу жорсткогодиска, а також інформацію про розташування кореневої файлової системи. Останній рядок дозволяє вказати розташування файлу початкового образу диска, вміст якого зберігається у пам'яті та використовується під час завантаження ядра. Ви можете використовувати функцію автозавершення, яка дозволить зберегти достатньо вашого часу та сил під час введення імен файлів ядра та початкового образу диска.

Введення даних рядків має завершуватися введенням після наступного вітання grub> команди boot , що ініціює завантаження зазначеної операційної системи силами GRUB 2.

Ваші дії повинні трохи відрізнятися, якщо ви зіткнетеся з вітанням grub rescue> . Оскільки системний завантажувач не зміг виявити та завантажити будь-який із необхідних модулів, вам доведеться завантажити їх вручну:

Grub rescue > set root=(hd0,5) grub rescue > insmod (hd0,5)/boot/grub/normal.mod grub rescue > normal grub > insmod linux

Очевидно, що як і раніше, після результативного використання команди ls для пошуку кореневого. розділу LinuxВам доведеться відзначити цей розділ за допомогою команди set. Далі потрібно завантажити модуль normal, після чого буде здійснено повернення до стандартного режиму з вітанням grub>. Наступна команда дозволяє завантажити модуль linux у тому випадку, якщо він не був завантажений автоматично. Після завантаження цього модуля можна перейти до передачі системному завантажувачу інформації про розташування файлів образу ядра і початкового образу диска і ініціювати завантаження дистрибутива за допомогою команди boot .

Після успішного завантаження дистрибутива не варто забувати про необхідність повторної генерації файлу конфігурації GRUB 2 за допомогою команди:

Grub-mkconfig -o /boot/grub/grub.cfg

Вам також доведеться встановити копію системного завантажувача в основний завантажувальний запис за допомогою команди:

Sudo grub2-install /dev/sda

GRUB 2 та UEFI

Машини з прошивками UEFI (тобто практично всі машини, що продаються протягом кількох останніх років) додали новий рівень складності в процес діагностики проблем системного завантажувача GRUB 2. Незважаючи на те, що процедура відновлення працездатності системного завантажувача GRUB 2, встановленого на машині з прошивкою UEFI, не значно відрізняється від процедури відновлення працездатності цього ж завантажувача на машині без прошивки UEFIУ нові версії прошивок вносяться різні зміни, які є причиною різних результатів процесу відновлення працездатності системного завантажувача.

У системах на основі UEFI вам не доведеться встановлювати будь-що в основний завантажувальний запис. Натомість ви повинні будете встановити завантажувач Linux з підтримкою EFI в системний розділ EFI (EFI System Partition, ESP) і вибрати цей завантажувач як використовуваний за замовчуванням за допомогою такого інструменту, як efibootmgr в Linux або bcdedit у Windows.

На даний моментсистемний завантажувач GRUB 2 повинен коректно встановлюватися в процесі встановлення будь-якого з популярних дистрибутивів Linux, що дозволяє останньому успішно співіснувати з ОС Windows 8. Однак, якщо ви отримаєте в результаті непрацездатний системний завантажувач, ви зможете відновити працездатність системи за допомогою live- образа дистрибутива Linux. У процесі завантаження live-образу дистрибутива вам слід переконатися, що ви здійснюєте завантаження в режимі UEFI. Меню завантаження комп'ютера має містити два елементи для кожного зі знімних носіїв - для завантаження у звичайному режимі та в режимі UEFI. Використовуйте останній режим для організації доступу до змінних EFI за допомогою файлів директорії /sys/firmware/efi/ .

З live-оточення слід змонтувати кореневу файлову систему невдало встановленого дистрибутива таким чином, як описано в цьому посібнику. Вам також доведеться змонтувати системний розділ EFI (ESP). Якщо припустити, що цей розділ відповідає файлу пристрою /dev/sda1 , ви можете змонтувати цей розділ за допомогою наступної команди:

Sudo mount /dev/sda1 /mnt/boot/efi

Після цього необхідно завантажити модуль ядра efivars за допомогою команди modprobe efivars перед створенням оточення chroot з кореневою файловою системою невдало встановленого дистрибутива таким чином, як описано в цьому посібнику.

Тепер у випадку, якщо ви використовуєте дистрибутив Fedora, ви можете перевстановити системний завантажувач за допомогою наступної команди:

Yum reinstall grub2-efi shim

Після неї слід виконати команду для створення нового файлу конфігурації системного завантажувача:

Grub2-mkconfig -o /boot/grub2/grub.cfg

Користувачі дистрибутива Ubuntu можуть виконати цю операцію за допомогою команди:

Apt-get install --reinstall grub-efi-amd64

Після відновлення системного завантажувача слід вийти з оточення chroot, відмонтувати всі змонтовані розділи жорсткого диска та перезавантажити комп'ютер, перейшовши до меню GRUB 2.


Для деактивації сценарію з директорії /etc/grub.d вам потрібно лише прибрати біт виконання, за допомогою команди, аналогічної команді chmod -x /etc/grub.d/20_memtest86+, яка дозволяє прибрати рядок "Memory Test" з меню завантаження

Дружище, де мій GRUB?

Позитивною рисою системного завантажувача GRUB 2 є можливість переустановки при кожній необхідності. Таким чином, якщо ви втратите системний завантажувач GRUB 2, наприклад, після того, як ОС Windows замінить його на свій власний завантажувач, ви зможете відновити GRUB 2, виконавши кілька операцій в live-оточенні. Якщо припустити, що ви встановили дистрибутив у розділ жорсткого диска, представлений файлом пристрою /dev/sda5, ви можете перевстановити системний завантажувач GRUB 2, в першу чергу створивши директорію для монтування кореневої файлової системи дистрибутива за допомогою команди:

Sudo mkdir -p /mnt/distro

Після цього слід змонтувати файлову систему із цього розділу за допомогою команди:

Mount /dev/sda5 /mnt/distro

Після цього ви зможете повторно встановити системний завантажувач GRUB 2 за допомогою команди:

Grub2-install --root-directory=/mnt/distro /dev/sda

Ця команда дозволить перезаписати інформацію в області основного завантажувального запису пристрою /dev/sda, що містить файлову систему встановленого дистрибутива Linux, а також такі файли системного завантажувача GRUB 2 як grubenv і device.map.

Існує ще одна проблема, яка часто виникає при експлуатації комп'ютерів з декількома встановленими дистрибутивами. При встановленні нового дистрибутива Linux його системний завантажувач повинен отримувати інформацію про вже встановлені дистрибутиви. У тому випадку, якщо він не отримує такої інформації, ви можете просто завантажити останній встановлений дистрибутив і виконати команду:

Перед виконанням цієї команди слід переконатися, що розділи з кореневими файловими системами встановлених дистрибутивів, які представлені у меню завантаження, змонтовані. Якщо дистрибутив, який ви бажаєте додати в меню завантаження, працює з файловими системами /root та /home, розташованими на окремих розділах жорсткого диска, перед виконанням команди grub2-mkconfig слід змонтувати лише файлову систему /root.

Хоча системний завантажувач GRUB 2 може визначати більшість дистрибутивів, спроба додавання в меню системного завантажувача запису для дистрибутива Fedora при роботі з дистрибутивом Ubuntu вимагає одного додаткового кроку. Якщо ви використовували стандартні налаштуванняв процесі встановлення дистрибутива Fedora, силами його установника буде створено розділи LVM. У цьому випадку перед викликом сценарію os-prober з комплекту поставки системного завантажувача GRUB 2 для додавання дистрибутива Fedora в меню завантаження вам в першу чергу доведеться встановити драйвер lvm2 за допомогою системи керування пакетами програмного забезпеченнядистрибутива, скориставшись аналогічною командою:

Sudo apt-get install lvm2

Швидке виправлення

Якщо виконання команди grub2-install не призводить до будь-яких позитивних змін і ви не можете завантажити дистрибутив Linux, вам доведеться повністю перевстановити та переналаштувати системний завантажувач. Для виконання цього завдання можна скористатися корисною утилітою chroot, яка дозволяє тимчасово замінити кореневу директорію live-оточення на кореневу директорію встановленої системи Linux, працездатність якої потрібно відновити. Ви можете використовувати для цього Live CD будь-якого дистрибутива Linux, на якому присутній утиліта chroot . Однак, вам слід переконатися, що ви використовуєте Live CD для тієї ж архітектури центрального процесора, що і встановлений на жорсткому диску дистрибутив. Таким чином, якщо ви бажаєте використовувати утиліту chroot для відновлення працездатності 64-розрядної встановленої системи, вам знадобиться Live CD для 64-розрядних систем.

Після завантаження Live-оточення спочатку слід перевірити розділи жорсткого диска машини. Використовуйте команду fdisk -l для виведення списку всіх розділів жорсткого диска та з'ясуйте номер розділу, на якому встановлено системний завантажувач GRUB 2, працездатність якого ви бажаєте відновити.

Припустімо, що вам потрібно відновити працездатність системного завантажувача дистрибутива, встановленого на розділі жорсткого диска, представленого файлом пристрою /dev/sda5 . Відкрийте емулятор терміналу та змонтуйте цей розділ:

Sudo mount /dev/sda5 /mnt

Тепер вам доведеться змонтувати директорії, які мають бути доступні системному завантажувачу GRUB 2 для коректного виявлення інших встановлених на комп'ютері операційних систем:

$ sudo mount --bind /dev /mnt/dev $ sudo mount --bind /dev/pts /mnt/dev/pts $ sudo mount --bind /proc /mnt/proc $ sudo mount --bind /sys /mnt /sys

Тепер ви можете залишити live-оточення і перейти в оточення встановленого на розділі, представленому файлом пристрою /dev/sda5, дистрибутива за допомогою утиліти chroot:

$ sudo chroot /mnt /bin/bash

Все готове для встановлення, перевірки та оновлення системного завантажувача GRUB 2. Як і раніше, для повторної установки системного завантажувача слід використовувати команду:

Sudo grub2-install /dev/sda

Через те, що команда grub2-install не торкається файлу конфігурації grub.cfg , вам доведеться створити його вручну за допомогою наступної команди:

Sudo grub-mkconfig -o /boot/grub/grub.cfg

Ця послідовність команд має допомогти виправити проблеми системного завантажувача. Тепер на вашій машині буде встановлено нова копіясистемного завантажувача GRUB 2 зі списком усіх встановлених на ній операційних систем та дистрибутивів. Перед тим, як перезавантажити комп'ютер, слід залишити оточення chroot та відмонтувати всі використані файлові системив наступному порядку:

$ exit $ sudo umount /mnt/sys $ sudo umount /mnt/proc $ sudo umount /mnt/dev/pts $ sudo umount /mnt/dev $ sudo umount /mnt

Після цього ви можете безпечно перезавантажити машину, яка має знову повернутись під контроль системного завантажувача GRUB 2, що знаходиться під вашим повним контролем!

Настройки користувача меню завантаження

Системний завантажувач GRUB 2 використовує багато конфігураційних змінних. В даному розділіописані деякі з цих змінних, які ви захочете модифікувати в процесі розгляду вмісту файлу конфігурації /etc/default/grub . Змінна GRUB_DEFAULT дозволяє вказати елемент меню завантаження, який буде вибрано за замовчуванням. як її значень можуть використовуватися числа, такі, як число 0, що відповідає першому елементу меню, а також рядок "saved" дозволяє автоматично вибирати елемент меню, використаний у процесі попереднього завантаження комп'ютера. Змінна GRUB_TIMEOUT дозволяє задати тривалість періоду очікування перед завантаженням з використанням вибраного за замовчуванням елемента меню, а змінна GRUB_CMDLINE_LINUX дозволяє задати список параметрів, який передаватиметься кожному з ядер Linux при використанні відповідних елементів меню завантаження.

Якщо змінна GRUB_DISABLE_RECOVERY має значення true , елементи меню завантаження для відновлення системи не будуть генеруватися. Ці елементи дозволяють завантажувати дистрибутиви в режимі одного користувача, в якому ви можете використовувати будь-які доступні інструменти з інтерфейсом командного рядкавідновлення системи. Ще однією корисною змінною є змінна GRUB_GFXMODE , що дозволяє встановити роздільну здатність екрана, яке буде встановлено при показі меню завантаження. Як значення цієї змінної може використовуватися будь-який опис дозволу, який підтримується вашою графічною картою.

Елементи користувача меню завантаження

Якщо ви бажаєте додати елемент у меню вашого системного завантажувача, ви повинні додати відповідний станс до сценарію з ім'ям 40_custom . Ви можете використовувати цей елемент меню завантаження, наприклад, для завантаження дистрибутива Linux, встановленого на знімному дискуз інтерфейсом USB. Якщо припустити, що розділ з дистрибутивом на вашому знімному диску з інтерфейсом USB представлений файлом пристрою /dev/sdb1 , а файл образу ядра vmlinuz і файл initrd знаходяться в піддиректорії кореневої директорії (/), вам доведеться додати наступний станс до файлу сценарію 40_custom:

Menuentry "Linux on USB" ( set root=(hd1,1) linux /vmlinuz root=/dev/sdb1 ro quiet splash

Для кращої сумісностіВи можете використовувати ідентифікатор UUID розділу жорсткого диска замість ідентифікаторів пристрою та розділу таким чином:

Set root=UUID=54f22dd7-eabe

Скористайтеся командою sudo blkid для отримання всіх ідентифікаторів UUID, приєднаних до системі жорсткихдисків та їх розділів. Аналогічно ви можете додати в меню завантаження записи, що відповідають будь-яким ідентифікованим сценарієм os-prober, але встановленим на жорсткому диску дистрибутивам, звичайно ж, якщо ви знаєте про те, на якому диску встановлено кожен з дистрибутивів і яким шляхом знаходяться його файли образу ядра та образу початкової файлової системи.

Багато користувачів дистрибутивів Linuxвстановлюють на жорсткому диску свого комп'ютера дві та більше систем, одну як робочу, а іншу/інші для тестування або просто заради цікавості. І тут виникає не суттєва, але все-таки проблема із завантажувачем GRUB, так як встановлення нової (іншої системи) автоматично змінює меню завантаження систем, тобто наша знову встановлена ​​система виявляється першою у списку. Для відновлення завантажувача GRUBсвоєї переважної системи користувач, застосовує такі графічні інструменти як: Boot-Repairабо Grub Customizer, які чудово з цим справляються.

Але виявляється і в терміналі можна зробити те саме лише однією командою. Для цього необхідно так само, як і з вищезгаданими інструментами, завантажитися в системі, GRUBякій хочете відновити, відкрити вікно терміналу та перевірити, яка система примонтована зараз. Виконайте таку команду:



Як видно на знімку примотованих розділів, у мене три. З них /media, це розділ ntfs, який використовується для зберігання різних файлів на моєму комп'ютері, у квадратних дужках, вказує на те, що примонтовано, але не задіяно зараз, а ось sda6, відзначений правим слешем - це той самий розділ, на якому знаходиться коренева файлова система.
Тепер ми можемо розпочати повторне встановлення завантажувача Grubна ній. Необхідно виконати таку команду:

sudo grub-install /dev/sda



Встановлення завершено. Помилок немає.

І залишається лише оновити GRUB:

sudo update-grub

От і все. Тепер можна перезавантажити комп'ютер, щоб переконатися, що вибрана система Linuxзнаходиться першою в меню завантажувача GRUB.

Встановив вчора Windows 7 Professinal, і, звичайно, завантажувач Windowsзатер завантажувач Linux.

Опишу тут спосіб відновлення Linux- завантажувача Grub 2, яким я скористався, щоб при включенні ноутбука було можливим вибрати систему для завантаження.

Для початку, потрібен Live СВ із Ubuntu (або чимось подібним, я звичайно ж скористався тим диском, з якого встановлював Linux Mint), у складі якого є хитра утиліта chroot.

Завантажуюся з Live CD, запускаю термінал.

Вводжу команду, яка покаже мою таблицю розділів на жорсткому диску:
sudo fdisk -l
Це для того, щоб згадати/дізнатися, на якому диску встановлено Linux.

Монтую розділ із встановленою Mint:
sudo mount /dev/sda6 /mnt

Примітка: sd a- диск у системі, sda 6 - Розділ на цьому диску. В інших звичайно може бути інакше, у тому числі й окремо винесений розділ /boot.


Монтую диски:
sudo mount --bind /dev/ /mnt/dev
та proc:
sudo mount --bind /proc/ /mnt/proc

Заходжу до примонтованої системи під root:
sudo chroot /mnt

Тепер я - root-користувач у системі, кореневим розділом якої вважається /mnt (спасибі chroot).

Переустановка grub2:
grub-install /dev/sda
(на фізичний диск)

Тепер можна вийти з chroot через команду exit та послідовно відмонтувати все, що раніше примонтував:
sudo umount /mnt/dev
sudo umount /mnt/proc
sudo umount /mnt

Можна перезавантажити.

У мене, наприклад, після цього завантажилася Mint, без вибору систем у процесі завантаження.
Тому потрібно дати терміналу ще одну команду для оновлення меню grub2:
sudo update-grub

Після цього при включенні ноута з'являється вікно вибору системи завантаження.

Щоб все працювало так, як треба, ще можна підредагувати файл налаштувань Grub2 (з правами адміністратора звичайно).

Лежить він у /etc/default/
І має він у мене такий вигляд:

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
#GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT="-1"
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="splash"
GRUB_CMDLINE_LINUX=""
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
#GRUB_TERMINAL=console
#GRUB_GFXMODE=640x480
#GRUB_DISABLE_LINUX_UUID=true
GRUB_DISABLE_RECOVERY="true"

Розглянемо за пунктами:
GRUB_DEFAULT - відповідає за пункт, що завантажується за замовчуванням, меню Grub2.
Його можливі параметри:

  • =0 - вибирає пункт, який буде завантажуватися за замовчуванням (відповідно до порядку у файлі конфігурації /boot/grub/grub.cfg). Нумерація пунктів починається із "0". У grub.cfg пункти меню починаються з menuentry.
  • =saved - вибирає пункт, який було завантажено попереднього разу.
  • ="Linux Mint 14 MATE 32-bit, 3.5.0-17-generic (/dev/sda6)" - можна використовувати точну назву пункту меню (береться з grub.cfg з усіма знаками)

GRUB_TIMEOUT – відображає час у секундах, через який автоматично завантажиться вибраний за замовчуванням пункт меню.

Його параметри - від "-1" (означає, що меню відображатиметься, доки не буде обрано пункт меню для завантаження) до потрібної кількості секунд (наприклад, "10")

GRUB_HIDDEN_TIMEOUT - позначає час затримки завантаження grub2 (у секундах), щоб дати користувачеві можливість викликати меню завантаження, натиснувши Escape. Цей параметр застосовується в тому випадку, якщо на комп'ютері встановлена ​​лише Ubuntu, а вам потрібно запустити перевірку пам'яті та завантажитись з іншим ядром.

GRUB_HIDDEN_TIMEOUT_QUIET – відповідає за відображення таймера під час паузи. При значенні "true" таймер показаний не буде, "false" - відображатиметься.

GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` - відповідає за назви дистрибутива, яка відображатиметься в меню Grub2

GRUB_CMDLINE_LINUX_DEFAULT - відповідає за параметри, з якими запускаються linux-ядра при завантаженні.

Значення за замовчуванням - "quiet splash", що призводить до показу графічної заставки при запуску системи без показу будь-якої текстової інформації. Для показу текстової інформації про процес завантаження слід видалити quiet splash. Щоб побачити заставку та короткий текстовий супровід, використовується параметр "splash".

GRUB_TERMINAL=console - включає консольний режим (за замовчуванням рядок закоментований - з # на початку, що включає графічний режим). Має сенс розкоментувати рядок збільшення продуктивності.

GRUB_GFXMODE=640x480 - визначає роздільну здатність меню

GRUB_DISABLE_LINUX_RECOVERY=true - щоб уникнути появи в меню режиму Recovery, додайте (якщо немає) або розкоментуйте цей рядок.

Після редагування файлу налаштувань grub потрібно оновити /boot/grub/grub.cfg командою sudo update-grub

Ще можна настроїти фоновий малюнок у меню завантаження grub2 або змінити кольори пунктів меню, які задаються у файлі /etc/grub.d/05_debian_theme. Але я цього не налаштовував, бо мене і так все влаштовує.

Джерела:

http://forum.ubuntu.ru/index.php?topic=74165.0

http://startubuntu.ru/?p=95

http://ubuntologia.ru/grub2-recovery

http://ubuntologia.ru/grub2-settings-file

Оригінал: GRUB 2: Heal your bootloader
Автор: Mayank Sharma
Дата публікації: 10 вересня 2015 р.
Переклад: А. Панін
Дата перекладу: 16 грудня 2015 р.

Існує не так багато речей, які можуть дратувати настільки сильно, як дратує непрацездатність системного завантажувача. Саме тому ми будемо вчитися використовувати максимально можливості системного завантажувача GRUB 2, підтримуючи його в робочому стані.

Для чого це потрібно?

    GRUB 2 є найпопулярнішим системним завантажувачем, який використовується практично в кожному дистрибутиві Linux.

    Системний завантажувач є важливим програмним компонентом, який може працювати некоректно в ряді випадків.

    GRUB 2 є розширюваним та гнучким системним завантажувачем, що підтримує безліч параметрів конфігурації.


Системний завантажувач Linux під назвою GRUB 2 є якісним та гнучким програмним компонентом. Хоча цей системний завантажувач не є єдиним системним завантажувачем, що підтримує Linux, він є найбільш популярним і використовується практично у всіх широко відомих дистрибутивах. Процес функціонування системного завантажувача GRUB 2 можна розділити на дві фази. По-перше, він виводить меню з назвами всіх встановлених на комп'ютері операційних систем і дозволяє вибрати одну з них. По-друге, він завантажує ядро ​​Linux у разі вибору операційної системи на основі відповідного ядра за допомогою меню завантаження.

Очевидно, що під час використання операційної системи на основі ядра Linux ви просто не зможете обійтися без системного завантажувача. При цьому системний завантажувач є чи не найзагадковішим компонентом дистрибутива Linux. В рамках цього посібника ми познайомимо вас з деякими з можливостей даного системного завантажувача та навчимо вирішувати проблеми, пов'язані з його некоректним функціонуванням.

Найбільш важливим компонентом системного завантажувача GRUB 2 є набір з текстових файлів і кількох сценаріїв командної оболонки. Перший компонент даного набору, з яким варто познайомитись, розташований у директорії /etc/default/grub . Це текстовий файл, за допомогою якого можна встановлювати значення змінних конфігурації та інших параметрів меню GRUB 2 (зверніться до розділу "Установки меню завантаження").

Іншою важливою директорією, пов'язаною з GRUB 2 є директорія /etc/grub.d . У цій директорії розташовані всі сценарії, що формують опис кожного елемента меню. Імена цих сценаріїв повинні мати префікси, що складаються із двох цифр. Ці префікси призначені для встановлення порядку, в якому сценарії будуть виконуватися, а також порядку розташування відповідних елементів у меню GRUB 2. Насамперед здійснюється читання файлу 00_header , після чого відбувається розбір файлу конфігурації /etc/default/grub. Після цього здійснюється формування елементів меню для ядер Linux поточної системи за допомогою сценарію 10_linux. Цей сценарій створює один звичайний елемент меню для завантаження для ядра Linux та один елемент меню для відновлення системи для цього ж ядра Linux з розділу /boot.

Далі виконуються сценарії пошуку інших операційних систем, такі, як 30_os-prober і 40_custom . Сценарій os-prober створює елементи меню інших ядер та інших операційних систем, які виявляються інших розділах жорстких дисків. Він здатний розпізнати встановлені системи Linux, Windows, BSD і Mac OS X. Якщо ви використовуєте надто екзотичну для сценарію os-prober конфігурацію розділів вашого жорсткого диска, що перешкоджає розпізнаванню встановленого дистрибутива, ви можете додати опис цього дистрибутива до сценарію 40_custom (зверніться до розділу " Користувацькі елементи меню завантаження").

GRUB 2 не вимагає ручного редагування файлів конфігурації для зміни параметрів завантаження системи: натомість він дозволяє генерувати файл конфігурації /boot/grub/grub.cfg за допомогою утиліти grub2-mkconfig . Ця утиліта дозволяє здійснювати розбір сценаріїв з директорії /etc/grub.d, а також файлу конфігурації /etc/default/grub для автоматичного формування опису параметрів завантаження системи.

Відновлення працездатності системного завантажувача у графічному режимі

Переважна більшість проблем, пов'язаних із системним завантажувачем GRUB 2, може бути просто вирішена шляхом натискання єдиної кнопки програми Boot Repair. Ця витончена, проста програма має інтуїтивний інтерфейс користувача і дозволяє сканувати і розпізнавати різні типи дисків і схем дискових розділів, а також може з'ясовувати розташування і коректно ідентифікувати встановлені в рамках цих розділів операційні системи. Утиліта може працювати як на звичайних комп'ютерах з основними завантажувальними записами (Master Boot Record, MBR), так і на нових комп'ютерах з UEFI та таблицями розділів GUID (GUID Partition Table, GPT).

Найпростіший спосіб використання утиліти Boot Repair полягає у її встановленні в рамках Live-сесії дистрибутива Ubuntu. Запустіть live-версію дистрибутива Ubuntu на машині з непрацездатним системним завантажувачем та встановіть програму Boot Repair, в першу чергу додавши відповідний репозиторій PPA за допомогою команди:

Sudo add-apt-repository ppa:yannubuntu/Boot Repair

Після цього оновіть список репозиторіїв за допомогою команди:

Sudo apt-get update

Нарешті, ви можете встановити програму за допомогою команди:

Sudo apt-get install -y Boot Repair

Після закінчення процесу встановлення ви зможете запустити програму. Воно просканує ваш жорсткий диск перед відображенням інтерфейсу користувача, який складається з декількох кнопок. Для виконання запропонованих програмою дій ви можете просто натиснути на кнопку "Recommended Repair", яка дозволить виправити більшість проблем, пов'язаних із системним завантажувачем. Після відновлення системного завантажувача утиліта виведе посилання, яке слід запам'ятати. При переході за цим посиланням ви зможете ознайомитися з детальною інформацією про ваші диски, включаючи їх розділи, а також вміст важливих файлів конфігурації GRUB 2, таких, як файли з директорії /etc/default/grub і /boot/grub/grub. cfg. Якщо програмі не вдасться відновити ваш системний завантажувач, ви зможете розмістити це посилання на форумі вашого дистрибутива для того, щоб відвідувачі змогли ознайомитися зі схемою розділів вашого жорсткого диска та дати корисні поради.

Відновлення системного завантажувача

Проблеми, пов'язані із системним завантажувачем GRUB 2, можуть привести систему до різних станів. Текст, який виводиться на екран замість меню системного завантажувача, вказує на стан системи. У тому випадку, якщо система перестала завантажуватися з виводом запрошення grub>, можна зробити висновок про те, що були завантажені модулі GRUB 2, але не вдалося завантажити файл конфігурації grub.cfg. Це запрошення виводиться у повнофункціональній командній оболонці системного завантажувача, за допомогою якої ви можете виконати чимало дій, спрямованих на завантаження системи. Якщо ви бачите запрошення grub rescue> , то нескладно зробити висновок, що системний завантажувач не може виявити свої модулі, а також файли з описом параметрів завантаження системи. Однак, якщо на екрані комп'ютера виводиться лише слово "GRUB", можна зробити невтішний висновок про те, що системному завантажувачу не вдалося виявити навіть базову інформацію, яка зазвичай зберігається в основному завантажувальному записі.

Ви можете виправити ці неполадки GRUB 2, скориставшись або Live CD будь-якого дистрибутива, або командною оболонкою GRUB 2. Якщо вам пощастить, і ваш системний завантажувач виведе вітання grub> , ви зможете використовувати всю потужність вбудованої командної оболонки GRUB 2 для виправлення будь-яких помилок.

Наступні команди будуть працювати як у разі виведення запрошення grub>, так і у разі виведення запрошення grub rescue>. Команда set pager=1 дозволяє задіяти механізм прокручування тексту для запобігання його автоматичному прокручування. Також ви можете використовувати команду ls, яка дозволяє вивести список всіх видимих ​​GRUB 2 розділів жорсткого диска аналогічним чином:

Grub > ls (hd0) (hd0, msdos5) (hd0, msdos6) (hd1, msdos1)

Як ви бачите, ця команда дозволяє вивести інформацію про схему таблиці розділів жорсткого диска поряд з інформацією про розділи.

Крім того, ви можете використовувати команду ls по відношенню до кожного розділу жорсткого диска для пошуку розділу з вашою кореневою файловою системою:

Grub> ls (hd0,5)/ lost+found/ var/ etc/ media/ bin/ initrd.gz boot/ dev/ home/ selinux/ srv/ tmp/ vmlinuz

Ви можете відкинути ідентифікатор типу розділу msdos під час запису імені розділу. Також у тому випадку, якщо ви пропустите слеш в кінці імені розділу і виконайте, наприклад, таку команду, як ls (hd0,5) ви отримаєте інформацію про розділ, що включає дані про тип файлової системи, її загальний розмір і час останньої модифікації. Якщо на жорсткому диску створено кілька кореневих розділів, ви можете прочитати вміст файлу /etc/issue за допомогою команди cat з метою ідентифікації дистрибутива аналогічним чином: cat (hd0,5)/etc/issue .

Якщо припустити, що ви знайшли потрібну кореневу файлову систему в розділі (hd0,5), ви повинні переконатися, що дана файлова система містить директорію /boot/grub та образ ядра Linux з ім'ям, аналогічним vmlinuz-3.13.0-24- generic , який ви бажаєте завантажити. Тепер для завантаження системи вам залишається ввести такі команди:

Grub> set root=(hd0,5) grub> linux /boot/vmlinuz-3.13.0-24-generic root=/dev/sda5 grub> initrd /boot/initrd.img-3.13.0-24-generic

Перша команда передає системному завантажувачу GRUB 2 інформацію про розділ жорсткого диска, на якому розміщуються файли дистрибутива для завантаження. Друга команда передає йому інформацію про розташування файлу образу ядра в рамках зазначеного розділу жорсткого диска, а також інформацію про розташування кореневої файлової системи. Останній рядок дозволяє вказати розташування файлу початкового образу диска, вміст якого зберігається у пам'яті та використовується під час завантаження ядра. Ви можете використовувати функцію автозавершення, яка дозволить зберегти достатньо вашого часу та сил під час введення імен файлів ядра та початкового образу диска.

Введення даних рядків має завершуватися введенням після наступного вітання grub> команди boot , що ініціює завантаження зазначеної операційної системи силами GRUB 2.

Ваші дії повинні трохи відрізнятися, якщо ви зіткнетеся з вітанням grub rescue> . Оскільки системний завантажувач не зміг виявити та завантажити будь-який із необхідних модулів, вам доведеться завантажити їх вручну:

Grub rescue > set root=(hd0,5) grub rescue > insmod (hd0,5)/boot/grub/normal.mod grub rescue > normal grub > insmod linux

Очевидно, що як і раніше після результативного використання команди ls для пошуку кореневого розділу Linux вам доведеться відзначити цей розділ за допомогою команди set . Далі потрібно завантажити модуль normal, після чого буде здійснено повернення до стандартного режиму з вітанням grub>. Наступна команда дозволяє завантажити модуль linux у тому випадку, якщо він не був завантажений автоматично. Після завантаження цього модуля можна перейти до передачі системному завантажувачу інформації про розташування файлів образу ядра і початкового образу диска і ініціювати завантаження дистрибутива за допомогою команди boot .

Після успішного завантаження дистрибутива не варто забувати про необхідність повторної генерації файлу конфігурації GRUB 2 за допомогою команди:

Grub-mkconfig -o /boot/grub/grub.cfg

Вам також доведеться встановити копію системного завантажувача в основний завантажувальний запис за допомогою команди:

GRUB 2 та UEFI

Машини з прошивками UEFI (тобто практично всі машини, що продаються протягом кількох останніх років) додали новий рівень складності у процес діагностики проблем системного завантажувача GRUB 2. Незважаючи на те, що процедура відновлення працездатності системного завантажувача GRUB 2, встановленого на машині з прошивкою UEFI, що не значно відрізняється від процедури відновлення працездатності цього ж завантажувача на машині без прошивки UEFI, в нові версії прошивок вносяться різні зміни, які є причиною різних результатів процесу відновлення працездатності системного завантажувача.

У системах на основі UEFI вам не доведеться встановлювати будь-що в основний завантажувальний запис. Замість цього ви повинні встановити завантажувач Linux з підтримкою EFI в системний розділ EFI (EFI System Partition, ESP) і вибрати цей завантажувач як використовуваний за замовчуванням за допомогою такого інструменту, як efibootmgr в Linux або bcdedit в Windows.

На даний момент системний завантажувач GRUB 2 повинен коректно встановлюватися в процесі встановлення будь-якого з популярних дистрибутивів Linux, що дозволяє останньому успішно співіснувати з ОС Windows 8. Однак, якщо ви отримаєте в результаті непрацездатний системний завантажувач, ви зможете відновити працездатність системи з Linux за допомогою live-образу дистрибутива Linux. У процесі завантаження live-образу дистрибутива вам слід переконатися, що ви здійснюєте завантаження в режимі UEFI. Меню завантаження комп'ютера має містити два елементи для кожного зі знімних носіїв - для завантаження у звичайному режимі та в режимі UEFI. Використовуйте останній режим для організації доступу до змінних EFI за допомогою файлів директорії /sys/firmware/efi/ .

З live-оточення слід змонтувати кореневу файлову систему невдало встановленого дистрибутива таким чином, як описано в цьому посібнику. Вам також доведеться змонтувати системний розділ EFI (ESP). Якщо припустити, що цей розділ відповідає файлу пристрою /dev/sda1 , ви можете змонтувати цей розділ за допомогою наступної команди:

Sudo mount /dev/sda1 /mnt/boot/efi

Після цього необхідно завантажити модуль ядра efivars за допомогою команди modprobe efivars перед створенням оточення chroot з кореневою файловою системою невдало встановленого дистрибутива таким чином, як описано в цьому посібнику.

Тепер у випадку, якщо ви використовуєте дистрибутив Fedora, ви можете перевстановити системний завантажувач за допомогою наступної команди:

Yum reinstall grub2-efi shim

Після неї слід виконати команду для створення нового файлу конфігурації системного завантажувача:

Grub2-mkconfig -o /boot/grub2/grub.cfg

Користувачі дистрибутива Ubuntu можуть виконати цю операцію за допомогою команди:

Apt-get install --reinstall grub-efi-amd64

Після відновлення системного завантажувача слід вийти з оточення chroot, відмонтувати всі змонтовані розділи жорсткого диска та перезавантажити комп'ютер, перейшовши до меню GRUB 2.

Для деактивації сценарію з директорії /etc/grub.d вам потрібно лише прибрати біт виконання, за допомогою команди, аналогічної команді chmod -x /etc/grub.d/20_memtest86+, яка дозволяє прибрати рядок "Memory Test" з меню завантаження

Дружище, де мій GRUB?

Позитивною рисою системного завантажувача GRUB 2 є можливість переустановки при кожній необхідності. Таким чином, якщо ви втратите системний завантажувач GRUB 2, наприклад, після того, як ОС Windows замінить його на свій власний завантажувач, ви зможете відновити GRUB 2, виконавши кілька операцій в live-оточенні. Якщо припустити, що ви встановили дистрибутив у розділ жорсткого диска, представлений файлом пристрою /dev/sda5, ви можете перевстановити системний завантажувач GRUB 2, в першу чергу створивши директорію для монтування кореневої файлової системи дистрибутива за допомогою команди:

Sudo mkdir -p /mnt/distro

Після цього слід змонтувати файлову систему із цього розділу за допомогою команди:

Mount /dev/sda5 /mnt/distro

Після цього ви зможете повторно встановити системний завантажувач GRUB 2 за допомогою команди:

Grub2-install --root-directory=/mnt/distro /dev/sda

Ця команда дозволить перезаписати інформацію в області основного завантажувального запису пристрою /dev/sda, що містить файлову систему встановленого дистрибутива Linux, а також такі файли системного завантажувача GRUB 2 як grubenv і device.map.

Існує ще одна проблема, яка часто виникає при експлуатації комп'ютерів з декількома встановленими дистрибутивами. При встановленні нового дистрибутива Linux його системний завантажувач повинен отримувати інформацію про вже встановлені дистрибутиви. У тому випадку, якщо він не отримує такої інформації, ви можете просто завантажити останній встановлений дистрибутив і виконати команду:

Grub2-mkconfig

Перед виконанням цієї команди слід переконатися, що розділи з кореневими файловими системами встановлених дистрибутивів, які представлені у меню завантаження, змонтовані. Якщо дистрибутив, який ви бажаєте додати в меню завантаження, працює з файловими системами /root та /home, розташованими на окремих розділах жорсткого диска, перед виконанням команди grub2-mkconfig слід змонтувати лише файлову систему /root.

Хоча системний завантажувач GRUB 2 може визначати більшість дистрибутивів, спроба додавання в меню системного завантажувача запису для дистрибутива Fedora при роботі з дистрибутивом Ubuntu вимагає одного додаткового кроку. Якщо ви використовували стандартні налаштування в процесі встановлення дистрибутива Fedora, силами установника будуть створені розділи LVM. У цьому випадку перед викликом сценарію os-prober з комплекту поставки системного завантажувача GRUB 2 для додавання дистрибутива Fedora в меню завантаження вам в першу чергу доведеться встановити драйвер lvm2 за допомогою системи керування пакетами програмного забезпечення дистрибутива, скориставшись аналогічною командою:

Sudo apt-get install lvm2

Швидке виправлення

Якщо виконання команди grub2-install не призводить до будь-яких позитивних змін і ви не можете завантажити дистрибутив Linux, вам доведеться повністю перевстановити та переналаштувати системний завантажувач. Для виконання цього завдання можна скористатися корисною утилітою chroot, яка дозволяє тимчасово замінити кореневу директорію live-оточення на кореневу директорію встановленої системи Linux, працездатність якої необхідно відновити. Ви можете використовувати для цього Live CD будь-якого дистрибутива Linux, на якому присутній утиліта chroot . Однак, вам слід переконатися, що ви використовуєте Live CD для тієї ж архітектури центрального процесора, що і встановлений на жорсткому диску дистрибутив. Таким чином, якщо ви бажаєте використовувати утиліту chroot для відновлення працездатності 64-розрядної встановленої системи, вам знадобиться Live CD для 64-розрядних систем.

Після завантаження Live-оточення спочатку слід перевірити розділи жорсткого диска машини. Використовуйте команду fdisk -l для виведення списку всіх розділів жорсткого диска та з'ясуйте номер розділу, на якому встановлено системний завантажувач GRUB 2, працездатність якого ви бажаєте відновити.

Припустімо, що вам потрібно відновити працездатність системного завантажувача дистрибутива, встановленого на розділі жорсткого диска, представленого файлом пристрою /dev/sda5 . Відкрийте емулятор терміналу та змонтуйте цей розділ:

Sudo mount /dev/sda5 /mnt

Тепер вам доведеться змонтувати директорії, які мають бути доступні системному завантажувачу GRUB 2 для коректного виявлення інших встановлених на комп'ютері операційних систем:

$ sudo mount --bind /dev /mnt/dev $ sudo mount --bind /dev/pts /mnt/dev/pts $ sudo mount --bind /proc /mnt/proc $ sudo mount --bind /sys /mnt /sys

Тепер ви можете залишити live-оточення і перейти в оточення встановленого на розділі, представленому файлом пристрою /dev/sda5, дистрибутива за допомогою утиліти chroot:

$ sudo chroot /mnt /bin/bash

Все готове для встановлення, перевірки та оновлення системного завантажувача GRUB 2. Як і раніше, для повторної установки системного завантажувача слід використовувати команду:

Sudo grub2-install /dev/sda

Через те, що команда grub2-install не торкається файлу конфігурації grub.cfg , вам доведеться створити його вручну за допомогою наступної команди:

Sudo grub-mkconfig -o /boot/grub/grub.cfg

Ця послідовність команд має допомогти виправити проблеми системного завантажувача. Тепер на вашій машині буде встановлено нову копію системного завантажувача GRUB 2 зі списком усіх встановлених на ній операційних систем та дистрибутивів. Перед тим, як перезавантажити комп'ютер, слід залишити оточення chroot та відмонтувати всі використані файлові системи в наступному порядку:

$ exit $ sudo umount /mnt/sys $ sudo umount /mnt/proc $ sudo umount /mnt/dev/pts $ sudo umount /mnt/dev $ sudo umount /mnt

Після цього ви можете безпечно перезавантажити машину, яка має знову повернутись під контроль системного завантажувача GRUB 2, що знаходиться під вашим повним контролем!

Настройки користувача меню завантаження

Системний завантажувач GRUB 2 використовує багато конфігураційних змінних. У цьому розділі описані деякі з цих змінних, які ви, швидше за все, захочете модифікувати в процесі розгляду вмісту файлу конфігурації /etc/default/grub . Змінна GRUB_DEFAULT дозволяє вказати елемент меню завантаження, який буде вибрано за замовчуванням. як її значень можуть використовуватися числа, такі, як число 0, що відповідає першому елементу меню, а також рядок "saved" дозволяє автоматично вибирати елемент меню, використаний у процесі попереднього завантаження комп'ютера. Змінна GRUB_TIMEOUT дозволяє задати тривалість періоду очікування перед завантаженням з використанням вибраного за замовчуванням елемента меню, а змінна GRUB_CMDLINE_LINUX дозволяє задати список параметрів, який передаватиметься кожному з ядер Linux при використанні відповідних елементів меню завантаження.

Якщо змінна GRUB_DISABLE_RECOVERY має значення true , елементи меню завантаження для відновлення системи не будуть генеруватися. Ці елементи дозволяють завантажувати дистрибутиви в режимі одного користувача, в якому ви можете використовувати будь-які доступні інструменти з інтерфейсом командного рядка для відновлення системи. Ще однією корисною змінною є змінна GRUB_GFXMODE , що дозволяє встановити роздільну здатність екрана, яке буде встановлено при показі меню завантаження. Як значення цієї змінної може використовуватися будь-який опис дозволу, який підтримується вашою графічною картою.

Елементи користувача меню завантаження

Якщо ви бажаєте додати елемент у меню вашого системного завантажувача, ви повинні додати відповідний станс до сценарію з ім'ям 40_custom . Ви можете використовувати цей елемент меню завантаження, наприклад для завантаження дистрибутива Linux, встановленого на знімному диску з інтерфейсом USB. Якщо припустити, що розділ з дистрибутивом на вашому знімному диску з інтерфейсом USB представлений файлом пристрою /dev/sdb1 , а файл образу ядра vmlinuz і файл initrd знаходяться в піддиректорії кореневої директорії (/), вам доведеться додати наступний станс до файлу сценарію 40_custom:

Menuentry "Linux on USB" ( set root=(hd1,1) linux /vmlinuz root=/dev/sdb1 ro quiet splash

Для кращої сумісності ви можете використовувати ідентифікатор UUID розділу жорсткого диска замість ідентифікаторів пристрою та розділу так:

Set root=UUID=54f22dd7-eabe

Скористайтеся командою sudo blkid для отримання всіх ідентифікаторів UUID, приєднаних до системи жорстких дисків та їх розділів. Аналогічно ви можете додати в меню завантаження записи, що відповідають будь-яким ідентифікованим сценарієм os-prober, але встановленим на жорсткому диску дистрибутивам, звичайно ж, якщо ви знаєте про те, на якому диску встановлено кожен з дистрибутивів і яким шляхом знаходяться його файли образу ядра та образу початкової файлової системи.