Kernel parameters (Русский)
Существует три способа передачи параметров ядру и контроля над ним:
- При сборке ядра — через файл
config
. Полная информация Ядро#Компиляция. - При запуске ядра — используя параметры командной строки (обычно через загрузчик).
- На этапе выполнения (через файлы в
/proc
и/sys
). Более подробно смотрите документацию по утилите sysctl.
Настраиваемые в этих способах параметры различаются по доступности, имени и методу, в котором они указаны. Эта страница объясняет только второй метод (параметры командной строки ядра) и показывает список наиболее часто используемых параметров ядра в Arch Linux.
Большинство параметров связаны с подсистемами и работают, только если ядро собрано с этими подсистемами. Они также зависят от наличия оборудования, с которым они связаны.
Параметры, задаваемые в командной строке, имеют формат параметр
или параметр=значение
.
/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).