Встановити grub. Ліки для GRUB. Редагування завантажувача. Встановлення GRUB за допомогою grub-install

Не один десяток нових користувачів, відмінних від Windows, з неабиякою часткою сумніву та скептицизму зустрічають фразу «початковий завантажувач» у наші дні. І тому є абсолютно логічна причина: більшість новачків до свого переходу до використання інших, менш поширених на ринку операційок, у повсякденному житті використовували ту саму Windows. У ній цей завантажувач реалізований максимально примітивно та прозоро. І хоч це додає зручності для рядового користувача, проте разом з тим і урізує функціональні можливості вже і без того найбільш популярної та універсальної ОС. Тому всім тим, хто вирішив звернути увагу на інші продукти IT-індустрії, обов'язково слід ознайомитися з універсальним завантажувачем GRUB, що надалі відчутно допоможе в роботі одночасно з кількома ОС, встановленими на одному комп'ютері.

Універсальний інструмент для не універсальних систем

Насамперед почнемо розбиратися з найменування GNU GRUB. Ця абревіатура з англійської перекладається як "головний уніфікований завантажувач". Його творцем є некомерційна організація «Проект GNU», яка прославилася в IT-сфері своїм програмним забезпеченням, що вільно розповсюджується. Сам же GRUB за своєю суттю представляє меню вибору завантаження потрібної користувачеві ОС із цілого переліку підтримуваних систем:

  • Linux.
  • FreeBSD.
  • Solaris.

При цьому GRUB зможе працювати навіть із Windows. Однак для запуску подібних систем, які не підтримуються безпосередньо цим початковим завантажувачем, є свої особливі нюанси, які ми вивчимо трохи пізніше у всіх деталях та подробицях.

Шлях розвитку технології

Популярність GRUB, що безперервно зростала, була основною причиною, що спонукає неухильно розвивати і вдосконалювати завантажувач надалі. Найперша версія завантажувача, що називалася як GRUB Legacy, досі чудово справляється із завданнями уніфікованого завантажувача для UNIX-подібних систем. Широка підтримка серйозних компаній (на зразок RedHat і Novell) та серверних дистрибутивів забезпечили їй ще тривалий термін існування загалом.

Однак навіть ця обставина абсолютно ніяк не вплинула на подальше вдосконалення завантажувача, завдяки чому користувачі отримали останню на даний момент часу версію GRUB 2. Будучи переписаним з чистого рядка, GRUB 2 навряд чи має хоч чимось спільним із застарілим GRUB Legacy, крім самої назви . Сьогодні, будучи за умовчанням операційній системі Ubuntu, що використовується з версії 9.10, GRUB другий ревізії завдяки своїй більш досконалій і потужній структурі повністю зупинив будь-яку подальшу розробку вже і так відмінно себе зарекомендувала в минулому Legacy.

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

  • Скриптова підтримка (циклів, умов, змінних та функцій).
  • Графічний інтерфейс додає можливість гнучких змін зовнішнього вигляду завантажувача під індивідуальний смак користувача (GRUB 2 може бути змінений від чорно-білої таблиці до стильного різнобарвного вікна).
  • Можливість динамічного підвантаження модулів. Це дозволить розширювати функціонал не так на складальному етапі, а безпосередньо під час виконання.
  • Сумісність із різними архітектурами.
  • Додано підтримку завантаження Mac OS.
  • Додано стабільну роботу з такими файловими системами, як: FAT16, FAT32, NTFSбудь-яка версія ext, XFSі ISO
  • Кросплатформовий тип установки дасть можливість інсталювати GRUB2 з іншої архітектури
  • Введення безпечного режиму у разі виникнення проблемних ситуацій.
  • Виправлені помилки від старої GRUB Legacy, які спочатку не могли бути зафіксовані через вимоги

Усі чули про LILO?

Зрозуміло, не єдиним лише GRUB"ом обмежується вибір користувачів серед завантажувачів ОС. Подібним аналогом є LILO - початковий завантажувач Linux (LInux LOader), який досі не втрачає повністю свою актуальність. Однак на користь GRUB слід врахувати кілька відмінних особливостей, якими прямий конкурент поки що похвалитися виразно не може:

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

Єдиною загальною особливістю обох завантажувачів є необхідність кожного разу компілювати всі зміни в меню. Функція автоматичного збереження здавна була відсутня у фірмовому завантажувачі Linux. GRUB 2 також не може похвалитися такою зручною фічею. Але навіть з огляду на цей незручний для повсякденного використання нюанс, LILO по кількох пунктах програє своєму конкуренту, завдяки чому той набуває все більшого поширення серед домашніх комп'ютерів користувачів.

Установка GRUB: всі нюанси та подробиці процесу

