Установлення завантажувача grub uefi ubuntu 16.04. Як полагодити GRUB2 якщо Ubuntu не хоче завантажуватися

Оригінал: 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. Однак, якщо ви отримаєте в результаті непрацездатний системний завантажувач, ви зможете відновити працездатність системи з за допомогою 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, але встановленим на жорсткому диску дистрибутивам, звичайно ж, якщо ви знаєте про те, на якому диску встановлений кожен з дистрибутивів і яким шляхом знаходяться його файли образу ядра та образу початкової файлової системи.

Для ініціалізації ядра та запуску операційної системи Linux використовується завантажувач. Це програма, яка запускається після завершення перевірки обладнання BIOS, готує обладнання до роботи, задає потрібні параметри ядра та дозволяє вибрати операційну систему. Основне завдання завантажувача дати користувачеві вибрати операційну систему для завантаження.

Раніше для завантаження Linux використовувалося кілька завантажувачів, це isolinux, lilo, grub. Але зараз найчастіше застосовується Grub або повна назва GRand Unified Bootloader. У цій статті буде розглянуто встановлення завантажувача Grub через термінал. Також ми поговоримо, як встановити grub на комп'ютер з UEFI, теж вручну.

Як я вже сказав, основне завдання завантажувача – надати можливість вибору операційної системи перед завантаженням. Не думайте, що в Windows завантажувач не використовується, там він теж є і працює, подібно до того, як працює Grub.

Завантажувач може бути встановлений у різних таблицях розділів диска. Зараз найбільш використовувані це GPT і MBR. Встановлення завантажувача Grub трохи відрізняється для кожної з цих таблиць з огляду на їх особливості. Докладніше про відмінності можна прочитати в окремій статті. Тут же я скажу, що GPT - більш нова і функціональна таблиця розділів, MBR - вже застаріла, але часто використовується.

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

GPT надає ширші можливості. По-перше, для сумісності GPT емулює сектор MBR, і ми можемо встановити GRUB туди, але такий варіант дуже ненадійний і не рекомендований. По-друге, тепер з'явилася можливість встановлення Grub на розділ диска. Ми створюємо розділ на диску розміром 1 Мб і записуємо туди те, що раніше записувалося в MBR, це робить установку завантажувача більш надійною і захищеною від збоїв.

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

Для встановлення Grub буде використовуватися команда grub-install у всіх випадках. Давайте коротко розглянемо її синтаксис та параметри. Синтаксис:

$ grub-install опції диск

Параметрів тут досить багато, але нам будуть потрібні лише деякі:

  • --compress- Стиснути файли завантажувача;
  • --install-modules=модулі- Встановити тільки ці модулі;
  • --modules- Записати ці модулі в MBR;
  • --boot-directory- Використовувати інший каталог для файлів Grub;
  • --bootloader-id- Ім'я завантажувача в меню EFI;
  • --core-compress- стискати образ, що завантажується в MBR;
  • --efi-directory- Використовувати системний розділ EFI;
  • --force- Встановити незважаючи на помилки;
  • --recheck- видалити існуючу карту пристроїв, допомагає якщо виникають помилки;
  • --removable- Встановлення grub на флешку (тільки EFI);

Основу розібрали. Тепер перейдемо до встановлення. Далі я припускатиму, що всі дії виконуються із системи, для якої потрібно встановити завантажувач або з chroot оточення цієї системи.

Установка завантажувача Grub в MBR для BIOS

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

sudo grub-install /dev/sda

sudo grub2-install /dev/sda

Утиліти grub у різних дистрибутивах можуть включати двійку, а можуть і не включати. Тут /dev/sda – ваш жорсткий диск. Тепер генеруємо конфігураційний файл, щоб автоматично визначилися встановлені операційні системи:

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

Готово. Щодо двійки тут таке ж зауваження. Якщо ви хочете встановити Grub на флешку в MBR, то тут теж немає проблем, просто примонтуйте флешку і виконайте таку команду:

sudo grub-install --root-directory=/mnt/USB/ /dev/sdb

Тут /mnt/USB – папка, куди була змотована ваша флешка, а /seb/sdb – сама флешка. Тільки тут є одна проблема, файл конфігурації доведеться робити вручну.

Встановлення завантажувача Grub у GPT для BIOS

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

Потрібний розділ можна створити в установнику будь-якого дистрибутива, якщо ви виконуєте установку в графічному інтерфейсі або за допомогою gparted. Нам потрібен розділ розміром 1 Мегабайт без файлової системи та з міткою grub_bios:

Готово. Якщо у вас немає доступу до графічного інтерфейсу, ви можете створити такий розділ через термінал. Утиліта fdisk не підтримує роботу з gpt, тому будемо використовувати gfdisk. Спочатку запустіть утиліту:

sudo gdisk /dev/sda

Щоб створити новий розділ, натисніть n і виберіть номер розділу:

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

Вибираємо кінцевий сектор розділу. За промовчанням використовуватиметься максимальний. Нам потрібний розділ розміром 1 Мб. Розмір одного сектора GPT – 512 байт, тому нам потрібен розділ розмірів 2048 секторів. Таким чином, кінцевий сектор буде 24000 з чимось.

HEX Code - це код, який скаже системі, що цей розділ потрібно використовувати для Grub, потрібно встановити ef02:

Готово, залишилося натиснути w для запису змін на диск:

sudo grub-install /dev/sda

Залишилося створити файл конфігурації grub:

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

Тепер переходимо до найскладнішого, як встановити grub efi.

Установка GRUB UEFI GPT

Установка Grub UEFI чимось схожа на встановлення в GPT, тут у нас теж буде окремий розділ, тільки цього разу не для завантажувача, а розділ EFI. Якщо у вас вже встановлена ​​Windows, то, швидше за все, вона вже існує. Цей розділ зазвичай займає 100 Мб, має файлову систему fat32 та прапор ESP. Ось так він виглядатиме:

Якщо ж такого розділу немає, ми можемо його створити за допомогою gparted. Для цього створюємо розділ із такими параметрами:

Розмір 100 Мегабайт, ім'я розділу ESP, файлова система fat32. Далі застосуйте зміни та встановіть для розділу прапор ESP:

Те саме ви можете зробити в Gdisk, тільки цього разу потрібно встановлювати HEX Code розділу ef00. Після того, як розділ був створений, підключаємо його до нашої файлової системи:

sudo mkdir /boot/efi
$ sudo mount /dev/sda2 /boot/efi

sudo apt install grub-efi efibootmgr

grub-install /dev/sda

Установка Grub efi на MBR все виглядає так само, тільки тут є кілька обмежень. Розділ ESP потрібно створювати лише на початку диска. У режимі EFI також можна встановити GRUB на флешку, і це дуже складно. Для цього використовується команда.

Незважаючи на те, що операційна система Linux займає незначну частку ринку, її різні збірки завойовують популярність своєю офіційною безкоштовністю, досить стабільною роботою, а також значною гнучкістю в налаштуваннях. Так, деякі моменти функціонують не так, як на Windows або Mac OS, а більшість програмного забезпечення створюються в першу чергу для цих двох продуктів. Але це зупиняє далеко ще не всіх.

Для роботи ОС Linux потрібне відновлення завантажувача Grub, якщо стався збій.

Хоча практично будь-яке складання Linux працює без збоїв, іноді може статися помилка завантажувача, через що стає неможливим запустити операційну систему. Чому це може відбуватися? Як відновити завантажувач Grub у Linux? Які робочі методи існують? Про все це і навіть трохи більше ми розповімо у сьогоднішній статті.

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

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

З яких причин це може статися? Переважна більшість випадків є наслідком того, що після встановлення Linux як перша система ви встановлюєте Windows в ролі додаткової. Компанія Microsoft традиційно не любить Linux, тому інсталятор Windows видаляє Grub Linux. Ця проблема може виникнути при некоректній установці самого Linux, переходу на інший дистрибутив або через перерозмітку диска.

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

