Подробный гайд по параметрам загрузки ядра и настройке GRUB2 в ALT Linux 11 - Часть 1

Практический гайд по параметрам загрузки ядра в ALT Linux 11 через GRUB2. Правка /etc/default/grub, временные изменения, решение проблем с видео и старт ОС.

2026.09.09                  


Подробный гайд по параметрам загрузки ядра и настройке GRUB2 в ALT Linux 11 - Часть 1Подробный гайд по параметрам загрузки ядра и настройке 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

Это самый безопасный способ проверить параметр без постоянного изменения конфигурации.

Алгоритм:

  1. Перезагрузите компьютер.
  2. Дождитесь меню GRUB.
  3. Выберите нужный пункт загрузки.
  4. Нажмите клавишу e.
  5. Найдите строку, начинающуюся с linux или иногда linuxefi.
  6. Отредактируйте параметры ядра.
  7. Нажмите 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, если не уверены.


Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.


Статью подготовил: Аверко Денис Сергеевич @Nymexis г. Омск (специалист по ЗИ)

Комментарии

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