З самого початку переконайтеся, що у вас є встановлена ​​Ubuntu, або є її завантажувальний диск (LiveCD). Запустивши систему, необхідно викликати термінал поєднанням клавіш Ctrl+Alt+F2, після чого прописати у ньому такі команди:

Sudo add-apt-repository ppa:cjwatson/grub,

Sudo add-get update && sudo add-get install grub2,

Sudo update-grub2.

І навіть якщо у вас не встановлена ​​Ubuntu, але є LiveCD, то процедура залишається та сама з однією лише крихітною різницею. Завантажившись саме з цього, виберіть опцію "Спробувати Ubuntu" - так ви запустите систему без будь-яких змін на своєму комп'ютері. Після цього продовжуйте встановлювати завантажувач GRUB за тією самою схемою з етапу виклику терміналу.

Перевірити встановлену версію завантажувача можна за допомогою команди grub-install -v, а також безпосередньо при завантаженні Ubuntu.

Алгоритм запуску GRUB

У міру завершення роботи GRUB Install завантажувач спочатку змінює код MBR на свій власний. MBR - це сектор, що містить головний завантажувальний запис (від англ. містить:

  • код основного завантажувача (446 байт);
  • таблицю розділів з описом як основних, і вторинних розділів жорсткого диска (64 байти).

Через малий обсяг сектора MBR, запуск GRUB укладається у два умовні етапи:

  1. У MBR розміщується посилання до конфігураційного файлу (який може перебувати у будь-якому жорсткому диску, на розсуд самого користувача). Саме по ній і визначатиметься весь завантажувальний етап, що починається на другому етапі.
  2. Їх конфігураційного файлу враховуються всі налаштування та дані, необхідні для роботи GRUB. Якщо ж на другому етапі конфігураційний файл не було знайдено, процес завантаження буде припинено і користувачеві вже доведеться вручну вибирати завантажувальну конфігурацію з командного рядка.

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

Найчастіше використовувані консольні команди

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

КомандиОписПриклад введення в консоль
lsУніверсальна команда для роботи зі списками жорстких дисків та розділів. Може використовуватися для виведення вмісту папки.ls /boot/grub
Її використання дасть повну інформацію абсолютно про будь-який розділ. При цьому буде вказано тип файлової системи на ньому, його мітка, UUID, а також дата внесення останніх змін.
catВиведення інформації про вміст конкретного файлу.cat /шлях/ім'я_файлу
linuxАналог kernel-команди GRUB із старої-доброї версії Legacy, що дозволяє завантажувати вказане ядро ​​Linux.

linux файл_ядра

опція1 = значення

опція2 опція3

chainloaderПередача контролю завантаження іншому завантажувачу ланцюжком. Завантажувач шукатиметься виключно у розділі, який заданий як root (зрозуміло, із зазначенням конкретного виконавчого файлу).

chainloader /шлях/ ім'я_файлу

rootУ разі використання команди без будь-яких параметрів користувач отримає інформацію про root-розділ, а також про тип файлової системи на ньому.root
Рідше (через ймовірність некоректної роботи) використовується для перенесення root на інший розділ.

*,* - номер диска та номер розділу на ньому відповідно

setНайчастіше завдяки своїй стабільності та працездатності використовується для перепризначення root-розділу на диску.

set root = (hd *, *)

*,* - номер диска та номер розділу на ньому відповідно

search

Команда пошуку розділу UUID, мітці або конкретно заданому файлу. Для встановлення пошукових параметрів використовуються такі ключі:

  • u (або --fs-uuid) – пошук розділу по UUID;
  • l (або --label) - пошук за позначкою розділу;
  • f (або --file) - пошук за певним файлом;
  • n (або --no-floppy) - перепустка при перевірці флоппі-дисковода;
  • s (або --set) - встановити знайдений розділ як значення заданої змінної.

Команда стане в нагоді у випадку, якщо нумерація дисків і розділів "полетить", через що команда set root або приведе в нікуди, або в той розділ не того диска.

search -u uuid_потрібного_розділу

search -l мітка розділу

search -f /шлях/ім'я файлу

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

help s – виведення довідки на всі команди, що починаються на s.

help set – відображення довідки про команду set.

terminal_output.consoleПеремикання на чорно-білу кольорову гаму відображення.terminal_output.console
background_image

Зміна фонового зображення у реальному часі. Допомагає лише у підборі такого варіанту оформлення шрифтів, щоб вони були помітні на заданому тлі.

Зверніть увагу: команда не змінює налаштувань оформлення - зображення залишається на тлі лише на поточному сеансі до наступного вимкнення.

background_image /шлях/ім'я_файлу

bootЗавантажити комп'ютер.boot
rebootПерезавантажити комп'ютер.reboot
Вимкнути комп'ютер.halt

Післяустановний GRUB: налаштування та корисний у роботі софт

Основним конфігураційним файлом у GRUB2, на відміну від попередньої версії Legacy, є не /boot/grub/menu.lst, а вже /boot/grub/grub.cfg.Однак безпосередньо його редагувати безглуздо - він генеруватиметься з кожною збереженою зміною у файлі налаштувань /etc/default/grub та в директорії скриптів /etc/grub.d.

У /etc/default/grubналаштування в основному обмежено зміною стандартного пункту завантаження та/або часу показу меню:

  • За перший пункт змін відповідає параметр GRUB_DEFAULT, значенням якого позначається номер пункту меню завантаження. Вибираючи будь-який інший пункт, користувач повинен знати його черговість із загального списку (для цього потрібно переглянути вміст /boot/grub/grub.cfgі знайти по рахунку потрібний запис). При цьому не варто забувати правила нумерації: першому пункту надається значення 0, другому – 1, третьому – 2 тощо.
  • За затримку відображення меню завантаження відповідає параметр GRUB_TIMEOUT, чиє значення в лапках позначає кількість секунд, протягом яких ця заставка з'явиться. У редагуванні цього параметра є одна хитра особливість: виставивши значення "-1", заставка висітиме рівно доти, доки користувач не вибере будь-який пункт.

Набір скриптів у /etc/grub.dзнаходять на комп'ютері всі встановлені системи та ядра, формуючи завантажувальне меню grub.cfg. За пошук ядер та інших ОС відповідно відповідають два основні: 10_linux та 30_os-prober. Файл 40_custom дозволяє змінити GRUB шляхом додавання власних пунктів завантаження, що корисно для роботи з особливими типами запуску системи (зверніть увагу, що за будь-яких змін він повинен закінчуватися порожнім рядком, інакше останній пункт завантаження з усіх запропонованих банально не буде відображено).

Однак ще більш простий спосіб відредагувати GRUB у системі Ubuntu – утиліта Grub-Customizer. Завдяки своїй простоті та інтуїтивно зрозумілому інтерфейсу, це найкращий варіант для налаштування завантажувача, що найбільше підходить недосвідченим новачкам. Для встановлення запускаємо термінал (Ctrl+Alt+T), потім по черзі вводимо у ньому такі команди:

Sudo add-apt-repository ppa:danielrichter2007/grub-customizer,

Sudo add-get update,

Sudo add-get install grub-customizer.

І хоч переклад програми Grub-Customizer залишає бажати найкращого виконання, розібратися в ній дуже легко.

  • List configuration- При завантаженні системи. Тут здійснюється зміна черговості його пунктів.
  • Основні налаштування- Вибір системи, що завантажується за умовчанням, а також визначення часу очікування.
  • Зовнішній вигляд – редагування зовнішнього оформлення завантажувального меню.

Крім всього розмаїття налаштувань, користувачу обов'язково варто звернути увагу і на софт для роботи з GRUB, що відмінно зарекомендував себе, налаштування і діагностика якого стане істотно комфортніше:

  • Super Grub Disk- простий та зручний інструмент для швидкого відновлення завантажувача. При цьому вміє працювати не тільки з GRUB і LILO, але навіть і з Windows. Запускається з CD, флешки або дискети.
  • GParted- Редактор розділів дискових розділів, що запускається безпосередньо з CD. З її допомогою можна проводити такі операції з розділами та файловими системами на них, як: створення, видалення, зміна розміру, перевірка, переміщення та копіювання.
  • SystemRescueCD- дистрибутив Linux, спеціально призначений для аварійного відновлення.
  • TestDisk- утиліта, що дозволяє діагностувати та відновлювати як окремі розділи, так і завантажувальні диски повністю.

Як завантажувач впорається з Windows?

Безпосередньо, на жаль, GRUB аж ніяк не може завантажувати Windows x86 (64-бітна версія також не виняток), через що доводиться створювати відповідний ланцюговий механізм запуску. Для цього у конфігураційному файлі grub.cfgнеобхідно додати кілька рядків певних команд:

Title Windows,

Rootnoverify (hd*,*),

Chainloader +1,

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

  • rootnoverify (hd*,*)- той самий аналог set root. Вона інформує GRUB про розташування розділу, на якому знаходиться наступна частина завантажувального коду, проте не монтує його (з тієї ясної причини, що для GRUB це зробити неможливо). Зверніть у черговий раз увагу, що частина (hd *, *)- це номер диска та номер розділу відповідно, на якому інстальовано Windows.
  • makeactive- команда надає зазначеному кореневому розділу статус завантажувального.

Тепер та сама команда chainloader +1,яке передає весь подальший контроль завантаження безпосередньо завантажувачу Windows.

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

Трапляється так, що на жорсткому диску встановлена ​​не одна, а дві або навіть більше версій Windows. І тоді здійснити стабільний запуск без додаткових команд приховання/показу ( hide/unhide) розділів просто неможливо. Суть така, що й у конфігураційному файлі GRUB прописано приховування будь-якого розділу накопичувача, то Windows банально зможе прочитати. А якщо розділ видимий, то з нього можна буде завантажитися відповідно.

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

Title Windows,

Unhide (hd0,1),

Rootnoverify (hd0,1),

Chainloader +1,

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

Перевстановлення GRUB на випадок критичних неполадок

Навіть у разі технічних неполадок відновити GRUB зовсім нескладне завдання. Для початку завантажуємо інсталяційний LiveCD, відкриваємо термінал поєднанням клавіш CTRL+ALT+T.

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

  • sudo grub-install /dev/sda – установка GRUB безпосередньо в MBR (sda – завантажувальний диск);
  • sudo update-grub - пошук інших завантажувальних записів на жорсткому диску (наприклад, Windows).

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

Питання захисту від зациклювання перезавантаження

Необхідність у подібній інтегрованій у завантажувач GRUB системі захисту з'являється тоді, коли розміри логів, розташованих у каталозі /var/log, через неконтрольований запис інформації в них зростають до неприпустимих обсягів. У системі, що нормально працює, передбачені спеціальні сервіси, що архівують і підчищають ці логи в автоматичному режимі. Таким чином, у більшості випадків користувачеві абсолютно не потрібно витрачати час, контролюючи їх обсяг.

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

Саме від цього катастрофічного становища і рятує інтегрована в GRUB система захисту від циклічних перезавантажень, виведення меню GRUB, що "зависло", чекає явного втручання користувача. Сам захист орієнтується значення змінної recordfail, прописаного в скрипті /boot/grub/grub.cfg. Під час кожного завантаження вона встановлюється як recordfail=1, а на фінальній завантажувальній стадії скидається до recordfail=0. І якщо саме такого скидання не відбулося, то автоматичне завантаження повністю запобігається та активується той самий захист GRUB.

Для цього в /etc/defaul/grub знаходимо змінну GRUB_RECORDFAIL_TIMEOUTі присвоюємо їй значення в ту кількість секунд, протягом яких меню GRUB чекатиме втручання користувача у разі відсутності скидання recordfail з 1 до 0. Після чого зберігаємо зміни командою sudo update-grub, відключивши цим захист від зацикленої перезавантаження.

Кому це може бути корисним? Тільки для станцій та серверів, у яких відсутня клавіатура для введення-виведення інформації. Без неї, у разі подібних проблем, завантаження системи взагалі неможливе. Випадки зациклювання завантаження не так вже й поширені і виникають в основному або через проблеми з харчуванням, або через проблеми в програмному забезпеченні.

Деінсталяція GRUB та повернення до Windows: швидко, просто та безболісно

Якщо виникне питання "Як видалити GRUB і залишити завантажувач іншої операційної системи?", то в першу чергу користувачеві знадобиться її інсталяційний диск/флешка. Розберемо все на конкретному простому прикладі: користувач видаляє зі свого комп'ютера Linux, залишаючи в результаті одну лише Windows, але при цьому не може її завантажити через помилку Grub error. Для повного вирішення проблеми необхідно відновити завантажувач Windows x86/64 bit:

  1. Завантажуємося з установчого накопичувача, попередньо виставивши його на першому пріоритеті при завантаженні в BIOS
  2. Завантажившись із настановного носія, вибираємо розділ відновлення системи.
  3. З списку інструментів, що з'явився, вибираємо командний рядок, в якому пропишемо по черзі наступні команди:
  • BOOTREC.EXE/FixBoot.
  • BOOTREC.EXE/FixMbr.

Оскільки видалити GRUB можна протягом кількох дій, то після всіх успішно проведених операцій перезавантажуємо комп'ютер і без проблем працюємо вже в Windows-системі.

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

Ubuntu, як і багато інших дистрибутивів Linux як завантажувач системи використовують GRUB2. Якщо GRUB2 "ламається", наприклад, якщо ви встановите Windows після встановлення Ubuntu, або при перезаписі MBR - завантажити Ubuntu ви не зможете.

GRUB2 можна запросто полагодити за допомогою Live CD Ubuntu або USB-флешки. Цей процес відрізняється від відновлення завантажувача GRUB Legacy на старих дистрибутивах Linux.

Наведений нижче процес повинен працювати з усіма версіями Ubuntu. Він був протестований на версіях Ubuntu 16.04 та Ubuntu 14.04.

Спосіб із використанням графічного інтерфейсу: Boot Repair###

Boot Repair- Додаток з графічним інтерфейсом, за допомогою якого можна полагодити GRUB2 всього одним клацанням миші. Ідеальне рішення для більшості користувачів.

Якщо у вас є носій, з якого ви встановлювали Ubuntu, вставте його в комп'ютер, виконайте перезавантаження та завантажтеся зі змінного носія. Якщо у вас немає носія, завантажте Live CD Ubuntu і запишіть його на диск або створіть завантажувальну флешку USB .

При завантаженні натисніть «Спробувати Ubuntu» (Try Ubuntu), щоб завантажити працездатне оточення робочого столу.

Перед тим, як продовжити, переконайтеся, що у вас працює підключення до інтернету. Можливо, потрібно вибрати мережу Wi-Fi та ввести пароль.

Відкрийте термінал із Dash та виконайте такі команди, щоб завантажити та встановити Boot Repair:

Sudo apt-add-repository ppa:yannubuntu/boot-repair sudo apt-get update sudo apt-get install -y boot-repair boot-repair

Boot Repairавтоматично просканує систему після запуску команди boot-repair. Після цього натисніть кнопку Recommended repair для відновлення GRUB2 .

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

Boot Repair почне працювати. Можливо, з'явиться запит відкрити термінал та скопіювати/вставити декілька команд.

Просто дотримуйтесь інструкцій на екрані. Виконайте всі інструкції Boot Repairі клацніть Forward, щоб перейти до наступного екрана. Утиліта проведе вас через усі необхідні дії для відновлення.

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

Спосіб з використанням терміналу

Якщо ж ви не боїтеся «забруднити руки», ви можете полагодити систему через термінал. Вам потрібно завантажитися з Live CD або флешки USB, так само, як у способі, описаному вище. Переконайтеся, що версія Ubuntu на диску збігається з версією на комп'ютері. Наприклад, якщо у вас встановлено Ubuntu 14.04, слід використовувати Live CD Ubuntu 14.04.

Після завантаження системи відкрийте термінал. Визначте розділ диска, на якому встановлена ​​Ubuntu за допомогою однієї з наступних команд:

Sudo fdisk -l sudo blkid

Нижче наводиться висновок обох команд. У разі команди fdisk -l розділ Ubuntu можна визначити за словом Linux в колонці System. У разі використання команди blkid розділ визначається за використання файлової системи ext4.

Якщо на комп'ютері є кілька розділів Linux у форматі ext4, зверніть увагу на їх розмір та порядок, в якому вони представлені у списку.

Виконайте такі команди для монтування розділу Ubuntu в /mnt/ubuntu , замінивши /dev/sdX# на ім'я пристрою, на якому встановлено розділ Ubuntu, визначений вище:

Sudo mkdir /mnt/ubuntu sudo mount /dev/sdX# /mnt/ubuntu

На прикладі вище розділ Ubuntu знаходиться /dev/sda1 . Це перший розділ на першому жорсткому диску.

Важливо!Якщо у вас є окремий розділ завантаження, пропустіть команду вище і монтуйте розділ завантаження в /mnt/ubuntu/boot . Якщо ви не знаєте, чи є у вас окремий розділ, то швидше за все його немає =).

