Настройка меню загрузки 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 (GRand Unified Bootloader, версия 2) является стандартным загрузчиком для большинства современных дистрибутивов Linux. Это первая программа, запускаемая при включении компьютера; её задача — загрузить ядро Linux в память и запустить операционную систему.

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

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

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

sudo cat /etc/default/grub

Чтобы иметь под рукой эталон для сравнения в ходе лабораторной работы, сохраните текущие настройки времени ожидания и записи по умолчанию в файл в вашей домашней директории:

sudo grep -E "^(GRUB_TIMEOUT|GRUB_DEFAULT)" /etc/default/grub | tee ~/grub-current-settings.txt >/dev/null

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

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, чтобы выйти из редактора nano и вернуться в командную строку.

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

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

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

Генерация новой конфигурации GRUB2

Теперь, когда вы изменили файл /etc/default/grub, необходимо применить изменения, создав новый файл конфигурации GRUB2. Команда 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.

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

Давайте убедимся, что ваши изменения были корректно применены к конфигурации 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

Это покажет, как ваши настройки отображаются в итоговом файле конфигурации GRUB2.

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

Всегда полезно создавать резервные копии важных файлов конфигурации перед внесением изменений:

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, чтобы понять, как она работает. Обратите внимание, что для доступа к этому каталогу требуются права суперпользователя:

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), так и реальные пункты меню загрузки. Ищите строки, содержащие полные определения пунктов меню.

Проверка настроек времени ожидания и значений по умолчанию

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

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 не может найти свою конфигурацию, он переходит в режим восстановления

Распространенные команды восстановления:

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

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

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

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