Настройка меню загрузки GRUB2 в Linux

CompTIABeginner
Практиковаться сейчас

Введение

В ходе этой лабораторной работы вы научитесь настраивать меню загрузки GRUB2 в среде Linux. GRUB2 (GRand Unified Bootloader) — это первая программа, которая запускается при включении компьютера; именно она отвечает за загрузку ядра Linux. Вы получите практический опыт работы с основным конфигурационным файлом /etc/default/grub, чтобы адаптировать процесс загрузки под свои нужды.

Вы начнете с доступа к стандартной конфигурации GRUB2 и ее изучения. Затем вы измените ключевые параметры, такие как GRUB_TIMEOUT (для настройки времени отображения меню) и GRUB_DEFAULT (для выбора операционной системы, загружаемой по умолчанию). В завершение работы вы примените внесенные изменения, создав новый конфигурационный файл GRUB2 с помощью команды grub2-mkconfig, и научитесь проверять правильность выполненных настроек.

Примечание: Поскольку это виртуальная среда LabEx, которая является временной, мы не сможем выполнить реальную перезагрузку системы для проверки меню в действии. Вместо этого вы научитесь проверять изменения, анализируя сгенерированные файлы GRUB2. Это критически важный навык для системных администраторов, позволяющий убедиться в корректности настроек перед перезагрузкой рабочих серверов.

Доступ к основному конфигурационному файлу GRUB2 /etc/default/grub

На этом этапе вы научитесь открывать и просматривать главный файл настроек GRUB2. GRUB2 — это стандартный загрузчик для большинства современных дистрибутивов Linux. Это первая программа, которая запускается при старте компьютера, и ее задача — загрузить ядро Linux в оперативную память и запустить операционную систему.

Основной файл, с которым вы будете работать для настройки поведения GRUB2, находится по пути /etc/default/grub. Этот файл содержит пары «ключ-значение», управляющие такими параметрами, как время ожидания меню, выбор ОС по умолчанию и дополнительные параметры ядра.

Прежде чем вносить изменения, необходимо изучить текущую конфигурацию. Так как /etc/default/grub является системным файлом и принадлежит пользователю root, для доступа к нему нужно использовать команду sudo. Мы воспользуемся командой cat, чтобы вывести его содержимое в терминал.

Выполните следующую команду для просмотра содержимого файла конфигурации GRUB2:

sudo cat /etc/default/grub

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

GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M rhgb quiet net.ifnames=0 console=tty0 console=ttyS0,115200n8 no_timer_check iommu=pt crash_kexec_post_notifiers=1 nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true

Давайте кратко рассмотрим два важных параметра из этого файла:

  • GRUB_TIMEOUT: Это значение определяет, сколько времени (в секундах) будет отображаться меню GRUB2 перед автоматической загрузкой пункта по умолчанию.
  • GRUB_DEFAULT: Указывает, какая операционная система или ядро будут загружаться автоматически.

На следующем этапе вы научитесь изменять эти параметры.

Изменение параметров GRUB_TIMEOUT и GRUB_DEFAULT

На этом этапе вы измените конфигурацию GRUB2, чтобы скорректировать поведение меню загрузки. В частности, вы увеличите время ожидания и установите конкретный пункт загрузки по умолчанию. Для редактирования файла /etc/default/grub мы будем использовать nano — простой и интуитивно понятный текстовый редактор для командной строки. Поскольку это системный файл, необходимо использовать sudo для получения прав на редактирование.

Сначала откройте файл в редакторе nano с правами sudo.

sudo nano /etc/default/grub

Откроется редактор nano с содержимым файла. Теперь внесите два изменения:

  1. Измените значение GRUB_TIMEOUT: Найдите строку, начинающуюся с GRUB_TIMEOUT. Скорее всего, там установлено значение 1. С помощью клавиш управления курсором перейдите к этой строке и измените 1 на 15. Это заставит меню GRUB2 ждать 15 секунд перед автоматической загрузкой.

    После изменения строка должна выглядеть так:

    GRUB_TIMEOUT=15
    
  2. Измените параметр GRUB_DEFAULT: Найдите строку, начинающуюся с GRUB_DEFAULT. Ее значение может быть saved. Измените его на 0. Установка GRUB_DEFAULT=0 указывает GRUB2 автоматически загружать первый пункт в списке меню (список индексируется с нуля, поэтому 0 — это самый первый пункт).

    После изменения строка должна выглядеть так:

    GRUB_DEFAULT=0
    