Виконайте наступну команду для повторного встановлення GRUB2 з Live CD, замінивши /dev/sdX на ім'я жорсткого диска вище. Не вказуйте номер. Наприклад, якщо ви використовували вище /dev/sda1 , просто введіть /dev/sda .

Sudo grub-install --boot-directory=/mnt/ubuntu/boot /dev/sdX

Виконайте перезавантаження, Ubuntu має нормально завантажитись.

Для отримання детальної інформації про те, як використовувати команду chroot для отримання доступу до пошкоджених системних файлів Ubuntu та відновлення GRUB2, дивіться вікі-сторінку Ubuntu (англійською мовою).

Відомий тепер як GRUB Legacy. Якщо вам необхідно відновити GRUB Legacy, наприклад, оскільки у Вас стоїть версія Ubuntu старше 9.10, то вам необхідно прочитати .

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

На будь-якому завантажувальному вінчестері є так званий Головна завантажувальний запис (англ. master boot record, MBR), до якої звертається BIOS під час завантаження комп'ютера. У цю область завантажувач системи має записати інформацію про основні файли, які зберігаються вже на розділах вінчестера.

Щоразу під час встановлення або відновлення систем від Microsoft завантажувачі Linux замінюються і їх необхідно заново інсталювати.

Відновлення за допомогою LiveCD/USB

