Настройка и устранение неполадок Grand Unified Bootloader (GRUB) — LFCS часть 13

LFCS

Из-за недавних изменений в сертификационных экзаменах LFCS, мы добавляем необходимые темы в опубликованную здесь LFCS-серию статей. Чтобы подготовиться к этому экзамену, вам настоятельно рекомендуется прочитать всю серию статей LFCS до конца.

В этой статье мы познакомим вас с GRUB и объясним, зачем нужен загрузчик и как он позволяет пользователю иметь несколько установленных операционных систем.

Процесс загрузки Linux с момента нажатия кнопки питания вашего компьютера до того момента, пока вы не получите полностью работоспособный ПК:

  • Процесс, известный как POST (Self-On Self Test), выполняет общую проверку аппаратных компонентов вашего компьютера.
  • Когда POST завершает работу, он передает управление загрузчику, который, в свою очередь, загружает ядро ​​Linux в память (вместе с initramfs) и запускает его. Самым популярным загрузчиком в Linux является GRAND Unified Boot Loader, или GRUB для краткости.
  • Ядро проверяет и обращается к аппаратным средствам, а затем запускает начальный процесс (известный как — «init»), который, в свою очередь, завершает загрузку системы, запустив службы.

В 7 части этой серии («SysVinit, Upstart и Systemd») мы объяснили, как управлять процессами и службами запуска системы Linux. Вы можете прочитать эту статью, прежде чем продолжить.

 

 

Знакомство с загрузчиком GRUB

Две основные версии GRUB (v1, иногда называемые GRUB Legacy и v2) можно найти в современных системах, хотя большинство дистрибутивов по умолчанию используют v2 в своих последних версиях. Только Red Hat Enterprise Linux 6 и ее производные все еще используют v1 по сегодняшний день.

Таким образом, в этом руководстве, мы сфокусируемся прежде всего на особенностях v2.

Независимо от версии GRUB, загрузчик позволяет пользователю:

  • Изменить способ поведения системы, указав разные используемые ядра;
  • Выбирать между альтернативными операционными системами для загрузки, добавлять или редактировать настройки, чтобы изменить параметры загрузки;
  • Сегодня GRUB поддерживается проектом GNU и хорошо документирован на их веб-сайте. При использовании этого руководства вам рекомендуется использовать официальную документацию GNU.

Когда система загружается, на главной консоли отображается следующий экран GRUB. Первоначально вам предлагается выбрать между альтернативными ядрами (по умолчанию система будет загружаться с использованием последнего ядра), также разрешено выводить командную строку GRUB (с помощью опции «) или редактировать параметры загрузки (нажав клавишу «e«).

GRUB-Boot-Screen

 

Конфигурация GRUB v2 начинается при загрузке из /boot/grub/grub.cfg или /boot/grub2/grub.cfg, тогда как /boot/grub/grub.conf или /boot/grub/menu.lst используются в v1. Эти файлы НЕ редактируются вручную, но изменяются на основе содержимого /etc/default/grub и файлов, найденных внутри /etc/grub.d.

В CentOS 7 при первой установке системы создается вот такой конфигурационный файл:

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="vconsole.keymap=la-latin1 rd.lvm.lv=centos_centos7-2/swap crashkernel=auto vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos_centos7-2/root rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

 

В дополнение к онлайн-документации вы также можете найти руководство GNU GRUB, используя следующую команду:

# info grub

 

Если вам интересны опции, доступные для /etc/default/grub, вы можете напрямую вызвать раздел конфигурации:

# info -f grub -n 'Simple configuration'

 

Используя приведенную выше команду, вы обнаружите, что GRUB_TIMEOUT устанавливает время между моментом появления начального экрана и началом автоматической загрузки системы. Если для этой переменной установлено значение -1, загрузка не будет запущена до тех пор, пока пользователь не сделает выбор.

Когда на одном компьютере установлены несколько операционных систем или ядер, GRUB_DEFAULT требует целочисленное значение, которое указывает, какая ОС или номер ядра будут выбраны на начальном экране GRUB для загрузки по умолчанию. Список записей можно просмотреть используя следующую команду:

В CentOS и openSUSE:
# awk -F\' '$1=="menuentry " {print $2}' /boot/grub2/grub.cfg

 

В Ubuntu:
# awk -F\' '$1=="menuentry " {print $2}' /boot/grub/grub.cfg

 

В примере, показанном на рисунке ниже, если мы хотим загрузить ядро версии 3.10.0-123.el7.x86_64 (4-я запись), нам нужно установить GRUB_DEFAULT в 3 (записи пронумерованы с нуля) следующим образом :

GRUB_DEFAULT=3

 

Boot-System-with-Old-Kernel-Version

 

Одна конечная конфигурация GRUB, представляющая особый интерес, — GRUB_CMDLINE_LINUX, которая используется для передачи параметров ядру. Параметры, которые могут быть переданы через GRUB в ядро, хорошо документированы в файле параметров ядра и в man 7 bootparam.

Текущие параметры на нашем сервере CentOS 7:

GRUB_CMDLINE_LINUX="vconsole.keymap=la-latin1 rd.lvm.lv=centos_centos7-2/swap crashkernel=auto vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos_centos7-2/root rhgb quiet"

 

Вам может понадобиться изменить параметры ядра по умолчанию или передать дополнительные параметры. Проще говоря, могут возникнуть ситуации, когда вам нужно указать ядру определенные параметры оборудования, которые ядро может не определить самостоятельно или переопределить значения, которые оно обнаружит.

Расскажу о недавней ситуации, которая произошла со мной, когда я попробовал Vector Linux, производную от Slackware, на моем очень старом ноуте. После установки он не обнаружил правильные настройки для моей видеокарты, поэтому мне пришлось изменить параметры ядра, переданные через GRUB, чтобы заставить все заработать.

Другой пример — когда вам нужно привести систему в однопользовательский режим для выполнения задач обслуживания. Вы можете сделать это, добавив слово single в GRUB_CMDLINE_LINUX и выполнив перезагрузку:

GRUB_CMDLINE_LINUX="vconsole.keymap=la-latin1 rd.lvm.lv=centos_centos7-2/swap crashkernel=auto vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos_centos7-2/root rhgb quiet single"

 

После редактирования /etc/defalt/grub вам нужно будет запустить update-grub (Ubuntu) или grub2-mkconfig -o /boot/grub2/grub.cfg (CentOS и openSUSE), чтобы обновить grub.cfg (в противном случае изменения могут быть потерянными при загрузке).

Эта команда будет обрабатывать файлы конфигурации загрузки, упомянутые ранее, для обновления grub.cfg. Этот метод гарантирует, что изменения являются постоянными, а опции, переданные через GRUB во время загрузки, будут сохраняться только в течение текущего сеанса.

 

 

Исправление проблем Linux GRUB

Если вы устанавливаете вторую операционную систему или если ваш файл конфигурации GRUB поврежден из-за какой-либо ошибки, вы можете «откатить» свою систему, и все снова будет работать.

На начальном экране нажмите c, чтобы получить командную строку GRUB (помните, что вы также можете нажать e, чтобы изменить параметры загрузки по умолчанию), и используйте справку для вывода доступных команд в приглашении GRUB:

Fix-Grub-Configuration-Issues-in-Linux

 

Мы сосредоточимся на ls, в котором будут перечислены установленные устройства и файловые системы, и рассмотрим, что он найдет. На изображении ниже мы видим, что есть 4 жестких диска (от hd0 до hd3).

Кажется, что только hd0 был разделен (о чем свидетельствуют msdos1 и msdos2, где 1 и 2 — номера разделов, а msdos — схема разбиения).

Теперь рассмотрим первый раздел на hd0 (msdos1), чтобы увидеть, можно ли найти там GRUB. Такой подход позволит нам загружать Linux и использовать другие инструменты высокого уровня для восстановления файла конфигурации или вообще для переустановки GRUB, если это потребуется:

# ls (hd0,msdos1)/

 

Как мы видим, мы нашли каталог grub2 в этом разделе:

Find-Grub-Configuration

 

Удостоверившись, что GRUB находится в hd0, msdos1, сообщите GRUB, где найти его файл конфигурации, а затем поручите ему запустить меню:

set prefix=(hd0,msdos1)/grub2
set root=(hd0,msdos1)
insmod normal
normal

 

Find-and-Launch-Grub-Menu

 

Затем в меню GRUB выберите «Вход» и нажмите «Ввод», чтобы загрузить систему. После загрузки системы вы можете выполнить команду grub2-install /dev/sdX (смените sdX на устройство, на которое вы хотите установить GRUB). Затем загрузочная информация будет обновлена ​​и все связанные файлы будут восстановлены.

# grub2-install /dev/sdX

 

Другие более сложные сценарии документируются вместе с исправлениями в руководстве по устранению неполадок Ubuntu GRUB2.

 

 

Итоги

В этой статье мы познакомили вас с GRUB, рассказав, где вы можете найти документацию (как в Интернете, так и в автономном режиме) и объяснили подход к сценарию в случае, если система перестала правильно загружаться из-за проблемы с загрузчиком.

К счастью, GRUB — один из тех инструментов, которые лучше всего документированы, и вы сможете легко найти помощь в любых вопросах, используя ресурсы, которые мы рассмотрели в этой статье.

 

Спасибо за уделенное время на прочтение статьи!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасностиполный курс по кибербезопасности от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

 

Курсы Cisco и Linux с трудоустройством!

Спешите подать заявку! Осталось пару мест. Группы стартуют 22 июля, а следующая 19 августа, 23 сентября, 21 октября, 25 ноября, 16 декабря, 20 января, 24 февраля.
Что Вы получите?
  • Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
  • Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
  • Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
  • Если хотите индивидуальный график — обсудим и осуществим.
  • Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
А еще поможем Вам:
  • отредактировать резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco CCNA Routing & Switching и Linux LPI, подайте заявку или получите бесплатную консультацию.
LFCS

Больше похожих постов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Most Viewed Posts
Меню