Все об Arch Linux

Arch Linux будет тем, что вы из него сделаете!

Параметры ядра в командной строке: полный справочник

Параметры ядра передаются загрузчику в командной строке и меняют поведение системы ещё до старта пользовательского окружения. В 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

quiet прячет сообщения ядра при загрузке — вместо потока текста ты видишь логотип или просто чёрный экран. Сам по себе он ничего не ускоряет, но делает загрузку опрятной. loglevel=3 ограничивает вывод уровнем ошибок и выше. Уровни лога: 0 — экстренные сообщения, 3 — ошибки, 7 — всё подряд. Для повседневной работы хватает тройки, для отладки ставь семёрку. Если что-то падает при старте, временно убери quiet и добавь loglevel=7 — увидишь, на каком шаге система спотыкается.

mem_sleep_default=deep

Параметр для ноутбуков. По умолчанию многие системы используют 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. Параметр тут не поможет — нужно смотреть настройки прошивки.

mitigations=off и mitigations=auto

Спекулятивные уязвимости процессора (Spectre, Meltdown и их родня) закрываются ценой производительности. mitigations=off отключает все защиты разом. На старых процессорах прирост в бенчмарках заметный, но ты сознательно открываешь систему для известных атак. mitigations=auto — поведение по умолчанию: защиты включены там, где ядро считает нужным. Компромиссный вариант — mitigations=auto,nosmt, который отключает только Hyper-Threading.

На современных процессорах потери от защит меньше, поэтому mitigations=off там даёт мало выгоды. А вот на старых CPU, особенно в связке с виртуализацией, разница ощутимая. Если сомневаешься — оставь auto и померяй производительность до и после.

Как выбрать ядро под свои задачи, рассказано в статье «Какое ядро выбрать: linux, lts, zen или hardened».

nowatchdog

Отключает watchdog-потоки ядра (watchdog и softlockup). Они нужны для диагностики зависаний, но постоянно жгут процессорное время. На слабых машинах nowatchdog даёт чуть более быструю загрузку и меньше фоновой нагрузки. Если позже понадобится диагностировать зависание, watchdog вернётся после удаления параметра.

nvidia-drm.modeset=1

Включает DRM/KMS для проприетарного драйвера Nvidia. Без этого параметра не заработает Wayland-сессия, а на некоторых конфигурациях страдает и X11. Параметр обязателен для современных окружений вроде Hyprland или GNOME на Wayland. Если после включения modeset пропал текстовый терминал, добавь nvidia-drm.fbdev=1 — он включает framebuffer-консоль поверх DRM.

iommu и iommu=pt

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.

pci=noaer

Отключает Advanced Error Reporting для PCI-устройств. Полезно, если в dmesg постоянно сыплются сообщения об ошибках AER, а железо при этом работает нормально. Параметр не лечит причину, но убирает шум и иногда чинит зависания на проблемных контроллерах. Проверить, что AER выключен, можно командой dmesg | grep -i aer.

amdgpu.dc=1

Включает Display Core — подсистему дисплея для видеокарт AMD. На старых ядрах без неё не работали некоторые режимы вывода, сейчас DC включён по умолчанию. Параметр нужен в основном для отката и отладки: amdgpu.dcdebugmask=0x10 включает расширенное логирование DC, что пригодится, если картинка на мониторе ведёт себя странно.

rd.luks.name и resume

Параметры для шифрования и гибернации. rd.luks.name=UUID=xxxx-xxxx=luksroot подключает LUKS-раздел на этапе initramfs, а cryptdevice=UUID=...:luksroot — более старый вариант того же. resume=UUID=... указывает раздел подкачки для гибернации. Оба параметра работают внутри initramfs-сценариев, о которых подробно рассказано в статье «mkinitcpio: хуки и модули». Для rd.luks.name в initramfs должен быть хук systemd или encrypt, а для resume — хук resume. Без них параметры просто проигнорируются.

init=/usr/bin/…

Подменяет программу инициализации. По умолчанию ядро запускает /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, а не ядра.

mem_sleep_default=deep безопасен?

Да. Это штатный режим S3, который использовался на ноутбуках десятилетиями. Единственный нюанс — на некоторых машинах пробуждение из S3 работает медленнее, чем из s2idle.

mitigations=off — это опасно?

Это осознанный компромисс. Защиты от спекулятивных атак отключаются, и машина становится уязвимой для атак класса 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, если у тебя ноутбук. Остальное подключай по мере необходимости — каждый параметр решает конкретную задачу, а лишние аргументы в командной строке только усложняют диагностику.



Не получилось? Поможем настроить

Задай вопрос в чате — отвечаем быстро, по делу и без воды.

Читайте также

Комментарии

Загрузка…

Откроется GitHub: создайте новый issue с вашим комментарием (кнопка «Submit new issue»). После отправки обновите эту страницу — комментарий появится ниже.

Telegram Max