Перший спосіб

термінал

Sudo fdisk -l

З таблиці бачимо, що Linux стоїть (у разі) розділі /dev/sda1

Тепер підключимо цей розділ в /mnt наступною командою (стежимо за пунктуацією, особливо за пропусками між кодами):

Sudo mount /dev/sda1 /mnt

Потім для запису grub в MBR введіть наступну команду:

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

Якщо потрібно тільки відновити MBR диска (наприклад, після переустановки Windows), то цього достатньо.

Якщо потрібно оновити і меню grub (наприклад, після інсталяції Windows), потрібно зробити:

Sudo update-grub --output=/mnt/boot/grub/grub.cfg

Відновлення закінчено!

Відновлення використовуючи chroot

Запустіть систему з LiveCD/USB та відкрийте термінал . Для цього можна натиснути Alt+F2 і ввести команду:

Sudo fdisk -l

На екран має бути виведена приблизно така таблиця:

/dev/sda1 29 8369 66999082+ 83 Linux /dev/sda2 * 8370 13995 45190845 7 HPFS/NTFS /dev/sda3 13996 14593 4803435 5 Extended

Тепер потрібно примонтувати Ваш Linux розділ (тут це sda1) та ще кілька важливих директорій:

Sudo mount /dev/sda1 /mnt sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys

