Кастомные аргументы ядра в GRUB добавляются в одну строку. Открой /etc/default/grub, допиши нужные параметры в GRUB_CMDLINE_LINUX_DEFAULT или GRUB_CMDLINE_LINUX, сохрани файл и выполни sudo grub-mkconfig -o /boot/grub/grub.cfg. После перезагрузки ядро получит новые аргументы, а проверить их можно командой cat /proc/cmdline. Больше ничего делать не нужно.
Здесь два уровня: /etc/default/grub (исходный файл, который ты редактируешь руками) и /boot/grub/grub.cfg (сгенерированный конфиг, который загрузчик читает при старте).
Править grub.cfg вручную не стоит. При следующем обновлении ядра или перегенерации конфига твои правки сотрутся. Работай только с /etc/default/grub, а grub.cfg пересоздавай командой grub-mkconfig.
За аргументы отвечают две переменные:
GRUB_CMDLINE_LINUX_DEFAULT: аргументы для обычных пунктов меню. Сюда кладут параметры загрузки и suspend/resume.GRUB_CMDLINE_LINUX: дополнительные аргументы, которые применяются всегда, в том числе к recovery-режиму.Разница простая. GRUB_CMDLINE_LINUX_DEFAULT попадает в обычные записи меню, GRUB_CMDLINE_LINUX во все записи без исключения. В итоговой строке ядра обе переменные объединяются.
Пример. Ты хочешь, чтобы обычная загрузка была тихой, но в recovery-режиме сообщения ядра оставались видны. Тогда quiet кладёшь в GRUB_CMDLINE_LINUX_DEFAULT, а loglevel=3 в GRUB_CMDLINE_LINUX. В обычной записи соберётся loglevel=3 quiet, в recovery только loglevel=3.
Открой файл:
sudo nano /etc/default/grub
Найди строку:
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet"
Допиши свои параметры внутри кавычек:
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet mitigations=off"
Сохрани файл и перегенерируй конфиг:
sudo grub-mkconfig -o /boot/grub/grub.cfg
Это обязательный шаг. Без него изменения не попадут в grub.cfg, и ядро получит старые аргументы.
При генерации grub-mkconfig выведет строки вида Found linux image: /boot/vmlinuz-linux. Это нормально: скрипт нашёл ядра и собрал для них записи меню. Если таких строк нет, проверь, что ядро установлено и /boot смонтирован.
После перезагрузки проверь результат:
cat /proc/cmdline
В выводе увидишь все аргументы, с которыми стартовало ядро, включая твои.
Параметры, которые должны действовать всегда, записывай во вторую переменную:
GRUB_CMDLINE_LINUX="modprobe.blacklist=nouveau"
После правки снова выполни grub-mkconfig. Обе переменные попадут в grub.cfg отдельными строками, а при загрузке объединятся.
quiet прячет сообщения ядра во время загрузки. Вместо потока текста ты видишь логотип или пустой экран. splash включает заставку, если она установлена. Вместе они дают чистую загрузку без мельтешения строк.
quiet не отключает сообщения полностью, а снижает их поток до минимума. Критические ошибки всё равно появятся на экране. splash работает только вместе с установленной темой или заставкой, иначе просто нечего показывать.
Если что-то не грузится и нужна диагностика, убери quiet и splash на время. Ядро покажет все сообщения. Как настроить саму заставку, разобрано в статье «Тема оформления GRUB: фон и стиль».
Ограничивает вывод ядра уровнем ошибок и выше. Полезно в паре с quiet: даже при проблемах на экране появятся только серьёзные сообщения.
Отключает аппаратные меры защиты от Spectre и Meltdown. Даёт небольшой прирост производительности на старых CPU, но снижает безопасность. Ставить стоит только на машинах, где ты контролируешь всё, что выполняется. На сервере с чужим кодом лучше не трогать. На современных CPU прирост обычно незаметен, на старых поколениях ощущается в тяжёлых вычислениях. Если не знаешь, зачем тебе этот параметр, не добавляй его.
Заставляет систему использовать полноценный S3-режим сна вместо S2idle. Актуально для ноутбуков, где после закрытия крышки батарея тает за ночь. Если после systemctl suspend ноутбук просыпается сам или греется в рюкзаке, попробуй этот параметр.
Проверить текущий режим сна можно командой cat /sys/power/mem_sleep. Если в выводе активен s2idle, а не deep, параметр пригодится. После добавления mem_sleep_default=deep активным станет deep.
Включает режим pass-through для IOMMU. Нужен для проброса устройств в виртуальные машины, например GPU passthrough, и для некоторых сетевых карт. На обычном десктопе без VFIO не даёт ничего.
Включает ранний KMS для драйвера NVIDIA. Требуется для Wayland, корректной работы некоторых приложений и переключения виртуальных терминалов без мерцания. Подробнее про установку драйвера читай в статье «Установка драйвера NVIDIA на Arch Linux».
Отключает watchdog-таймеры ядра, softlockup и hardlockup. Убирает периодические прерывания и может снизить энергопотребление на ноутбуках. Минус один: потеряешь диагностику зависаний ядра.
Запрещает загрузку модуля ядра с самого старта. Например, modprobe.blacklist=nouveau отключит свободный драйвер NVIDIA до того, как он успеет загрузиться. Удобно, когда модуль конфликтует с другим или вызывает панику при загрузке.
Самый простой способ: посмотреть текущую командную строку ядра.
cat /proc/cmdline
Ядро записывает туда реальные аргументы, с которыми стартовало. Если твоего параметра там нет, он не применился.
Второй способ: заглянуть в сгенерированный конфиг.
grep linux /boot/grub/grub.cfg
В строках linux /vmlinuz-linux ... увидишь итоговые аргументы для каждого пункта меню. GRUB_CMDLINE_LINUX_DEFAULT попадёт в обычные записи, GRUB_CMDLINE_LINUX во все.
Структура записи в grub.cfg выглядит так:
menuentry 'Arch Linux' {
...
linux /vmlinuz-linux root=UUID=... rw loglevel=3 quiet
initrd /initramfs-linux.img
}
Строка linux и есть итоговая командная строка ядра. Все параметры из обеих переменных GRUB собирает именно сюда.
Не хочешь менять файлы, проверь параметр на один раз. В меню GRUB выбери нужный пункт и нажми e. Откроется редактор записей. Найди строку, начинающуюся с linux, допиши в конец аргумент и нажми Ctrl+X или F10 для загрузки.
Изменение действует только для текущей загрузки. После перезагрузки GRUB вернётся к grub.cfg, и параметр исчезнет. Так удобно тестировать mitigations=off или mem_sleep_default=deep перед тем, как прописывать их навсегда.
Редактор в GRUB работает как обычный текстовый редактор: стрелки двигают курсор, Ctrl+W ищет текст, Ctrl+U и Ctrl+K вырезают и вставляют строки. Если нажал лишнего, Ctrl+E вернёт исходную запись.
Самая частая причина: забытый grub-mkconfig. Ты поменял /etc/default/grub, но не перегенерировал конфиг. Проверь:
sudo grub-mkconfig -o /boot/grub/grub.cfg
Вторая причина: параметр записан в неправильную переменную. Если ты добавил его в GRUB_CMDLINE_LINUX, а ждёшь, что он появится только в обычной записи, так не выйдет. Проверь, куда попал параметр, через grep linux /boot/grub/grub.cfg.
Третья причина: опечатка в имени параметра. Ядро молча игнорирует неизвестные аргументы. Сверь имя с документацией: quiet, splash, mitigations=off, mem_sleep_default=deep пишутся именно так.
Четвёртая причина: параметр перекрыт другим. Например, loglevel=3 в одной переменной и loglevel=7 в другой. Побеждает последний в итоговой строке.
Пятая причина: файл не сохранился. nano при выходе спрашивает подтверждение, и если ответить N, изменения пропадут. Проверь содержимое файла перед генерацией: cat /etc/default/grub.
Удали лишние параметры из /etc/default/grub и снова выполни:
sudo grub-mkconfig -o /boot/grub/grub.cfg
Затем перезагрузись. Если после отключения quiet и splash загрузка стала шумной, это нормально. Верни их обратно тем же способом.
Перед экспериментами можно сохранить копию текущего файла:
sudo cp /etc/default/grub /etc/default/grub.bak
Если что-то пойдёт не так, вернёшь файл одной командой sudo cp /etc/default/grub.bak /etc/default/grub и снова перегенерируешь конфиг.
Если система не загружается после экспериментов с аргументами, загружайся с live-USB, отредактируй /etc/default/grub через chroot и перегенерируй конфиг. Методика та же, что при восстановлении загрузчика: «grub rescue: что делать, когда grub rescue>».
GRUB_CMDLINE_LINUX_DEFAULT применяется к обычным пунктам меню, GRUB_CMDLINE_LINUX ко всем записям, включая recovery. Параметры suspend/resume принято класть в _DEFAULT, обязательные в _LINUX.
Нет. grub-install нужен только при установке или переустановке загрузчика. Для смены аргументов достаточно grub-mkconfig -o /boot/grub/grub.cfg.
mitigations=off отключает защиту от Spectre и Meltdown. На личной машине с проверенным софтом риск небольшой. На сервере или машине с чужим кодом лучше оставить защиту включённой.
Скорее всего, ты не выполнил grub-mkconfig после правки /etc/default/grub, либо в имени параметра опечатка. Проверь оба момента.
GRUB применяет аргументы из /etc/default/grub ко всем ядрам сразу. Чтобы задать параметры только одному, придётся править grub.cfg вручную после каждой генерации, а это неудобно. Проще держать несколько ядер с общими аргументами, как описано в статье «Несколько ядер в меню GRUB: linux, linux-lts, linux-hardened».
Кастомные аргументы ядра в GRUB: правка двух строк в /etc/default/grub и одна команда grub-mkconfig -o /boot/grub/grub.cfg. GRUB_CMDLINE_LINUX_DEFAULT отвечает за обычные записи меню, GRUB_CMDLINE_LINUX за все. Проверяй результат через cat /proc/cmdline, тестируй новые параметры через e в меню GRUB, а если что-то пошло не так, просто убери параметр и перегенерируй конфиг. Никакой магии, только файл и одна команда.
Задай вопрос в чате — отвечаем быстро, по делу и без воды.
Комментарии