После внесения изменений необходимо сохранить файл и выйти из nano.

  • Нажмите Ctrl + O (команда "Write Out"), чтобы сохранить изменения.
  • nano попросит подтвердить имя файла. Просто нажмите Enter.
  • Нажмите Ctrl + X, чтобы выйти из редактора и вернуться в командную оболочку.

Вы успешно изменили настройки GRUB2 по умолчанию. На следующем этапе вы примените эти изменения.

Применение и проверка изменений конфигурации GRUB2

На этом этапе вы примените изменения, внесенные на предыдущем шаге, и научитесь проверять правильность настройки GRUB2. Вы воспользуетесь командой grub2-mkconfig для создания нового рабочего конфигурационного файла на основе ваших правок.

Создание новой конфигурации GRUB2

Теперь, когда вы изменили файл /etc/default/grub, необходимо применить эти настройки. Команда grub2-mkconfig считывает параметры из /etc/default/grub и скрипты из каталога /etc/grub.d/ для формирования итогового файла конфигурации GRUB2.

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

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

Вы должны увидеть вывод, похожий на этот:

Generating grub configuration file ...
Adding boot menu entry for UEFI Firmware Settings ...
done

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

Проверка внесенных изменений

Давайте убедимся, что изменения были правильно применены. Сначала проверьте, отражены ли ваши правки в файле /etc/default/grub:

sudo grep -E "(GRUB_TIMEOUT|GRUB_DEFAULT)" /etc/default/grub

Вы должны увидеть вывод с вашими новыми значениями:

GRUB_TIMEOUT=15
GRUB_DEFAULT=0

Затем проверьте, попали ли эти настройки в сгенерированный рабочий файл конфигурации GRUB2:

sudo grep -E "(timeout|default)" /boot/grub2/grub.cfg | head -5

Это покажет, как ваши настройки выглядят в реальном конфигурационном файле, который использует загрузчик.

Создание резервной копии конфигурации

Создание резервных копий важных конфигурационных файлов перед внесением изменений — это всегда хорошая практика:

sudo cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.backup

Это создаст копию, которую можно будет восстановить в случае необходимости.

Поиск неисправностей и валидация конфигурации GRUB2

На этом заключительном этапе вы изучите основные методы поиска неисправностей в конфигурации GRUB2 и поймете, как валидировать изменения. Эти навыки критически важны для системных администраторов, которым необходимо гарантировать работоспособность настроек GRUB2 до перезагрузки системы.

Проверка синтаксиса конфигурации GRUB2

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

sudo grub2-script-check /boot/grub2/grub.cfg

Если ошибок нет, команда завершится без вывода сообщений. Любые синтаксические ошибки будут отображены с указанием номеров строк, что поможет вам найти и исправить проблему.

Изучение структуры каталогов GRUB2

Изучите структуру каталогов конфигурации GRUB2, чтобы понять принцип ее работы. Обратите внимание, что для доступа к этому каталогу требуются права root:

sudo ls -la /etc/grub.d/

Вы увидите скрипты, которые генерируют различные части меню GRUB2. Числовой префикс в названии каждого скрипта определяет порядок его выполнения. Вы увидите такие скрипты, как:

  • 00_header: Устанавливает базовые настройки GRUB2.
  • 00_tuned: Специфические настройки сервиса Tuned.
  • 01_users: Пользовательские конфигурации.
  • 10_linux: Находит и добавляет ядра Linux.
  • 20_linux_xen: Поддержка гипервизора Xen.
  • 30_os-prober: Поиск других операционных систем.
  • 40_custom: Содержит пункты меню, определенные пользователем вручную.

Список скриптов может варьироваться в зависимости от конфигурации вашей системы и установленных пакетов.

Просмотр доступных пунктов загрузки

Давайте посмотрим, какие пункты загрузки доступны в сгенерированной конфигурации:

sudo grep "menuentry" /boot/grub2/grub.cfg | head -10