Якщо розділ /boot або /var знаходиться окремо, Вам необхідно примонтувати їх у /mnt/boot та /mnt/var

Тепер перейдемо в довкілля chroot :

Sudo chroot /mnt

Тепер необхідно встановити GRUB, використовуючи команду:

Grub-install /dev/sda

Якщо Ви отримали повідомлення про помилку, використовуйте команду: grub-install --recheck /dev/sda

Також у деяких випадках може допомогти варіант:

Grub-install --recheck --no-floppy /dev/sda

Якщо все пройшло успішно, виходимо із chroot командою:

Тепер необхідно відмонтувати розділи:

sudo umount /mnt/dev sudo umount /mnt/proc sudo umount /mnt/sys sudo umount /mnt

Якщо Ви монтували розділ /boot, скористайтесь командою:

Sudo umount /mnt/boot

Потім перезавантажимо Ваш комп'ютер командою:

Sudo reboot

За потреби Ви можете оновити меню завантажувача командою:

Sudo update-grub

Відновлення у rescue mode

За відсутності завантажувального диска можна відновити Grub з його консолі. Відновлення відбувається таким чином: спочатку потрібно підвантажити всі модулі, щоб стала доступна вся функціональність Grub, а потім вже запуститися з потрібного розділу. Як відомо, Grub складається із двох частин. Перша частина записана в диск MBR. Вона містить базову функціональність, тобто в ній є консоль у rescue mode і нічого більше. Спочатку потрібно визначити, на якому розділі знаходиться друга частина груба (вона лежить в каталозі /boot/grub), підвантажити модулі, що відсутні. І лише потім можна буде дати команду запуску із потрібного розділу. У rescue mode доступно лише чотири команди:

Ls set unset insmod

Спочатку слід дати команду:

У відповідь вона виведе, наприклад, таке:

(hd0) (hd0, msdos3) (hd0, msdos2) (hd0, msdos1) (hd1) (hd1, msdos2) (hd1, msdos1)

Іноді Grub може неправильно визначити, які файлові системи знаходяться на розділах дисків. У разі визначає їх як msdos. Нам потрібно постаратися вгадати, які ми бачимо. У цьому випадку видно два диски. Диск з індексом 0 містить три розділи, диск з індексом містить 1 розділи. Знаючи структуру дисків нескладно визначити потрібний диск.

Grub називає розділи у зворотному порядку. І стає незрозуміло, що мають на увазі під (hd0,msdos3) - перший розділ чи третій? Тут можна викрутитись, використавши синтаксис (hd0,1). Потрібно пам'ятати, що у Grub рахунок дисків починається з 0, а рахунок розділів - з 1. Припустимо, що Лінукс встановлений на перший диск у перший розділ, тобто (hd0,1). Даємо команду:

Set prefix=(hd0,1)/boot/grub set root=(hd0,1)

Цими командами ми вказуємо використовувати диск (hd0,1) для подальших команд. Після чого потрібно перевірити, чи дійсно цей розділ має те, що нам потрібно. Даємо команду:

Ls /boot/grub

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

Insmod ext2 insmod normal normal

Перевірте правильність написання першої команди для файлових систем ext3 та ext4

Якщо ОС розташована на розділі, відформатованому btrfs, то виконуємо наступні команди: set prefix=(hd0,1)/@/boot/grub set root=(hd0,1)

підвантажуємо модулі:

Insmod btrfs insmod normal

запускаємо GRUB:

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

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

Grub-install /dev/sdX

Де sdX, диск, який потрібно встановити Grub.

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

Що таке Grub

Grub (або GRand Unified Bootloader) – завантажувач операційних систем з відкритим вихідним кодом. Поширюється він під ліцензією GNU GPL у повністю вільному вигляді. За допомогою цього чудового лоадера можна зробити багато всього - основна функція не обмежується завантаженням лише однієї операційної системи. Ви можете мати більше операційних систем на своєму ПК, завантажуючи будь-яку з них за допомогою Grub. На скріншоті вище ви можете бачити, як приблизно Grub виглядає. До речі кажучи, якщо ви захочете, вам напевно знадобиться допомога Grub.

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

