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

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

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



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

sudo grub-install /dev/sda



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

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

sudo update-grub

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

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 використовується завантажувач. Це програма, яка запускається після завершення перевірки обладнання 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/sda3

Залишилося створити файл конфігурації 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 на флешку, і це дуже складно. Для цього використовується команда:

grub-install --boot-directory=/mnt/sdb2/boot --efi-directory=/mnt/sdb1 --target=x86_64-efi --removable

Розглянемо опції: -boot-directory- Задає папку з файлами завантажувача на флешці, -efi-directory— папка, куди змонтований розділ efi, -target- архітектура цільової системи та -Removableкаже, що це встановлення на знімний носій. З UEFI все. Після перезавантаження та вибору меню EFI пункту пов'язаного з Grub, ви отримаєте доступ до звичного меню grub і зможете вибрати потрібний параметр.

Висновки

Тепер встановлення Grubне викличе у вас проблем. Ми розібрали не тільки як встановити Grub2 в MBR, але і в EFI. Крім того, всю наведену інформацію ви можете використовувати для відновлення Grub. Так ви будете краще розуміти, що відбувається під час відновлення. А налаштування параметрів та ручне створення конфігураційного файлу ми розглянемо в одній із наступних статей.

Сьогодні я хотів би показати вам спосіб, як можна відновити GRUB 2 після установки або пер установки Windowsна комп'ютер із Linux.

Якщо ви на своєму комп'ютері використовуєте дуалбут з Windows і Linux, то вже знаєте, що під час установки ОС для того, щоб було менше метушні, краще встановлювати спочатку а потім тільки , Debian або що ви там бажаєте встановити. Пов'язано це з тим, що Windows не бачить інших операційних систем, крім своїх і поверх завантажувача GRUB записує в MBR свій завантажувач. Відповідно, якщо ви встановите спочатку Linux, а потім Windows, то в результаті не зможете завантажити Linux, тому що його просто не буде в списку завантаження. Але що ж робити якщо вам все ж таки необхідно перевстановити Windows або просто встановити її на комп'ютер з Linux? Не встановлювати заради цього і Linux? Ні. Просто після того, що ви зробите потрібно буде відновити завантажувач GRUB.

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

У мене на один віртуальний жорсткийдиск було встановлено Ubuntu 14.04 і Windows 7. І ось мені захотілося спробувати developer версію Windows 10. Я вирішив встановити її поверх сімки. Як і належить, після всіх маніпуляцій Windows 10 запрацювала, а Ubuntu не запускалася. Так як Ubuntu мені потрібна була для роботи, я вирішив відновити затертий GRUB.

Відновлення GRUB 2

Спочатку потрібно завантажитися з LiveDVD. Коли система завантажиться, відкриваємо термінал (Ctr+Alt+T) та дивимося структуру розділів за допомогою команди:

Sudo fdisk -l


У мене, як видно з висновку команди, диск розділений на 6 розділів: два NTFS для Windows, Extended (розширений) і три позначені як Linux для Ubuntu. Щоб встановити GRUB, необхідно примонтувати кореневий розділ Ubuntu — мій sda5:

Sudo mount /dev/sda5 /mnt

І щоб записати GRUB у завантажувальний запис, потрібно виконати в терміналі команду:

Sudo grub-install --root-directory=/mnt /dev/sda

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

Sudo reboot

GRUB відновлено. Але лишився один момент. Зараз на віртуальній машині була встановлена ​​Windows 10, але в меню завантажувача, як і раніше, вона відображалася як сімка, через що при спробі її запуску вискакувала помилка. Щоб виправити це досить просто завантажиться в Ubuntu (не LiveDVD) і через термінал оновити завантажувач:

Sudo update-grub

Ось так просто можна відновити GRUB після інсталяції Windows

Попередній запис
Наступний запис