Эта команда покажет ссылки на пункты меню и сами записи. Вывод может включать как переменные конфигурации (например, menuentry_id_option), так и реальные пункты меню загрузки. Ищите строки, содержащие полные определения menuentry.

Проверка настроек таймаута и выбора по умолчанию

Убедитесь, что параметры таймаута и выбора по умолчанию настроены правильно в итоговом файле:

sudo grep -E "set timeout|set default" /boot/grub2/grub.cfg

В файле конфигурации вы можете увидеть несколько настроек таймаута и выбора по умолчанию. Это нормально, так как GRUB2 использует разные значения для различных сценариев:

  • Основной таймаут (обычно 15 секунд, как мы настроили).
  • Условные таймауты для особых ситуаций.
  • Различные стили таймаута (меню, скрытый).

Ключевые параметры для проверки:

  • set default="0" — устанавливает первый пункт меню по умолчанию.
  • set timeout=15 — устанавливает время ожидания основного меню на 15 секунд.

Информация о восстановлении GRUB2

Понимание механизмов восстановления GRUB2 необходимо для решения проблем с загрузкой. В экстренных ситуациях вы можете:

  1. Войти в командную строку GRUB2: Нажать c в меню GRUB2.
  2. Редактировать пункты загрузки: Нажать e для изменения параметров загрузки «на лету» перед стартом ОС.
  3. Использовать режим спасения (rescue mode): Если GRUB2 не может найти свою конфигурацию, он переходит в режим grub rescue.

Общие команды восстановления включают:

  • ls: Список доступных разделов и файлов.
  • set root=(hd0,1): Установка корневого раздела.
  • linux /boot/vmlinuz root=/dev/sda1: Загрузка ядра.
  • boot: Запуск процесса загрузки.

Финальная проверка конфигурации

Проведем последнюю проверку вашей полной конфигурации GRUB2:

sudo cat /etc/default/grub | grep -E "(TIMEOUT|DEFAULT)"

Это подтверждает, что ваши базовые настройки корректно сохранены в исходном файле конфигурации.

Чего вы достигли:

  • Изменили время ожидания и пункт загрузки GRUB2 по умолчанию.
  • Применили изменения конфигурации с помощью grub2-mkconfig.
  • Научились проверять и устранять неполадки в конфигурациях GRUB2.
  • Освоили процедуру создания резервных копий критически важных загрузочных файлов.
  • Изучили структуру каталогов GRUB2 и варианты восстановления.
  • Получили навыки валидации конфигураций перед перезагрузкой системы.

Ваша конфигурация GRUB2 теперь настроена с 15-секундным таймаутом и первым пунктом меню в качестве выбора по умолчанию. В реальной среде эти изменения вступят в силу при следующей перезагрузке системы.

Резюме

В этой комплексной лабораторной работе вы получили практический опыт настройки загрузчика GRUB2 и освоили методы поиска неисправностей. Вы начали с изучения стандартной конфигурации, затем изменили ключевые параметры, такие как GRUB_TIMEOUT и GRUB_DEFAULT, чтобы настроить поведение меню загрузки. Вы научились применять эти изменения с помощью команды grub2-mkconfig и проверять правильность их реализации.

Ключевые навыки, которые вы развили: понимание структуры конфигурации GRUB2, безопасное редактирование файла /etc/default/grub, корректное применение изменений, а также внедрение процедур проверки и резервного копирования. Вы также изучили важные методы диагностики, включая проверку синтаксиса, валидацию конфигурации и ознакомление с опциями восстановления GRUB2, что крайне важно для системных администраторов.

В ходе работы особое внимание уделялось практическим навыкам, необходимым в реальных сценариях, особенно умению проверять настройки GRUB2 перед их применением на рабочих системах. Вы научились использовать такие команды, как grub2-script-check для проверки синтаксиса и различные варианты grep для подтверждения того, что изменения были правильно перенесены в сгенерированные файлы конфигурации.

Эти знания позволят вам уверенно работать со сценариями настройки загрузки и эффективно устранять проблемы, связанные с загрузкой, в корпоративных средах Linux. Методы проверки, которые вы практиковали, особенно ценны для обеспечения корректности конфигураций GRUB2 перед перезагрузкой критически важных систем.