Подробный гайд по параметрам загрузки ядра и настройке GRUB2 в ALT Linux 11 - Часть 1
1. Как это работает в ALT Linux 11
При загрузке ALT Linux через GRUB2 вы видите меню загрузки.
Внутри каждого пункта меню есть примерно такие строки:
menuentry 'ALT Linux ...' {
...
linux /boot/vmlinuz-... root=UUID=... ro quiet splash
initrd /boot/initrd-...img
}
Здесь:
linux /boot/vmlinuz-...— путь к ядру Linux.- Всё, что написано после имени файла ядра — это параметры загрузки ядра.
initrd ...— initramfs/initrd-образ, который используется на раннем этапе загрузки./boot/grub/grub.cfg— итоговый конфигурационный файл GRUB2./etc/default/grub— основной файл, который редактируют для постоянных изменений./etc/grub.d/— скрипты, на основе которых генерируетсяgrub.cfg.
Важно:
Не редактируйте /boot/grub/grub.cfg вручную как основной способ настройки. Этот файл обычно перезаписывается командой обновления конфигурации GRUB.
2. Где находятся параметры загрузки ядра
2.1. Текущие параметры загруженной системы
Посмотреть параметры, с которыми загружено текущее ядро:
cat /proc/cmdline
Пример вывода:
BOOT_IMAGE=/boot/vmlinuz-... root=UUID=... ro quiet splash
Это самый быстрый способ понять, какие параметры реально применяются прямо сейчас.
2.2. Параметры в конфигурации GRUB
Посмотреть сгенерированные пункты меню:
grep -E 'menuentry|linux' /boot/grub/grub.cfg
Или более аккуратно:
awk '/menuentry /{print} /linux /{print}' /boot/grub/grub.cfg
Если у вас /boot на отдельном разделе, пути к ядру и initrd в GRUB могут быть без /boot, например:
linux /vmlinuz-... root=UUID=... ro quiet splash
initrd /initrd-...img
Если /boot не отдельный раздел, пути обычно такие:
linux /boot/vmlinuz-... root=UUID=... ro quiet splash
initrd /boot/initrd-...img
3. Основной файл для редактирования: /etc/default/grub
В ALT Linux 11 для постоянных настроек обычно используется:
/etc/default/grub
Перед редактированием сделайте резервную копию:
cp -a /etc/default/grub /etc/default/grub.bak
Открыть файл можно, например, так:
mcedit /etc/default/grub
или:
nano /etc/default/grub
или:
vim /etc/default/grub
4. Главные переменные /etc/default/grub
Пример типичного файла:
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="ALT Linux"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT=console
GRUB_CMDLINE_LINUX=""
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
Разберём ключевые параметры.
4.1. GRUB_CMDLINE_LINUX_DEFAULT
Это основной параметр, в котором обычно задают дополнительные опции ядра для обычных пунктов загрузки.
Пример:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
Если нужно добавить nomodeset:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"
Если нужно убрать графическую заставку и оставить подробный вывод:
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=7"
Или полностью очистить:
GRUB_CMDLINE_LINUX_DEFAULT=""
4.2. GRUB_CMDLINE_LINUX
Эта переменная добавляет параметры ко всем записям, включая, как правило, и восстановительные пункты, если они есть.
Пример:
GRUB_CMDLINE_LINUX="rootdelay=5"
Обычно сюда добавляют то, что должно действовать всегда, а не только в обычном режиме.
4.3. Разница между GRUB_CMDLINE_LINUX и GRUB_CMDLINE_LINUX_DEFAULT
Упрощённо:
итоговая строка ядра = параметры из GRUB_CMDLINE_LINUX + параметры из GRUB_CMDLINE_LINUX_DEFAULT
Но:
GRUB_CMDLINE_LINUXобычно попадает во все записи.GRUB_CMDLINE_LINUX_DEFAULTобычно попадает в обычные записи, но не обязательно в recovery/однопользовательские варианты.
Для большинства пользовательских правок достаточно:
GRUB_CMDLINE_LINUX_DEFAULT="..."
4.4. GRUB_TIMEOUT
Время отображения меню в секундах:
GRUB_TIMEOUT=5
Если нужно больше времени на выбор:
GRUB_TIMEOUT=10
Если меню нужно всегда показывать:
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=5
Если меню скрыто:
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
При скрытом меню обычно нужно нажать Esc или удерживать Shift на ранних этапах загрузки.
4.5. GRUB_DEFAULT
Определяет пункт загрузки по умолчанию.
Варианты:
GRUB_DEFAULT=0
Загружать первый пункт меню.
GRUB_DEFAULT=saved
Использовать последний выбранный пункт.
GRUB_DEFAULT="Название пункта"
Загружать конкретный пункт по имени.
Если используется GRUB_DEFAULT=saved, полезны команды:
grub-set-default 0
grub-reboot 2
grub-reboot выбирает пункт только на одну следующую загрузку.
4.6. GRUB_DISABLE_SUBMENU
Если не хочется иметь подменю «Дополнительные параметры»:
GRUB_DISABLE_SUBMENU=true
Если хотите видеть все ядра отдельными пунктами:
GRUB_DISABLE_SUBMENU=false
5. Применение изменений
После редактирования /etc/default/grub нужно обновить конфигурацию GRUB.
Обычно в ALT Linux достаточно:
update-grub
Если команды update-grub нет, выполните:
grub-mkconfig -o /boot/grub/grub.cfg
В некоторых вариантах установки может использоваться команда с префиксом grub2-:
grub2-mkconfig -o /boot/grub/grub.cfg
Но в ALT чаще встречается именно update-grub или grub-mkconfig.
5.1. Проверка синтаксиса /etc/default/grub
Файл /etc/default/grub по сути является shell-файлом.
Можно проверить синтаксис так:
bash -n /etc/default/grub
Если ошибок нет, вывод будет пустым.
5.2. Проверка получившегося grub.cfg
После обновления посмотрите строки ядра:
grep 'linux' /boot/grub/grub.cfg
Или:
grep -E 'menuentry|linux' /boot/grub/grub.cfg
Убедитесь, что ваши параметры появились в нужных пунктах.
6. Временное изменение параметров загрузки через меню GRUB
Это самый безопасный способ проверить параметр без постоянного изменения конфигурации.
Алгоритм:
- Перезагрузите компьютер.
- Дождитесь меню GRUB.
- Выберите нужный пункт загрузки.
- Нажмите клавишу
e. - Найдите строку, начинающуюся с
linuxили иногдаlinuxefi. - Отредактируйте параметры ядра.
- Нажмите
Ctrl+XилиF10для загрузки.
Пример было:
linux /boot/vmlinuz-... root=UUID=... ro quiet splash
Можно временно изменить на:
linux /boot/vmlinuz-... root=UUID=... ro nomodeset
Важно:
Такое изменение действует только до перезагрузки. Оно не меняет /etc/default/grub и /boot/grub/grub.cfg.
7. Постоянное изменение параметров загрузки
Пример задачи: добавить nomodeset постоянно.
1. Откройте файл:
mcedit /etc/default/grub
2. Найдите строку:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
3. Измените на:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"
4. Сохраните файл.
5. Обновите GRUB:
update-grub
6. Проверьте:
grep 'linux' /boot/grub/grub.cfg
7. Перезагрузитесь и убедитесь:
cat /proc/cmdline
8. Часто используемые параметры ядра
Ниже — практический список параметров, которые чаще всего нужны при настройке или восстановлении загрузки.
8.1. Параметры корневого раздела
root=...
Указывает корневой раздел.
Примеры:
root=UUID=12345678-1234-1234-1234-1234567890ab
root=/dev/sda2
root=/dev/mapper/vg-root
Рекомендуется использовать UUID=, потому что имена /dev/sdX могут меняться.
Посмотреть UUID:
blkid
или:
lsblk -f
Узнать текущий корень:
findmnt /
или:
findmnt -no SOURCE /
Узнать UUID корня:
findmnt -no UUID /
ro
Монтировать корневую файловую систему изначально только для чтения.
Пример:
root=UUID=... ro
Часто используется по умолчанию, потому что позволяет безопасно проверить файловую систему.
rw
Монтировать корневую файловую систему сразу для чтения и записи.
Пример:
root=UUID=... rw
Используйте с осторожностью, особенно если есть подозрение на ошибки файловой системы.
rootdelay=5
Ждать 5 секунд перед попыткой найти корневое устройство. Полезно, если корень появляется с задержкой, например на некоторых контроллерах, сетевых хранилищах или медленных устройствах.
Пример:
GRUB_CMDLINE_LINUX_DEFAULT="rootdelay=5"
или:
GRUB_CMDLINE_LINUX="rootdelay=5"
rootflags=...
Дополнительные опции монтирования корневой файловой системы.
Пример для Btrfs-подтома:
root=UUID=... rootflags=subvol=@
Или:
root=UUID=... rootflags=subvol=@,compress=zstd
Используйте только если понимаете структуру Btrfs.
8.2. Подробность загрузки и отладка
quiet
Уменьшает количество сообщений на экране.
Пример:
quiet
Если нужно видеть процесс загрузки — уберите quiet.
splash
Показывает графическую заставку, если используется механизм типа Plymouth.
Пример:
splash
Если система зависает на заставке или нужно видеть сообщения — уберите splash.
loglevel=7
Увеличивает уровень подробностью сообщений ядра.
Пример:
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=7"
ignore_loglevel
Игнорировать ограничение уровня логирования.
Пример:
ignore_loglevel
Полезно при глубокой диагностике.
systemd.show_status=true
Показывать статус служб при загрузке, если используется systemd.
Пример:
GRUB_CMDLINE_LINUX_DEFAULT="systemd.show_status=true"
systemd.log_level=debug
Более подробный лог для системного менеджера.
Пример:
GRUB_CMDLINE_LINUX_DEFAULT="systemd.log_level=debug"
Используйте только для диагностики.
8.3. Режимы загрузки и восстановление
single
Загрузка в однопользовательском режиме.
Пример:
single
В современных системах с systemd чаще лучше использовать systemd.unit=rescue.target.
1
Уровень запуска 1, обычно однопользовательский режим.
Пример:
1
3
Многопользовательский режим без графического входа.
Пример:
3
В системах с systemd это обычно соответствует:
systemd.unit=multi-user.target
5
Графический режим.
Пример:
5
В системах с systemd:
systemd.unit=graphical.target
systemd.unit=rescue.target
Загрузка в спасательный режим с запросом пароля root.
Пример:
GRUB_CMDLINE_LINUX_DEFAULT="systemd.unit=rescue.target"
Но обычно лучше не делать это постоянным, а использовать временно через редактирование пункта GRUB.
systemd.unit=emergency.target
Аварийный режим.
Пример:
systemd.unit=emergency.target
init=/bin/sh
Запустить командную оболочку вместо стандартного init.
Пример:
root=UUID=... rw init=/bin/sh
Это аварийный вариант. Часто используется для восстановления пароля или ручного ремонта системы.
После загрузки может понадобиться:
mount -o remount,rw /
passwd root
sync
mount -o remount,ro /
exec /sbin/reboot -f
Важно:
Не делайте init=/bin/sh постоянным параметром, если это не нужно специально для диагностики.
8.4. Графика и видеодрайверы
nomodeset
Отключить настройку видеорежима ядром. Очень часто помогает при чёрном экране на этапе загрузки.
Пример:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"
i915.modeset=0
Отключить KMS для драйвера Intel i915.
Пример:
i915.modeset=0
nouveau.modeset=0
Отключить modeset для открытого драйвера NVIDIA nouveau.
Пример:
nouveau.modeset=0
amdgpu.modeset=0
Отключить modeset для amdgpu.
Пример:
amdgpu.modeset=0
nvidia-drm.modeset=1
Используется с проприетарным драйвером NVIDIA, когда нужен DRM/KMS.
Пример:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nvidia-drm.modeset=1"
video=...
Принудительно задать видеопараметры.
Пример:
video=1920x1080
Или:
video=HDMI-A-1:1920x1080
Использовать осторожно, если точно знаете имя выхода и нужный режим.
8.5. ACPI и электропитание
acpi=off
Полностью отключить ACPI.
Может помочь на очень старом или проблемном железе, но это крайняя мера.
Пример:
acpi=off
acpi_osi=Linux
Сообщить BIOS/UEFI, что ОС является Linux.
Пример:
acpi_osi=Linux
acpi_backlight=vendor
Использовать специфичный для производителя метод управления подсветкой.
Пример:
acpi_backlight=vendor
Альтернатива:
acpi_backlight=native
pci=noacpi
Не использовать ACPI для настройки PCI.
Пример:
pci=noacpi
Использовать только при проблемах с оборудованием.
noapic
Отключить использование APIC.
Пример:
noapic
nolapic
Отключить локальный APIC процессора.
Пример:
nolapic
Эти параметры могут помочь на старом или специфическом железе, но на современных системах обычно не рекомендуются.
8.6. Процессор и производительность
maxcpus=1
Использовать только один процессор.
Пример:
maxcpus=1
Диагностический параметр.
nosmp
Отключить симметричную многопроцессорность.
Пример:
nosmp
intel_pstate=disable
Отключить драйвер управления частотой Intel P-State.
Пример:
intel_pstate=disable
intel_idle.max_cstate=1
Ограничить состояния простоя процессора.
Пример:
intel_idle.max_cstate=1
Иногда помогает при проблемах с зависанием или пробуждением.
mitigations=off
Отключить смягчения уязвимостей процессора.
Пример:
mitigations=off
Важно:
Это может повысить производительность, но снижает безопасность. Не рекомендуется для рабочих и серверных систем.
8.7. Диски, файловые системы и проверки
fsck.mode=skip
Пропустить проверку файловой системы через systemd-fsck.
Пример:
fsck.mode=skip
Использовать осторожно.
fsck.mode=force
Принудительно запустить проверку файловой системы.
Пример:
fsck.mode=force
fsck.repair=yes
Автоматически пытаться исправлять ошибки.
Пример:
fsck.repair=yes
8.8. Модули ядра
module_blacklist=имя_модуля
Запретить загрузку модуля.
Пример:
module_blacklist=nouveau
Важно:
Для постоянного отключения модуля обычно правильнее использовать файлы в /etc/modprobe.d/, но для разовой диагностики или ранней загрузки может пригодиться и параметр командной строки.
8.9. Шифрование и LVM
Если корень находится на LUKS, в строке загрузки обычно могут быть параметры вида:
rd.luks.uuid=...
rd.luks.name=...
Если используется LVM:
rd.lvm.lv=...
Примеры нужно смотреть в вашем текущем /proc/cmdline.
Важно:
Не удаляйте параметры rd.luks.* или параметры активации LVM, если не понимаете, как именно у вас настроена загрузка. Иначе система может не найти корневой раздел.
8.10. Консоль и удалённый доступ
Последовательная консоль
Пример:
console=ttyS0,115200n8 console=tty0
Это полезно для серверов и диагностики.
Ранний вывод на консоль
earlyprintk=ttyS0,115200,keep
Или:
earlyprintk=vga
8.11. Паника ядра
panic=10
Перезагрузиться через 10 секунд после паники ядра.
Пример:
panic=10
oops=panic
Превращать oops в panic.
Пример:
oops=panic
Используется для отладки или повышения предсказуемости поведения при сбоях.
9. Примеры типовых задач
9.1. Убрать тихую загрузку и видеть процесс
Было:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
Стало:
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=7"
Затем:
update-grub
9.2. Чёрный экран при загрузке
Часто помогает временно добавить:
nomodeset
Проверить через редактирование пункта GRUB клавишей e.
Если помогло, сделать постоянно:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"
Затем:
update-grub
9.3. Загрузиться без графического режима
Временно в строке ядра добавить:
systemd.unit=multi-user.target
Или:
3
Если нужно постоянно:
GRUB_CMDLINE_LINUX_DEFAULT="systemd.unit=multi-user.target"
Но обычно правильнее управлять целью загрузки через штатные механизмы системы, а не через постоянный параметр ядра.
9.4. Загрузиться в спасательный режим
Временно добавить:
systemd.unit=rescue.target
Если нужно получить минимальную оболочку:
systemd.unit=emergency.target
9.5. Если корень находится медленно
Добавить:
GRUB_CMDLINE_LINUX="rootdelay=5"
Или временно:
rootdelay=10
9.6. Если используется Btrfs-подтом
Пример:
root=UUID=... rootflags=subvol=@
Если у вас уже есть рабочий пункт загрузки, лучше сначала посмотреть текущие параметры:
cat /proc/cmdline
И не менять rootflags, если не уверены.
Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.