Kernel parameters (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи Kernel parameters. Дата последней синхронизации: 22 января 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Существует три способа передачи параметров ядру и контроля над ним:

  1. При сборке ядра — через файл config. Полная информация Ядро#Компиляция.
  2. При запуске ядра — используя параметры командной строки (обычно через загрузчик).
  3. На этапе выполнения (через файлы в /proc и /sys). Более подробно смотрите документацию по утилите sysctl.

Настраиваемые в этих способах параметры различаются по доступности, имени и методу, в котором они указаны. Эта страница объясняет только второй метод (параметры командной строки ядра) и показывает список наиболее часто используемых параметров ядра в Arch Linux.

Большинство параметров связаны с подсистемами и работают, только если ядро собрано с этими подсистемами. Они также зависят от наличия оборудования, с которым они связаны.

Параметры, задаваемые в командной строке, имеют формат параметр или параметр=значение.

Примечание: Все параметры чувствительны к регистру.
Совет: Параметры для загружаемых модулей также можно задать через файлы .conf в каталоге /etc/modprobe.d/. Смотрите Модуль ядра#С помощью файлов в /etc/modprobe.d/.

Настройка

Примечание:
  • Посмотреть параметры, с которыми сейчас загружена система, и проверить, применились ли ваши изменения, можно с помощью команды cat /proc/cmdline.
  • Установочный носитель Arch Linux использует Syslinux на BIOS-системах и systemd-boot на UEFI.

Параметры ядра можно установить либо временно, отредактировав загрузочную запись в меню загрузчика, либо навсегда, изменив файл конфигурации загрузчика.

Примеры ниже демонстрируют, как добавить параметры quiet и splash в Syslinux, systemd-boot, GRUB, GRUB Legacy, LILO и rEFInd.

Syslinux

  • После появления меню нажмите Tab и добавьте их в конце строки:
linux /boot/vmlinuz-linux root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw initrd=/boot/initramfs-linux.img quiet splash
Нажмите Enter для загрузки с этими параметрами.
  • Для сохранения изменений между перезагрузками измените файл /boot/syslinux/syslinux.cfg и добавьте их в строку APPEND:
APPEND root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw quiet splash

Подробнее о настройке Syslinux можно почитать в статье Syslinux.

systemd-boot

  • После появления меню нажмите e и добавьте параметры в конце строки:
initrd=\initramfs-linux.img root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw quiet splash
Нажмите Enter для загрузки с этими параметрами.
Примечание:
  • Если значение таймаута меню не установлено, во время загрузки зажмите пробел, чтобы меню systemd-boot появилось.
  • Если вы не можете изменить параметры из меню загрузки, может понадобиться изменить файл /boot/loader/loader.conf и добавить editor 1 чтобы разрешить редактирование.
  • Для сохранения изменений между перезагрузками измените файл /boot/loader/entries/arch.conf (предполагается, что у вас настроен системный раздел EFI) и добавьте их в строку options:
options root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw quiet splash

Подробнее о настройке systemd-boot можно почитать в статье systemd-boot.

GRUB

  • Нажмите e в момент показа загрузочного меню и добавьте в строку, содержащую linux:
linux /boot/vmlinuz-linux root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw quiet splash
Нажмите Ctrl+x для загрузки с этими параметрами.
  • Для сохранения изменений между перезагрузками, если вы не используете grub-mkconfig, можно изменить эту же строку напрямую в файле /boot/grub/grub.cfg, а для grub-mkconfig измените файл /etc/default/grub и добавьте параметры внутри кавычек в строке GRUB_CMDLINE_LINUX_DEFAULT:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
И затем сгенерируйте новый grub.cfg:
# grub-mkconfig -o /boot/grub/grub.cfg

Полную информацию по настройке можно прочитать в статье GRUB (Русский).

GRUB Legacy

  • Нажмите e в момент показа загрузочного меню и добавьте в строку, содержащую kernel:
kernel /boot/vmlinuz-linux root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw quiet splash
Нажмите b для загрузки с этими параметрами.
  • Для сохранения изменений между перезагрузками измените файл /boot/grub/menu.lst и добавьте их в строку kernel аналогично примеру выше.

Полная информация по настройке GRUB Legacy.

LILO

  • Добавьте в /etc/lilo.conf:
image=/boot/vmlinuz-linux
        ...
        quiet splash

Полная информация по настройке LILO.

rEFInd

  • На нужном пукте меню нажмите +, F2 или Insert и нажмите ещё раз в нужном подменю. Добавьте параметры ядра в конце строки:
root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw initrd=\boot\initramfs-linux.img quiet splash
Нажмите Enter для загрузки с этими параметрами.
  • Для сохранения изменений между перезагрузками измените файл /boot/refind_linux.conf и добавьте их внутри кавычек во всех нужных строках, например
"Boot using default options"   "root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw quiet splash"
  • Если вы отключили автоматическое определение ОС в rEFInd и вместо этого определяете разделы ОС в esp/EFI/refind/refind.conf для загрузки своих ОС, вы можете отредактировать его следующим образом:
menuentry "Arch Linux" {
	...
	options  "root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw quiet splash"
	...
}

Полная информация по настройке rEFInd

EFISTUB

Смотрите EFISTUB#Using UEFI directly.

dracut

dracut может встраивать параметры ядра в initramfs, что позволяет исключить их из конфигурации загрузчика. Смотрите dracut#Kernel command line options.

Взлом cmdline

Даже без доступа к загрузчику можно изменить параметры ядра, чтобы включить отладку (если у вас есть root-доступ). Это можно сделать, перезаписав /proc/cmdline, в котором хранятся параметры ядра. Однако /proc/cmdline недоступен для записи даже для root, и это обходится с помощью bind mount.

Сначала создайте файл, содержащий желаемые параметры ядра

/root/cmdline
root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 ro console=tty1 logo.nologo debug

Затем сделайте bind mount, перекрыв старый файл с параметрами новым:

# mount -n --bind -o ro /root/cmdline /proc/cmdline

Параметр -n пропускает добавление записи в /etc/mtab, поэтому он будет работать, даже если корневая ФС примонтирована только для чтения. Вы можете выполнить cat /proc/cmdline, чтобы убедиться в успешности изменений.

Список параметров

Список не исчерпывающий. Полный список можно посмотреть в документации к ядру.

Параметр Описание
init Запустить указанный исполняемый файл вместо /sbin/init в качестве процесса init. Пакет systemd-sysvcompat создаёт символическую ссылку /sbin/init, указывающую на /usr/lib/systemd/systemd, для использования systemd. Укажите /bin/sh для загрузки в командную оболочку.
initrd Путь к образу начальной файловой системы (initramfs). Для загрузчиков UEFI и EFISTUB необходимо использовать обратный слэш (\) в качестве разделителей в пути.
debug Включить отладку ядра (уровень журнала событий).
lsm Установить порядок инициализации модулей безопасности Linux, используется для включения AppArmor, SELinux или TOMOYO.
maxcpus Максимальное количество процессоров, которые ядро SMP будет задействовать во время загрузки.
mem Принудительное использование определённого количества используемой памяти.
netdev Параметры сетевых устройств.
nomodeset Отключить Kernel mode setting.
panic Время до автоматической перезагрузки при панике ядра.
resume Указать устройство подкачки, которое будет использоваться при выходе из гибернации.
ro При загрузке монтировать корневую ФС только в режиме чтения (используется по умолчанию1).
root Корневая файловая система. Смотрите список поддерживаемых форматов имён устройств в файле init/do_mounts.c. Имейте в виду, что initramfs с udev поддерживает больше форматов имён.
rootflags Параметры монтирования корневой ФС. Полезно для настройки параметров, которые нельзя применить при перемонтировании (например, с помощью systemd-remount-fs.service(8)). Например, опция discard для XFS.
rw При загрузке монтировать корневую ФС в режиме чтения/записи.
systemd.unit Загрузка в указанную цель.
video Переопределить стандартные настройки фреймбуффера.

1 mkinitcpio использует ro по умолчанию, если загрузчик не устанавливает ни rw, ни ro. Загрузчики могут устанавливать используемое значение, например, GRUB по умолчанию использует rw (смотрите FS#36275).

Смотрите также