Через термінал із завантажувального носія

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

  1. Вставте флешку або диск у роз'єм комп'ютера, а потім як пріоритетний для завантаження. Необхідна настройка знаходиться у розділі Boot Device Priority або First Boot Device. Щоб запустити BIOS, натисніть потрібну кнопку або їх комбінацію на клавіатурі під час увімкнення. Найбільш популярними варіантами є F2, Del, Shift+F2, F10. Щоб не розбиратися з Біосом, можна просто натиснути F11 або F12 і вибрати носій із запропонованого списку.
  2. Далі потрібно з'ясувати, на якому розділі вінчестера інстальована система, а який вказаний як завантажувач. Для цього потрібно запустити термінал (аналог командного рядка Windows), знайшовши його в меню додатків або натиснувши комбінацію клавіш Ctrl + Alt + T, або Alt + F2. У вікні, що відкрилося, вам потрібно буде вдрукувати команду sudo fdisk -l. Відразу утиліта просканує всі розділи диска і відобразить інформацію про кожного з них. Буде показано навіть інформацію про інші встановлені на комп'ютер операційні системи. Ви зможете дізнатися назву розділу, його розташування, розмір, а також тип файлової системи. За умови, що при встановленні Ubuntu ви проводили розмітку вручну, ви без проблем зрозумієте, який розділ є завантажувальним, а який - кореневим. При автоматичному розмітці орієнтуйтеся на назву Linux. Саме він і буде коренем вашої системи. Ім'я розділу зазвичай складається з абревіатури sdc чи sda та цифри з порядковим номером.
  3. Далі потрібно виконати монтування кореневої файлової системи у папку /mnt. У цьому допоможе команда sudo mount /dev/sda1 /mnt, де замість sda потрібно прописати назву вашого розділу.

Починаючи з цього етапу, відновлювати Grub у Linux можливо двома методами.

Спосіб 1

  1. Введіть команду відновлення завантажувача: sudo Grub-install -root-directory=/mnt /dev/sda.
  2. Перезавантажте Комп'ютер за допомогою sudo reboot. В результаті має з'явитися меню вибору операційної системи.
  3. Якщо в цьому меню відображається застаріла інформація, оновіть MBR-завантажувальний запис. Для цього запустіть Linux у звичайному режимі, відкрийте термінал та використовуйте команду sudo update-Grub. Якщо це не допомагає, застосуйте sudo update-Grub –output=/mnt/boot/Grub/Grub.cfg, а потім повторіть попередню.
  4. Перезапустіть комп'ютер ще раз.

Спосіб 2.

  1. Після встановлення кореня файлової системи в розділ /mnt, потрібно додатково змонтувати папку із завантажувальними файлами, а також інші компоненти взаємодії з ядром. Для цього одну за іншою виконайте команди:

sudo mount /dev/sdc2 /mnt/boot

sudo mount -bind /dev /mnt/dev

sudo mount –bind /sys /mnt/sys

sudo mount -bind /proc /mnt/proc

  1. Далі вам доведеться запустити оболонку chroot. Для цього додайте chroot /mnt /bin/bash. Перший параметр звертає увагу на кореневий каталог, а другий - на спеціальну оболонку для перетворення команд користувача.
  2. Далі необхідно застосувати команди, щоб потрапити до Ubuntu та користуватися практично всіма її додатками, крім сервісів та графічного інтерфейсу:

source /etc/profile.

  1. Тепер можна безпосередньо розпочинати відновлення Grub. Для цього потрібно скористатися кількома командами:
    • Для інсталяції завантажувача на вінчестер: sudo Grub2-install /dev/sdc (останній параметр - це назва вашого розділу).
    • Для створення нового конфігураційного файлу: sudo Grub2-mkconfig -o /boot/Grub/Grub.cfg.
    • Для оновлення меню завантаження: sudo Grub-update.
  2. Для завершення процедури вийдіть із оболонки chroot через команду exit, а також відмонтуйте раніше змонтовані розділи файлової системи:

sudo umount /mnt/dev

sudo umount /mnt/proc

sudo umount /mnt/sys

sudo umount /mnt

sudo umount /mnt/boot.

  1. Виконайте перезавантаження через reboot.

Через утиліту відновлення завантажувача

Оскільки попередній метод може бути не всім під силу, скористаємось тією особливістю Ubuntu, що вона може повноцінно працювати, будучи запущеною з флешки. Для цього ми застосуємо спеціальну утиліту boot-repair. Що потрібно зробити?

  1. Запустити Ubuntu з флешки та переконатися, що є активне інтернет-з'єднання.
  2. Знайти термінал і запустити в ньому одну за одною такі команди:

sudo add-apt-repository ppa:yannubuntu/boot-repair

sudo apt-get update

sudo apt-get install boot-repair.

  1. У меню програм знайти «Відновлення завантажувача» та увімкнути утиліту.
  2. Клікнути на кнопку «Рекомендований спосіб відновлення» та дочекатися закінчення процедури.
  3. У більшості ситуацій цих дій достатньо для нормальної працездатності завантажувача Grub Linux.

Через командний рядок при частковому доступі до файлової системи

