Существует три способа передачи параметров ядру и контроля над ним:
- При сборке ядра — через файл
config. Полная информация Ядро#Компиляция. - При запуске ядра — используя параметры командной строки (обычно через загрузчик).
- На этапе выполнения — через файлы в
/proc/sys/(смотрите sysctl) и/sys/).
Настраиваемые в этих способах параметры различаются по доступности, имени и методу, в котором они указаны. Эта страница объясняет только второй метод (параметры командной строки ядра) и показывает список наиболее часто используемых параметров ядра в Arch Linux.
Большинство параметров связаны с подсистемами и работают, только если ядро собрано с этими подсистемами. Они также зависят от наличия оборудования, с которым они связаны.
Параметры, задаваемые в командной строке, имеют формат параметр или параметр=значение.
/etc/modprobe.d/. Смотрите Модуль ядра#С помощью файлов в /etc/modprobe.d/.Настройка
- Посмотреть параметры, с которыми сейчас загружена система, и проверить, применились ли ваши изменения, можно с помощью команды
cat /proc/cmdline. - Установочный носитель Arch Linux использует Syslinux на BIOS-системах и GRUB на 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.
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.
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 необходимо использовать обратный слэш (\) в качестве разделителей в пути.
|
| cryptdevice | Расположение раздела, зашифрованного с dm-crypt, плюс имя device mapper. |
| 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).