Від чого можуть виникнути проблеми

Одна з найпоширеніших причин – це неправильний порядок встановлення двох операційних систем (Linux та Windows). Допустимо, якщо ви захочете встановити дві ці операційні системи на свій ПК - вам неодмінно варто знати правильнупослідовність:

  • Спочатку встановлюємо Windows
  • І лише потім вже Linux

Якщо, наприклад, зробити навпаки, то саме Grub буде пошкоджений; система вантажитиметься безпосередньо в Windows, а дистрибутив Linux залишиться недоступним.

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

Відновлення Grub за допомогою LiveCD/USB

Для цього методу нам знадобиться флешка з дистрибутивом Linux на борту. Підійде будь-який: від Ubuntu, Arch або Linux Mint. Тут потрібний лише термінал, тому підійде навіть версія без графічної оболонки.

Як створити LiveCD/USB

Звісно ж, нам знадобиться носій, який ми тимчасово (а може й ні) запишемо систему. Збережіть всі важливі файли, які були на цьому носії, після чого (мається на увазі на іншому ПК, бажано під керуванням Windows), запишіть завантажений образ дистрибутива на носій. Як приклад, ми будемо використовувати дистрибутив Ubuntu.

Ідемо на офіційну сторінку завантаження. Завантажуємо будь-яку версію (краще взяти найновішу для десктопа), після чого записуємо її на USB/CD.

За допомогою Rufus:

Остання версія програми доступна на офіційному сайті. Відразу після завантаження та запуску/установки ми побачимо таке вікно:

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

Знаходимо завантажений образ через менеджер, після чого тиснемо "Старт".

За допомогою Etcher:

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

А тепер, власне, можна переходити до відновлення Grub. Вставляємо флешку в наш ПК (де зламаний завантажувач), після чого перезавантажуємо його з цієї флешки. Як тільки ми увійдемо в лайв-систему, відразу відкриваємо термінал, після чого виконуємо наступні дії:

Відкриваємо таблицю розділів за допомогою команди:

Sudo fdisk -l

Приблизно таку таблицю буде виведено на екран:

По цій таблиці бачимо, що Linux, у разі, розташований розділ /dev/sda1.

За допомогою наступної команди ми змонтуємо цей розділ /mnt:

Sudo mount /dev/sda1 /mnt

Тепер для запису grub в MBR потрібно ввести наступну команду:

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

Якщо потрібно лише відновити MBR диска (після переустановки Windows, наприклад), цих дій буде цілком достатньо.

Якщо необхідно оновити і меню grub (після установки Windows), то потрібно виконати ще й цю команду:

Sudo update-grub --output=/mnt/boot/grub/grub.cfg

Ось і все, відновлення закінчено!

Відновлення за допомогою chroot

Крім вищеописаного способу, при відновленні Grub за допомогою LiveCD можна використовувати цей. Тут ми будемо використовувати утиліту chroot.

Тут нам знову ж таки знадобиться таблиця розділів. Вводимо вже відому команду:

Sudo fdisk -l

У виводі знову буде ця таблиця. Тепер нам треба придивитися до неї ще уважніше.

/dev/sda1 27 7683 66999082+ 83 Linux /dev/sda2 * 8450 13995 45430855 7 HPFS/NTFS /dev/sda3 11885 16574 6503497 5 Extended

У цьому способі нам необхідно примонтувати системний, а також кілька інших важливих розділів. Для цього вводимо ці команди:

Sudo mount /dev/sda1 /mnt sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys

Зверніть увагу, якщо розділи /boot або /var знаходяться окремо, то Вам потрібно буде примонтувати їх в /mnt/boot і /mnt/var.

Sudo chroot /mnt

І тепер нарешті встановлюємо Grub за допомогою наступної команди:

Grub-install /dev/sda

Якщо ви на цьому етапі отримуєте якісь повідомлення про помилки, спробуйте використати ці команди:

Grub-install --recheck /dev/sda

Grub-install --recheck --no-floppy /dev/sda

Якщо все пройшло успішно, виходимо із chroot, використовуючи команду:

sudo umount /mnt/dev sudo umount /mnt/proc sudo umount /mnt/sys sudo umount /mnt

У випадку, якщо ви монтували розділ /boot, введіть команду:

Sudo umount /mnt/boot

Тепер перезавантажуємо систему за допомогою:

Sudo reboot

Можна також оновити меню Grub за допомогою команди:

Sudo update-grub

Відновлення Grub у rescue mode

