Ответ
GRUB (GRand Unified Bootloader) — это современный, полнофункциональный загрузчик, который выполняет критически важные задачи после завершения работы прошивки (BIOS/UEFI) и до запуска ядра ОС. В DevOps понимание его работы необходимо для управления серверами, особенно при восстановлении, настройке загрузки по сети (PXE) или использовании нескольких ядер.
Роль GRUB по сравнению с прошивкой:
- BIOS/UEFI только выполняет самотестирование (POST), инициализирует оборудование и находит загрузочное устройство (диск, сеть).
- GRUB берет на себя дальнейшую логику:
- Загрузка ядра и initramfs: Он умеет читать современные файловые системы (ext4, XFS, Btrfs), чтобы загрузить нужные файлы ядра (
vmlinuz) и временной корневой файловой системы (initrd.img). - Гибкая конфигурация: Предоставляет интерактивное меню для выбора ОС или параметров загрузки (например, загрузка в rescue mode или с другим ядром).
- Передача параметров ядру: Позволяет задать ключевые параметры, такие как
root=/dev/sda2,quiet,splash, или параметры для исправления проблем (например,nomodesetдля проблем с графикой). - Сетевой PXE-загрузчик: GRUB может выступать в качестве второй стадии PXE-загрузчика, что используется для автоматического развертывания ОС на «голые» серверы (bare metal provisioning).
- Загрузка ядра и initramfs: Он умеет читать современные файловые системы (ext4, XFS, Btrfs), чтобы загрузить нужные файлы ядра (
Пример фрагмента конфигурации GRUB (/etc/grub.d/40_custom):
menuentry 'Ubuntu, with Linux 5.15.0-91-generic (recovery mode)' {
recordfail
load_video
insmod gzio
insmod part_gpt
insmod ext2
set root='hd0,gpt2' # Указание на конкретный раздел
linux /boot/vmlinuz-5.15.0-91-generic root=/dev/mapper/vg-root ro recovery nomodeset
initrd /boot/initrd.img-5.15.0-91-generic
}
В DevOps-работе часто приходится редактировать эти параметры для загрузки сервера с rescue-образом или для отладки проблем с драйверами на этапе инициализации.