Іноді завантажувач Grub пошкоджений не настільки сильно, що вся система не може завантажитися. Наприклад, завантажувальний розділ залишається цілим, але сама утиліта не має доступу до нього. У такому випадку відкривається програмна оболонка, чимось схожа на командний рядок, і виводиться таке повідомлення: Minimal BASH like line editing is supported. Ось за допомогою цього командного рядка можна спробувати завантажити Ubuntu.

Від вас очікується, що ви точно впевнені і знаєте, на якому вінчестері вміщена система і ядро. Наявних команд всього чотири, їх потрібно застосовувати послідовно:

  1. Щоб система відсканувала диски та розділи, вкажіть команду ls. Як відповідь ви отримаєте список жорстких дисків (наприклад hd1, hd2), а також тип файлової системи на них (наприклад, msdos1, msdos2). Наприклад, вважатимемо, що завантажувальний розділ розташований /dev/sda1.
  2. Далі потрібно вибрати той розділ, з яким ви хочете працювати. У нашому випадку команда записуватиметься так: set root=(hd1,1).
  3. Завантажте звичайну оболонку Grub: insmod ext2, insmod normal, normal.
  4. Запустіть ядро ​​Linux: linux /boot/vmlinuz.
  5. Завантажте систему boot.
  6. Після запуску Ubuntu у звичайному режимі відкрийте термінал та закінчіть процедуру відновлення завантажувача наступними командами:

sudo Grub2-install /dev/sda

sudo Grub2-mkconfig -o /boot/Grub/Grub.cfg.

  1. Перезавантажтеся та радійте нормальній роботі.

Висновок

Хоча на перший погляд відновлення завантажувача Grub в Ubuntu може здатися чимось дуже складним, і багато користувачів Linux при подібній проблемі відразу ж почнуть встановлювати заново операційну систему, за наявності нормальної інструкції все робиться дуже просто і без будь-яких ускладнень. Ми сподіваємось, що змогли допомогти вам уникнути втрати важливої ​​інформації. Збережіть сторінку в закладки та поділіться цією інформацією з вашими друзями та знайомими. У коментарях залишайте свої запитання.

Завдання: Є комп'ютер з двома системами: Windows 7 і Ubuntu 14.04
Необхідно оновити версію вінди, до 10 а убунти – до 16.04
Для початку мені треба було встановити ліцензійну вінду замість того, що було й оновити її до останньої версії – десятки.
Образ сімки був скачав із сайту Microsoft, залитий на флешку за допомогою вільної та безкоштовної програми rufus, З цієї флешки вінда була успішно встановлена ​​і потім оновлена ​​до десятки.
Тепер постало завдання відновити GRUB, оскільки вінда, природно, затерла завантажувач, встановивши свій, який знати не хоче ні про які лінукси:) Завдання ускладнене тим, що сучасні материнські плати містять не BIOS, а UEFI - більш сучасну локальну операційну систему. І так, як раніше, тупо в лоб GRUB не встановиш.

Небагато погуглив це питання, я знайшов рішення у вигляді програми Boot-Repair.
Вона сканує диски на предмет операційних систем та встановлює GRUB, з формуванням потрібного меню та всіма необхідними налаштуваннями.
Є два шляхи роботи з цією програмою:
Перший шлях - завантажитися з флешки або LiveCD диска убунти, встановити та запустити цю програму:
Відкрити термінал (Ctrl+Alt+T), скопіювати та виконати наступні команди:
sudo add-apt-repository ppa:yannubuntu/boot-repair
Потім оновити джерела:
sudo apt-get update
Наступна команда встановить Boot-Repair:
sudo apt-get install -y boot-repair
Після цього програму можна запустити звичайним для Ubuntu способом через системне меню.
Другий шлях – скачати образ диска з цією програмою, залити його на флешку або CD, завантажитися з нього та відновити завантажувач. Я вибрав другий варіант як більш практичний. Мало де він ще може знадобитися. Скачав і залив його на флешку тим самим rufus-ом.
Не знаю, як там із LiveCD, але якщо вантажитися з флешки на материнських платах із UEFI, треба вантажитися в режимі UEFI, інакше програма відмовиться відновлювати GRUB. А ось тут якраз чекає можливий підводний камінь. Замість звичного вибору мови та параметрів завантаження, на екрані бачимо меню GRUB на чорному тлі з рядком єдиного варіанту старту.
Якщо вантажитися з флешки з Ubuntu, маємо меню з двома варіантами:
- Завантаження Ubuntu без інсталяції
- Інсталяція Ubuntu.
У всіх цих випадках у мене при виборі будь-якого пункту я мав чорний екран із зависанням. Тобто система не змогла підібрати відеорежим і стала в ступор.
Вирішується ця проблема наступним чином: Треба вибрати потрібний пункт меню в GRUB-і, натиснути клавішу "e", так ми потрапляємо в редактор рядка запуску, потім в кінці рядка, який найдовший, перед "--" треба дописати параметр nomodeset. Після цього натиснути F10. Система завантажиться у спрощеному графічному режимі з англійською за промовчанням.
Програма пропонує рекомендовані параметри роботи. Найчастіше цього достатньо. Просунуті користувачі можуть у розширених параметрах вибрати пріоритет завантаження операційної системи та час очікування вибору.
У процесі необхідно виконати все, що вимагає програма. Процес простий та наочний. Після закінчення відновлення ви побачите повідомлення, що завантажувач відновлено, і ви можете перезавантажити комп'ютер.

