Параметры ядра передаются загрузчику в командной строке и меняют поведение системы ещё до старта пользовательского окружения. В Arch Linux их прописывают в /etc/default/grub в строке GRUB_CMDLINE_LINUX_DEFAULT, после чего перегенерируют grub.cfg. Самые полезные на практике: quiet (тихая загрузка), mem_sleep_default=deep (лечит разрядку батареи в спящем режиме на ноутбуках) и mitigations=off (отключает спекулятивные защиты CPU ради скорости на старых процессорах).
Загрузчик собирает командную строку ядра из своих настроек и параметров, вшитых в образ ядра. В GRUB всё сводится к файлу /etc/default/grub:
GRUB_CMDLINE_LINUX_DEFAULT="quiet mem_sleep_default=deep"
После правки обязательно перегенерируй конфиг:
grub-mkconfig -o /boot/grub/grub.cfg
Без этого шага изменения не попадут в загрузочное меню.
В том же файле есть строка GRUB_CMDLINE_LINUX — она добавляет параметры только к обычной загрузке, но не к аварийным записям вроде «Advanced options». На практике почти всегда правят именно GRUB_CMDLINE_LINUX_DEFAULT: она применяется ко всем пунктам меню, включая fallback-ядра.
Как GRUB собирает аргументы из разных строк, разобрано в статье «Кастомные аргументы ядра в GRUB».
Если ты используешь systemd-boot или прямую загрузку через EFISTUB, параметры живут в файлах записей в /boot/loader/entries/ — строка options quiet mem_sleep_default=deep. При создании записи через efibootmgr параметры передаются в опции -u. Разница между загрузчиками описана в статье «Прямая загрузка ядра через EFISTUB и UKI».
Не обязательно перегенерировать конфиг ради эксперимента. В меню GRUB наведись на нужную запись и нажми e — откроется редактор. Найди строку, начинающуюся с linux, допиши в её конец нужный параметр и нажми Ctrl+X. Система загрузится с этим параметром один раз, а после перезагрузки всё вернётся к конфигу.
В systemd-boot то же самое: в меню загрузки нажми e на нужной записи, отредактируй строку options и запусти запись. Это самый безопасный способ проверить, не сломает ли параметр загрузку.
Строка linux в GRUB уже содержит обязательные аргументы вроде root=UUID=... и rw. Не удаляй их — дописывай новый параметр в конец строки через пробел.
После загрузки проверь результат командой cat /proc/cmdline — увидишь, какие параметры реально переданы ядру. Если параметра там нет, значит, ты ошибся в написании или дописал его не в ту строку.
Ниже — проверенные на практике параметры, сгруппированные по задачам. Каждый из них добавляется в GRUB_CMDLINE_LINUX_DEFAULT и проверяется на один запуск через редактирование записи в меню.
quiet прячет сообщения ядра при загрузке — вместо потока текста ты видишь логотип или просто чёрный экран. Сам по себе он ничего не ускоряет, но делает загрузку опрятной. loglevel=3 ограничивает вывод уровнем ошибок и выше. Уровни лога: 0 — экстренные сообщения, 3 — ошибки, 7 — всё подряд. Для повседневной работы хватает тройки, для отладки ставь семёрку. Если что-то падает при старте, временно убери quiet и добавь loglevel=7 — увидишь, на каком шаге система спотыкается.
Параметр для ноутбуков. По умолчанию многие системы используют s2idle — «спящий режим» без полного отключения питания. Ноутбук в рюкзаке просыпается тёплым и разряжается за несколько часов. mem_sleep_default=deep заставляет систему использовать полноценный S3 (suspend to RAM), при котором питание отключается почти полностью. Проверить активный режим можно так:
cat /sys/power/mem_sleep
Если в выводе s2idle [deep] — квадратные скобки стоят у deep, значит, параметр работает.
Важный нюанс: режим deep должен поддерживаться железом. На некоторых ноутбуках BIOS не отдаёт ядру S3, и тогда в /sys/power/mem_sleep останется только s2idle. Параметр тут не поможет — нужно смотреть настройки прошивки.
Спекулятивные уязвимости процессора (Spectre, Meltdown и их родня) закрываются ценой производительности. mitigations=off отключает все защиты разом. На старых процессорах прирост в бенчмарках заметный, но ты сознательно открываешь систему для известных атак. mitigations=auto — поведение по умолчанию: защиты включены там, где ядро считает нужным. Компромиссный вариант — mitigations=auto,nosmt, который отключает только Hyper-Threading.
На современных процессорах потери от защит меньше, поэтому mitigations=off там даёт мало выгоды. А вот на старых CPU, особенно в связке с виртуализацией, разница ощутимая. Если сомневаешься — оставь auto и померяй производительность до и после.
Как выбрать ядро под свои задачи, рассказано в статье «Какое ядро выбрать: linux, lts, zen или hardened».
Отключает watchdog-потоки ядра (watchdog и softlockup). Они нужны для диагностики зависаний, но постоянно жгут процессорное время. На слабых машинах nowatchdog даёт чуть более быструю загрузку и меньше фоновой нагрузки. Если позже понадобится диагностировать зависание, watchdog вернётся после удаления параметра.
Включает DRM/KMS для проприетарного драйвера Nvidia. Без этого параметра не заработает Wayland-сессия, а на некоторых конфигурациях страдает и X11. Параметр обязателен для современных окружений вроде Hyprland или GNOME на Wayland. Если после включения modeset пропал текстовый терминал, добавь nvidia-drm.fbdev=1 — он включает framebuffer-консоль поверх DRM.
intel_iommu=on и amd_iommu=on включают IOMMU для процессоров Intel и AMD соответственно. Это нужно для проброса устройств в виртуальные машины и для некоторых сценариев безопасности. iommu=pt переводит IOMMU в режим passthrough — устройства работают напрямую, без трансляции адресов, что снижает задержки при пробросе GPU в VM. Проверить, что IOMMU реально включился, можно в dmesg: для Intel ищи строки DMAR: IOMMU enabled, для AMD — AMD-Vi: IOMMU enabled.
Отключает Advanced Error Reporting для PCI-устройств. Полезно, если в dmesg постоянно сыплются сообщения об ошибках AER, а железо при этом работает нормально. Параметр не лечит причину, но убирает шум и иногда чинит зависания на проблемных контроллерах. Проверить, что AER выключен, можно командой dmesg | grep -i aer.
Включает Display Core — подсистему дисплея для видеокарт AMD. На старых ядрах без неё не работали некоторые режимы вывода, сейчас DC включён по умолчанию. Параметр нужен в основном для отката и отладки: amdgpu.dcdebugmask=0x10 включает расширенное логирование DC, что пригодится, если картинка на мониторе ведёт себя странно.
Параметры для шифрования и гибернации. rd.luks.name=UUID=xxxx-xxxx=luksroot подключает LUKS-раздел на этапе initramfs, а cryptdevice=UUID=...:luksroot — более старый вариант того же. resume=UUID=... указывает раздел подкачки для гибернации. Оба параметра работают внутри initramfs-сценариев, о которых подробно рассказано в статье «mkinitcpio: хуки и модули». Для rd.luks.name в initramfs должен быть хук systemd или encrypt, а для resume — хук resume. Без них параметры просто проигнорируются.
Подменяет программу инициализации. По умолчанию ядро запускает /sbin/init (в Arch это симлинк на systemd). Параметр init=/usr/bin/bash загрузит систему прямо в root-shell — удобно для аварийного восстановления, когда systemd не стартует.
Соберём типичный набор для ноутбука с Nvidia и LUKS:
GRUB_CMDLINE_LINUX_DEFAULT="quiet loglevel=3 mem_sleep_default=deep nvidia-drm.modeset=1 rd.luks.name=UUID=abcd-1234=luksroot resume=UUID=5678-90ab"
Здесь quiet и loglevel=3 делают загрузку тихой, mem_sleep_default=deep чинит сон, nvidia-drm.modeset=1 готовит Wayland, а два последних параметра поднимают шифрованный корень и гибернацию. UUID подставляй свои — их показывает lsblk -f. После правки не забудь grub-mkconfig -o /boot/grub/grub.cfg.
Если шифрования нет, убери rd.luks.name из строки. Если гибернация не нужна, resume тоже лишний — без него ядро просто не будет искать образ подкачки при попытке восстановления.
cat /proc/cmdline
Вывод покажет точную командную строку, с которой загрузилось текущее ядро. Удобно для проверки, применился ли параметр после перегенерации конфига. Файл /proc/cmdline — виртуальный, он отражает только текущую загрузку и не хранит историю. Если параметр пропал после перезагрузки, значит, он не попал в конфиг загрузчика.
Полный перечень живёт в исходниках ядра: Documentation/admin-guide/kernel-parameters.txt. В Arch можно поставить пакет linux-docs и читать его локально либо открыть ту же страницу в интернете. Там описаны сотни параметров, включая те, что не попали в этот справочник: от тонкой настройки планировщика до управления энергопотреблением.
Имена параметров чувствительны к регистру: quiet и Quiet — разные вещи. Перед добавлением незнакомого параметра сверься с документацией, иначе ядро просто проигнорирует опечатку.
Неправильный параметр обычно приводит к зависанию на раннем этапе загрузки или к панике ядра. Лечится без live-USB: перезагрузись, в меню GRUB нажми e, найди строку linux и удали из неё проблемный параметр. Затем Ctrl+X — система загрузится, а ты вернёшься к конфигу и поправишь его.
Если параметр сломал загрузку настолько, что не видно даже меню GRUB, — загрузись с live-USB и отредактируй /etc/default/grub через arch-chroot. Методика восстановления загрузчика описана в статье «grub rescue: что делать».
Добавляй параметры по одному и проверяй каждый после перезагрузки — так проще понять, что именно сломало систему. Некоторые аргументы можно указывать несколько раз: ядро возьмёт последнее значение. Дубли не ломают загрузку, но захламляют конфиг.
quiet. Он скрывает сообщения ядра при старте. В паре с loglevel=3 загрузка выглядит чисто, а при диагностике проблем оба параметра временно убирают. Полная тишина достигается связкой quiet loglevel=3 и отключением вывода systemd — но это уже настройка самого systemd, а не ядра.
Да. Это штатный режим S3, который использовался на ноутбуках десятилетиями. Единственный нюанс — на некоторых машинах пробуждение из S3 работает медленнее, чем из s2idle.
Это осознанный компромисс. Защиты от спекулятивных атак отключаются, и машина становится уязвимой для атак класса Spectre. Для домашней машины без критичных файлов риск обычно приемлем, для сервера — нет.
Сначала cat /proc/cmdline — если параметра нет в выводе, значит, он не попал в конфиг. Проверь /etc/default/grub и перегенерируй grub.cfg. Для systemd-boot проверь файл загрузочной записи в /boot/loader/entries/.
Удали параметр из /etc/default/grub, перегенерируй grub.cfg и перезагрузись. Для разовой проверки достаточно отредактировать запись в меню GRUB и загрузиться без параметра — конфиг при этом не пострадает.
Параметры ядра — быстрый способ изменить поведение системы без пересборки. quiet и loglevel управляют выводом, mem_sleep_default=deep чинит разрядку ноутбука в спящем режиме, mitigations=off разменивает безопасность на скорость, а nvidia-drm.modeset=1 — обязательный шаг для Wayland на Nvidia. Проверяй новые параметры через редактирование записи в GRUB, смотри результат в /proc/cmdline и не забывай перегенерировать grub.cfg после правки /etc/default/grub.
Начни с малого: добавь quiet и mem_sleep_default=deep, если у тебя ноутбук. Остальное подключай по мере необходимости — каждый параметр решает конкретную задачу, а лишние аргументы в командной строке только усложняют диагностику.
Задай вопрос в чате — отвечаем быстро, по делу и без воды.
Комментарии