Настройка загрузчика grub
Содержание:
- Способ 2
- Настройка Grub через конфигурационные файлы
- Дружище, где мой GRUB?
- Вопрос о защите от зацикливания перезагрузки
- Определение разделов
- Удаляем Grub
- Включение устройства
- Генерация файла конфигурации GRUB
- Устанавливаем GRUB
- Восстановление Grub2 без LiveCD
- Восстановление grub
- Через утилиту восстановления загрузчика
- Entering rescue mode
Способ 2
Всё сильно упрощается, если использовать Live CD – загрузочный диск с системой Linux
Он может быть записан на флешке, на внешнем винчестере или на обычном диске – это неважно, главное, чтобы с него можно было загрузить компьютер
После загрузки Linux стандартным способом устанавливается бесплатная утилита Boot Repair. Она предназначена именно для устранения ошибок загрузки с помощью загрузчика Grub и очень проста в использовании – достаточно кликнуть по кнопке.
Заметим, что иметь Live CD для линуксоида всегда полезно и даже необходимо. Это зачастую избавляет от множества проблем, так как позволяет загрузить полноценную систему с внешнего носителя и использовать весь её инструментарий. Скачать такой диск с любой версией Linux не представляет сложностей, в комплекте обычно идёт инструкция по записи его на флешку.
Настройка Grub через конфигурационные файлы
Сразу нужно сказать, что существует два способа настройки Grub Ubuntu, через конфигурационные файлы. Первый — через конфигурационный файл утилиты grub-mkconfig, который позволяет задать общие параметры для загрузчика и ручное редактирование /boot/grub/grub.cfg.
Первый — рекомендованный, и с помощью него можно настроить большинство параметров, в этом случае настройки не собьются, когда вы обновите ядро или загрузчик. Второй вариант еще более гибкий, но после любого обновления вы потеряете свои настройки. Так что то что можно настроить через /etc/default/grub настраиваем через него, все остальное — через /boot/grub/grub.cfg. Сначала рассмотрим первый вариант.
Настройка Grub через /etc/default/grub
Как я уже сказал, настройка загрузчика через файл /etc/default/grub, на основе которого будет автоматически создан /boot/grub/grub.cfg более желательна. Давайте рассмотрим параметры, которые вы можете здесь настроить.
- GRUB_DEFAULT — указывает какой пункт нужно загружать по умолчанию. Может быть указан номер, или полное название или же строка saved, которая значит, что нужно загрузить пункт, указанный с помощью grub-reboot;
- GRUB_SAVEDEFAULT — загружать последнюю использованную запись по умолчанию;
- GRUB_HIDDEN_TIMEOUT — сколько секунд ждать перед тем, как вывести меню;
- GRUB_HIDDEN_TIMEOUT_QUIET — если установлено true, то меню не будет показано;
- GRUB_TIMEOUT — сколько секунд будет показано меню;
- GRUB_CMDLINE_LINUX — добавить опции ядра для всех ядер, как обычных, так и режима восстановления;
- GRUB_CMDLINE_LINUX_DEFAULT — добавить опции ядра только для обычных ядер;
- GRUB_CMDLINE_LINUX_RECOVERY — опции ядра, только для режима восстановления;
- GRUB_BADRAM — указать адреса оперативной памяти, которые не нужно использовать;
- GRUB_TERMINAL — модуль терминала для Grub. Можно использовать console, только для текстового режима или gfxterm с поддержкой графики;
- GRUB_GFXMODE — разрешение экрана в Grub, лучшие использовать auto, чтобы система выбрала сама то что ей нужно.
- GRUB_DISABLE_RECOVERY — не включать в меню пункты восстановления;
- GRUB_DISABLE_OS_PROBER — не искать другие операционные системы;
- GRUB_BACKGROUND — адрес картинки для фона, должна находиться в той же папке что и файлы grub;
- GRUB_THEME — устанавливает тему Grub.
Например, можно использовать такую конфигурацию:
Но как вы могли понять, этим способом вы не можете настроить порядок пунктов загрузки, а также некоторые другие параметры, поэтому давайте рассмотрим настройку непосредственно конфигурационного файла Grub.
Дружище, где мой 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
Вопрос о защите от зацикливания перезагрузки
Необходимость в подобной интегрированной в загрузчик 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.
Выведем список разделов, для этого выполняем команду (в конце команды стоит строчная буква L
): sudo fdisk -l
Вывод fdisk для BIOS
Пример вывода команды:
В моем случае мы видим 2 диска: /dev/sda (SSD диск) и /dev/sdb (флешка, с которой сейчас загружена Live-система).
Нас интересует диск /dev/sda. На диске /dev/sda создано несколько разделов. В моем случае /dev/sda4, на котором установлен Windows, а также 4 раздела с пометкой Linux
(см. последний столбец таблицы). У вас скорее всего может быть один раздел Linux (корневой раздел) или два раздела (корневой и home). На одном из этих разделов установлен GRUB.
То есть из таблицы вы должны определить какой раздел является корневым, на нем скорее всего у вас установлен GRUB. В моем случае GRUB установлен в раздел /dev/sda2. Далее по тексту я буду его использовать (вы должны будете указывать свой раздел).
Иногда бывает, что для загрузчика GRUB выделен отдельный раздел (он называется boot-раздел). Если это так, то на следующем шаге вам нужно будет примонтировать корневой раздел и раздел с загрузчиком.
Вывод fdisk для UEFI
Для новых компьютеров с UEFI вывод команды fdisk -l может быть примерно следующим:
Нам нужно определить, на каком разделе установлен Linux (корневой раздел), а также определить EFI-раздел. В моем случае это разделы: /dev/nvme0n1p5 и /dev/nvme0n1p1, которые расположены на диске /dev/nvme0n1.
Удаляем Grub
Некоторые юзеры затрудняются в вопросе, как удалить Grub, так как он подменяет собой стандартный загрузчик, и при удалении Linux перестают загружаться также и оставшиеся операционные системы. Хотя сам процесс несложный, применимы различные способы, зависящие от установленной второй системы.
Удаление при установленной Windows XP
Если на ПК стоит Windows XP, проблема, как удалить Grub, решается не так быстро, но без особых сложностей. Запустите менеджер жёсткого диска, который удалит программные компоненты, отмеченные ext. Хорошо подходит для процедуры удаления Power Quest PartitionMagic 8.0. Затем вам потребуется восстановление загрузчика Windows для работы ПК после удаления Linux. Действуйте по алгоритму.
С помощью утилиты удалите разделы с меткой ext
- Внизу окна приложения цветовое обозначение разделов. Удалив эксплуатируемые Linux, освободите место, оно выделится серым.
- Умная машина станет перезагружаться, высветится сообщение: «NTLDR is missing». Оно говорит, что система не может запустить ОС Windows, требуется восстановить файлы.
- Запустите консоль восстановления и подключите компакт-диск либо загрузочную флешку.
- Консоль запросит указать, в какую копию ОС следует войти. Ставьте «1».
- У вас запросят пароль администратора, введите его.
- Затем введите команду fixmbr, восстанавливающую таблицы разделов, перезаписывающую загрузочную область.
- Консоль выведет предупреждение и запросит подтверждения процесса, введите «Y».
- Загрузочная область создаётся, введите затем команду fixboot для записи загрузочного сектора на основной диск.
- Подтвердите по запросу операцию, набрав «Y».
Компьютер перезагрузится, восстановление загрузчика будет успешно завершено, запустится Windows XP.
Удаление при установленных Windows 7, 8
Процедура при установленных Windows 7-8 проще, чем вышеописанная. В данном случае вам не понадобятся загрузочные флешки, запуск консоли. Действуйте по алгоритму:
- Заходите в «Пуск» — «Выполнить».
- В поле окна открытия утилит впишите list disk, нажмите Enter, после чего увидите список устройств, имеющихся у вашего ПК.
- Впишите «select disk №…», указав номер диска с установленным Grub.
- Нажмите Enter. Выйдет сообщение о выборе диска.
- Вбейте команду «clean» — «Enter».
- Появится сообщение об успешной очистке диска.
Если вы уже удалили Linux, то Windows не сможет загрузиться. Поэтому нужен установочный диск или флешка с системой. Настройте BIOS на загрузку с нужного устройства и загрузитесь с диска или флешки. Вместо установки выберите восстановление системы, а затем командную строку. В этой строке введите поочередно такие команды:
- EXE /FixBoot
- BOOTREC.EXE /FixMBR
После этого файловая система будет исправлена и в загрузочном секторе появится запись, что компьютер должен загружаться с системы Windows. Собственно, этот же процесс происходит при новой установке системы, но теперь вы вместо этого только исправили загрузчик.
Удаление при FreeDos
При установленной FreeDos программу-загрузчик удалить возможно посредством командной строки. Вы просто форматируете диск с загрузочной областью.
- Запустите командную строку.
- Просмотрите содержание дисков, дав команду «dir».
- Обнаружив загрузочный сектор, отформатируйте весь раздел, вбив команду «format» и указав на этой же строчке нужный диск, например, «с:».
- После выполнения процедуры Grub будет убран с жёсткого диска.
Удаление Grub4Dos
Если у вас установлен загрузчик Grub4Dos, его удалить легко через командную строку. Набираете там команду «sudo apt-get purge grub2 grub-pc», и Grub удалит себя. Далее с помощью загрузочного диска, специальной консоли выполняете восстановление загрузчика, запуск имеющейся ОС.
Хотя Linux имеет много преимуществ перед другими системами, часто выбирают современные ОС либо устанавливают две системы. Но переходы между ними затруднены, возникают конфликты в программном обеспечении, и приходится удалять такой привычный, удобный Linux. Выше мы подробно описали, каким образом выполнить удаление, не нарушив работы второй системы. Теперь вы сможете, удалив Grub, оставить на ПК только одну ОС; знаете, как восстановить загрузчик Windows. Внимательно выполняйте операции, действуйте по руководству, прилагаемому к загрузчику, и вы успешно сделаете всё необходимое.
Включение устройства
В момент запуска компьютера, в первую очередь начинает запускаться непосредственно сам BIOS. В этот момент происходит считывание данных, хранящихся в MBR первого диска. Спустя несколько секунд, содержимое «идёт» к оперативной памяти, где происходит проверка на наличие в последних байтах шестнадцатеричных кодов 55 АА. Такая проверка заключается в необходимости идентифицировать носители для их последующей загрузки. Небольшая программка, хранящаяся в MBR, необходима при совпадении представленных кодов. Первая программа «цепляет» следующую, расположенную в загрузочном секторе активного раздела, чтобы впоследствии активировать её, и, как следствие, запустить ОС Windows.
В случае наличия не одного жёсткого диска, пользователь может настроить в BIOS порядок, согласно которому будет производиться запуск конкретных жёстких дисков в момент загрузки системы. Благодаря этой особенности, новые ПК имеют возможность загружать систему как с внешнего диска, так и с USB-накопителя. Естественно, изменив порядок загрузки в BIOS, юзер может загружать систему посредством CD и DVD-дисков.
С помощью BIOS вы можете отрегулировать порядок загрузки носителей
Чтобы в будущем не приходилось разбираться с загрузчиками и думать о том, каким образом должна осуществляться настройка GRUB, пользователь должен знать, как установить две операционные системы от разных производителей таким образом, чтобы они не конфликтовали между собой. Как показывает практика, разумнее всего установить изначально загрузчик системы Linux, чтобы впоследствии иметь возможность выбора относительно запускаемой системы.
Однако, если на устройстве стоит одна из последних версий ОС от компании Microsoft (позднее 9х/ME), то в загрузчике системы можно сделать так, чтобы он самостоятельно «беспокоился» о GRUB. Огромным преимуществом такой возможности является отсутствие необходимости лишний раз разбираться с особенностями MBR. Правда, далеко не каждый современный юзер сможет самостоятельно произвести такую манипуляцию, так как процесс этот достаточно сложный. Всё придётся делать вручную.
Среди прочих способов, настроить нормальную работоспособность двух систем, можно прибегнув к дополнительной установке GRUB. Загрузчик необходимо расположить непосредственно в загрузочном секторе главного раздела и впоследствии отметить его в качестве активного. Этот метод также исключает необходимость использовать MBR, однако он может сработать только с основными разделами и файловыми системами, не влияющими на загрузочный сектор раздела.
Генерация файла конфигурации GRUB
Данный шаг нужно выполнять не всем. Если у вас был установлен GRUB и вы уверены, что его конфигурация верная, то можно перейти к следующему шагу.
Для генерации файла конфигурации GRUB используется команда update-grub. Данная команда автоматически определяет файловые системы на вашем компьютере и генерирует новый файл конфигурации. Выполняем команду:
sudo update-grub
В выводе команды будет показано, какие операционные системы были найдены.
Если вдруг утилита update-grub
не определила ваш Windows (у меня такое было для UEFI), то можно будет запустить update-grub повторно уже из вашей Linux-системы, когда вы в нее загрузитесь (мне это помогло и Windows определился).
Устанавливаем GRUB
Осталось выполнить установку GRUB на диск. Мы определили раздел на котором у нас установлен GRUB на первом шаге данного руководства. В моем случае это раздел /dev/sda2, который расположен на диске /dev/sda.
Для установки GRUB используется команда grub-install, которой нужно передать в качестве параметра диск, на который будет выполняться установка (в моем случае это диск /dev/sda):
https://askubuntu.com/questions/88384/how-can-i-repair-grub-how-to-get-ubuntu-back-after-installing-windowsIf Ubuntu is installed in EFI mode, and EFI partition UUID has changed, you may need to update it in /etc/fstab. Compare it:blkid | grep -i efigrep -i efi /etc/fstab
Восстановление Grub2 без LiveCD
В некоторых случаях повреждения Grub не вызывает полную невозможность загрузки. Например, когда загрузочный код в MBR цел, но программа не может получить доступ к файлам на диске. Тогда загрузчик открывает вместо меню некое подобие терминала с сообщением: Minimal BASH like line editing is supported. С помощью этого терминала мы можем попытаться загрузить систему. Восстановление grub2 без livecd не такая уж и сложная задача, хотя, это сложнее, чем первый способ.
Все что вам потребуется — это знать на каком устройстве расположена система и само ядро Linux. Синтаксис и команды очень похожи на обычные команды bash, но немного отличаются по назначению. В начальном режиме восстановления доступны только несколько команд это ls, insmod, set и unset.
Чтобы посмотреть список подключенных к компьютеру дисков просто выполните:
Важно отметить, что в grub диски и разделы именуются немного по другому. Здесь каждый жесткий диск имеет название hd и номер диска, например, hd0 или hd1
Разделы именуются начиная с единицы.
Вы можете работать только с одним разделом в определенный момент. Чтобы установить раздел, с которым нужно работать, нужно указать его в переменной root. Для установки переменных окружения используется команда set. Например, у меня файлы загрузчика grub находятся на /dev/sdc2, то-есть hd2,2:
Загрузим нормальную оболочку grub:
После этого можно найти и запустить ядро. Для этого используйте команду linux. Обычно ядро находится папке /boot:
И наконец загружаемся:
Теперь, когда система загрузится, вам останется только открыть терминал, и выполнить следующие команды, чтобы завершить восстановление загрузчика linux mint:
$ sudo grub2-mkconfig -o /boot/grub/grub.cfg
Вот и все.
Восстановление grub
Продолжаем восстановление загрузки ubuntu. Сам /boot раздел мы вернули, но загрузчик grub почему-то не работает и система не грузится. Загружаемся опять с установочного диска и переходим в консоль. Напомню, что у меня такая картина по разделам:
Device Boot Start End Sectors Size Id Type /dev/sda1 * 4096 2101247 2097152 1G 83 Linux /dev/sda2 2101248 20969471 18868224 9G 83 Linux
Первый раздел это /boot, второй корень / . Смонтируем их в /mnt, а так же добавим несколько системных директорий.
sudo mount /dev/sda2 /mnt sudo mount /dev/sda1 /mnt/boot sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys
Теперь чрутимся в /mnt, чтобы оказаться в нашей системе:
sudo chroot /mnt
И уже отсюда восстанавливаю загрузчик grub:
grub-install /dev/sda sudo update-grub --output=/mnt/boot/grub/grub.cfg
По идее, ошибок получить не должны. Если получили, то гуглите их. Надо обязательно их решить, иначе система так и не начнет загружаться корректно.
Теперь выходим отсюда и перезагружаем сервер. Вынимаем установочный диск и загружаемся с основного диска. У меня пошла загрузка.
Давайте еще раз повторим все, что мы сделали:
- Мы увидели, что система не грузится и валится в grub rescue. Загрузчик не может найти раздел, с которого продолжить загрузку. Мы попробовали в rescue console посмотреть все имеющиеся разделы и не нашли там boot. Если же нашли, то сразу же загрузились с него.
- После этого загрузились с загрузочного диска ubuntu, перешли в консоль. Установили утилиту testdisk и просканировали наш диск. Нашли пропавший раздел, восстановили /boot. Если раздел не нашли, то создали вручную.
- После этого смонтировали к livecd системе локальные диски, зачрутились в эту систему и штатно восстановили grub загрузчик.
- После этого система нормально загрузилась.
Через утилиту восстановления загрузчика
Поскольку предыдущий метод может быть не всем под силу, воспользуемся той особенностью Ubuntu, что она может полноценно работать, будучи запущенной с флешки. Для этого мы применим специальную утилиту boot-repair. Что нужно сделать?
- Запустить Ubuntu с флешки и убедиться, что имеется активное интернет-соединение.
- Найти терминал и запустить в нём одну за другой такие команды:
- В меню приложений найти «Восстановление загрузчика» и включить утилиту.
- Кликнуть на кнопку «Рекомендуемый способ восстановления» и дождаться окончания процедуры.
- В большинстве ситуаций этих действий вполне достаточно для нормальной работоспособности загрузчика Grub Linux.
Entering rescue mode
Итак, в случае проблем с загрузкой Ubuntu вы можете оказаться в режиме grub rescue.
Machine UUID... Booting from Hard Disk... error: no such partition. Entering rescue mode... grub rescue>
Это может символизировать как простую ошибку, которую легко исправить, так и серьезные проблемы. Рассказываю, что нужно делать в таком случае и как починить загрузку системы.
Первым делом запускаем команду ls и смотрим, какие разделы у нас доступны.
> ls (hd0) (hd0,gpt3)
В моем случае доступен только один 3-й раздел, скорее всего корневой. Раздела /boot, который обычно 1-й или 2-й нет. Проверим это наверняка. Смотрим содержимое доступного раздела:
> ls (hd0,gpt3)/
По содержимому раздела видно, что это корневой. Самого раздела /boot, с которого должна начинаться загрузка ubuntu тут не видно. Если его никто специально не удалял и не затирал, то он пропал в результате какого-то сбоя или ошибки. Можно попробовать это исправить. Сделаем это отдельно ниже, а пока рассмотрим случай, когда boot раздел тут все же присутствует и имеет имя, к примеру, (hd0,gpt2). Тогда там же в консоли grub продолжаем.
> set prefix=(hd0,gpt2)/grub > set root=(hd0,gpt2)
Далее загружаем некоторые модули. Какие будут нужны, точно не известно и зависит от типов разделов диска. Показываю самые популярные:
> insmod ext2 > insmod lvm > insmod part_msdos
Можно для начала попробовать вообще без модулей, а потом добавлять по одному. В самом конце загружаем модуль normal.
> insmod normal > normal
После этого у вас должно открыться стандартное меню загрузки Ubuntu. Если это так, то вам повезло. Дальше загрузится система. Вам нужно будет в нее зайти и далее перейти в раздел по восстановлению grub в этой статье. Получилось так, что у вас сам загрузочный раздел жив, но сбились его настройки, поэтому он сам не смог загрузить основную систему. Это не трудно исправить и ниже я показываю как.