Оригінал: How To Repair Grub Boot Loader On Ubuntu Linux 16.04 /15.10 / 15.04
Автор: Aun
Дата публікації: 21 червня 2016 року
Переклад: А. Кривошей
Дата перекладу: жовтень 2016 р.

Grub (GRand Unified Bootloader) – завантажувач за замовчуванням для більшості систем Linux/Unix. Він дозволяє завантажувати різні операційні системи (ви можете встановити кілька систем на свій комп'ютер), або завантажувати різні версії ядра, якщо ви працюєте в Linux. При будь-якому пошкодженні цієї програми ви отримаєте повідомлення про помилки в процесі завантаження, і в результаті, швидше за все, не зможете завантажити свою операційну систему. Як правило, єдиним способом відновлення нормальної роботи у такому випадку є відновлення або переустановка системного завантажувача Grub. У разі правильних дій ця процедура дозволяє уникнути втрати даних. Сьогодні ми навчимося відновлювати/перевстановлювати завантажувач Grub у системі Ubuntu. Описувані далі дії виконували в Ubuntu 16.04, але повинні також працювати в будь-яких свіжих версіях Ubuntu. Для виконання нашого завдання ми будемо використовувати добре відому утиліту "Boot Repair".

Установка Boot Repair в Ubuntu

Boot Repair найчастіше використовується для виправлення помилок, пов'язаних із завантажувачем Grub. Спочатку необхідно завантажити комп'ютер з Live CD/DVD/ USB для Ubuntu (якщо ви шукаєте спосіб відновлення Grub, значить з великою ймовірністю ви вже не можете завантажити свою встановлену операційну систему).

$ sudo add-apt-repository ppa:yannubuntu/boot-repair

Після додавання PPA оновіть список пакетів:

$ sudo apt-get update

Тепер ви можете встановити Boot Repair:

$ sudo apt-get install -y boot-repair

Після успішного завершення інсталяції запустіть Boot Repair з Applications > Boot Repair:

Використання Boot Repair для виправлення помилок Grub

Після запуску Boot Repair ви побачите стартове вікно програми:

Найперша опція (Recommended repair) може виправити помилки Grub, клацніть її, і вона запустить процес відновлення/переустановки, показаний на скріншоті нижче.

Згідно з інструкціями, наведеними на скріншоті, відкрийте термінал і виконайте такі три команди:

Після завершення виконання цих команд натисніть “Forward”, щоб перейти до наступного етапу відновлення. Ось що ви побачите на наступному етапі:

Відповідно до інструкцій виконайте наведені нижче три команди у правильному порядку. Під час цього етапу з'явиться вікно із запитом підтвердження видалення Grub 2, виберіть "Yes".

$ sudo dpkg --configure -a $ sudo apt-get install -fy $ sudo apt-get install -y --force-yes grub-pc linux-generic

Клацніть “Forward” після завершення процесу нижче скріншот наступного етапу.

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

$ sudo apt-get install -y --force-yes grub-pc linux-generic

Тепер необхідно почекати пару хвилин для виконання необхідних операцій, і ви повинні побачити наведене нижче повідомлення:

Перезавантажте систему і ви повинні побачити меню робочого завантажувача.

Висновок

Непрацездатність Grub може бути викликана різними причинами, особливо якщо у вас встановлено кілька операційних систем, при їх оновленні чи встановленні можуть виникати різні помилки. Тому корисно мати під рукою таку чудову та безкоштовну програму для вирішення проблем із завантажувачем.

Поділитися