Введение
В ходе этой лабораторной работы вы научитесь настраивать меню загрузки 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 с содержимым файла. Теперь внесите два изменения:
Измените значение
GRUB_TIMEOUT: Найдите строку, начинающуюся сGRUB_TIMEOUT. Скорее всего, там установлено значение1. С помощью клавиш управления курсором перейдите к этой строке и измените1на15. Это заставит меню GRUB2 ждать 15 секунд перед автоматической загрузкой.После изменения строка должна выглядеть так:
GRUB_TIMEOUT=15Измените параметр
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 необходимо для решения проблем с загрузкой. В экстренных ситуациях вы можете:
- Войти в командную строку GRUB2: Нажать
cв меню GRUB2. - Редактировать пункты загрузки: Нажать
eдля изменения параметров загрузки «на лету» перед стартом ОС. - Использовать режим спасения (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 перед перезагрузкой критически важных систем.