Якщо з якихось причин у вас немає доступу до LiveCD/USB-носія, а також до комп'ютера, за допомогою якого цей носій можна було б зробити, то цей спосіб для вас.

Саме відновлення відбувається так: спочатку ми підвантажуємо всі модулі, щоб відкрити доступ до всієї функціональної частини Grub, після чого запуститися з потрібного розділу. Треба розуміти, що Grub складається із двох частин:

Одна з цих частин (перша) записана в диск MBR. У ній є базовий функціонал і нічого більше (консоль в rescue mode).

Отже, нам потрібно визначити, в якому розділі знаходиться друга частина Grub (знаходиться в каталозі /boot/grub), і після чого підвантажити всі модулі, що відсутні. А вже після цього ми зможемо запустити завантажувач з потрібного розділу. У rescue mode є лише чотири команди:

Ls set unset insmod

Для початку вводимо наступну команду:

У висновку буде щось подібне:

(hd0) (hd0, msdos3) (hd0, msdos2) (hd0, msdos1) (hd1) (hd1, msdos2) (hd1, msdos1)

У деяких випадках Grub неправильно визначає файлові системи, що знаходяться на розділах дисків. У цьому прикладі завантажувач показує їх як msdos. Ми повинні спробувати вгадати диски, які ми бачимо. У прикладі є два диски. Диск з індексом 0, що містить три розділи, і диск з індексом 1, що містить два розділи. Якщо ви знаєте структуру своїх дисків, визначити потрібну роботу не складе.

У завантажувачі Grub розділи нумеруються у зворотному обчисленні. Не дуже зрозуміло який саме з розділів названий, наприклад (hd0, msdos3). Щоб було зрозуміліше, можна використати вигляд (hd0,1). Якщо грабі відлік дисків йде з 0, а розділів з 1, можна визначити, що операційна система встановлено перший розділ першого розділу - (hd0,1). Використовуємо наступну команду:

Set prefix=(hd0,1)/boot/grub set root=(hd0,1)

За допомогою цих команд ми наказуємо системі використовувати якийсь конкретний диск для виконання всіх інших операцій (у нашому випадку це диск (hd0,1)). Щоб перевірити, чи є на цьому диску завантажувач, введемо цю команду:

Ls /boot/grub

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

Insmod ext2 insmod normal normal

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

Щоб закріпитирезультат (і не робити все те саме після перезапуску ПК), потрібно зайти в термінал свого дистрибутива Linux, де з root правами виконати наступну команду:

Grub-install /dev/sdX

sdX – диск, на який має бути встановлений Grub.

Якщо операційна система розташована на розділі з файловою системою btrfs, то нам необхідно виконати такі команди:

Set prefix=(hd0,1)/@/boot/grub set root=(hd0,1)

І підвантажити модулі:

Insmod btrfs insmod normal

Ну і тепер запустити GRUB:

Відновлення Grub за допомогою утиліти Boot repair

За допомогою цієї чудової утиліти ви зможете відновити завантажувач всього в пару кліків. Як видно зі скріншоту, утиліта має власний GUI, її використання не викликає труднощів.

Щоб встановити boot repair, ви можете скористатися одним із наведених способів:

  • Запис та встановлення спеціального (і подальше завантаження з нього)
  • Установка Boot repair з PPA-репозиторію у LiveCD/USB дистрибутиві.

Якщо з першим способом все зрозуміло: потрібно просто завантажити та записати образ за допомогою відповідних інструментів. То в другому вже потрібно знати конкретні команди, які виглядають так:

Sudo add-apt-repository ppa:yannubuntu/boot-repair sudo apt-get update && sudo apt-get install -y boot-repair

В утиліті буде доступно два варіанти на вибір:

Recommended repairвиправляє більшу частину відомих помилок, які могли б виникнути під час запуску. З його допомогою ви зможете пофіксувати завантажувач Grub.

Create a BootInfo summaryстворює Boot-Info-Script – скрипт, який дозволяє діагностувати більшість проблем під час завантаження.

Тут же є і Advanced options. Він включає варіанти для відновлення і налаштування завантажувача Grub2 (завантаження за замовчуванням, опції завантаження ядра, відображення або приховування GRUB при завантаженні, видалення GRUB). За допомогою цих інструментів, ви можете відновити MBR і т.д.

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

Висновки

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

Можливо вас зацікавлять інші схожі матеріали про ремонт завантажувача Grub2. Наприклад, у цьому матеріалі ви дізнаєтесь, як полагодити . Там детальніше розповідається, як фіксувати груб за допомогою утиліти Boot Repair, можливо вам варто заглянути туди, якщо ви не зрозуміли щось із цього матеріалу. Що ж, ну а сьогодні це все. Сподіваюся, що цей матеріал допоміг розібратися в помилках. Що, своєю чергою, допоможе вам їх вирішити.