bootparam(7)

НАИМЕНОВАНИЕ
bootparam - аргументы, передаваемые ядру Linux во время загрузки

ОПИСАНИЕ
При запуске ядру Linux могут быть переданы «аргументы командной строки», иначе говоря, «параметры загрузки». Как правило, они служат для передачи ядру информации о тех параметрах аппаратного обеспечения, которые оно не может определить, или для удаления/замены значений, используемых ядром.

Если ядро загружается непосредственно из BIOS, то возможности указать параметры нет. Для того, чтобы передать параметры ядру, необходимо использовать системный загрузчик, позволяющий это сделать, например GRUB.

  Список аргументов
Аргументы командной строки ядра преобразуются в список строк (параметров загрузки), разделённых пробелами. Большая часть аргументов имеет вид:

    имя[=значение_1][,значение_2]…[,значение_10]

где «имя» — уникальное ключевое слово, используемое для определения части ядра, которой передаются указанные значения (если есть). Обратите внимание, что ограничение в 10 значений действительно существует, так как код, используемый в данный момент, обрабатывает только 10 разделённых запятой параметров на одно ключевое слово. Тем не менее, в особых случаях вы можете указать одно ключевое слово ещё раз, с помощью 10-и дополнительных параметров (если это позволяет функция настройки).

Most of the sorting is coded in the kernel source file init/main.c. First, the kernel checks to see if the argument is any of the special arguments 'root=', 'nfsroot=', 'nfsaddrs=', 'ro', 'rw', 'debug', or 'init'. The meaning of these special arguments is described below.

Затем производится проверка списка функций настройки: есть ли для заданного строкового параметра (например «foo») связанная с ним функция настройки («foo_setup()») для определённого устройства или части ядра. То есть, если вы передали ядру строку foo=3,4,5,6, то ядро проверит, зарегистрирован ли «foo» в массиве настроек. Если да, то будет вызвана соответствующая «foo» функция (foo_setup()), которой будут переданы аргументы 3, 4, 5 и 6, как указано в командной строке ядра.

Все параметры, указанные в виде «foo=bar» и не распознанные как обращения к функциям настройки (см. выше), считаются переменными окружения. Например, как аргумент загрузки можно указать «TERM=vt100».

Все остальные аргументы, не обработанные ядром и не считающиеся переменными окружения, затем будут переданы PID 1 (обычно, это программа init(1)). Наиболее часто встречающийся аргумент, передаваемый процессу init, — слово «single», указывающее, что система должна быть загружена в однопользовательском режиме, в котором не запускаются какие-либо службы. Более подробная информация об аргументах приведена в руководстве по установленной в системе версии init(1).

  Общие аргументы загрузки, не относящиеся к настройке устройств

«init=…»
    Задаёт начальную команду, запускаемую ядром. Если этот параметр не задан или программа не найдена, то ядро попробует запустить /sbin/init, затем /etc/init, затем /bin/init, затем /bin/sh. Если не удалось запустить ни одну из указанных программ, то ядро переходит в режим «паники».

«nfsaddrs=…»
    Задаёт адрес загрузки с NFS. Используется при загрузке системы по сети.

«nfsroot=…»
    Задаёт корневую файловую систему NFS. Если эта строка не начинается с «/», «,» или цифры, то перед ним будет вставлена строка «/tftpboot/». Этот параметр используется при загрузке системы по сети.

«root=…»
    Этот аргумент указывает ядру, какое устройство должно быть использовано в качестве корневой файловой системы. Значение по умолчанию этого параметра устанавливается при сборке ядра и, как правило, совпадает с устройством, на котором была расположена корневая файловая система во время сборки. Для использования в качестве устройства с корневой файловой системой, к примеру, второго дисковода, следует указать «root=/dev/fd1».

    The root device can be specified symbolically or numerically. A symbolic specification has the form /dev/XXYN, where XX designates the device type (e.g., 'hd' for ST-506 compatible hard disk, with Y in 'a'–'d'; 'sd' for SCSI compatible disk, with Y in 'a'–'e'), Y the driver letter or number, and N the number (in decimal) of the partition on this device.

    Заметим, что в данном случае речь не идёт о конкретном назначении этих устройств в файловой системе. Приставка «/dev/» — это всего лишь дань соглашениям.

    Также применяется менее удобный и менее совместимый способ указания устройств с помощью чисел в формате «старший/младший номер» (например, старший номер /dev/sda3 равен 8, младший равен 3, и устройство можно указать как «root=0x803»).

'rootdelay='
    This parameter sets the delay (in seconds) to pause before attempting to mount the root filesystem.

'rootflags=...'
    В этом параметре указывается строка параметров монтирования корневой файловой системы (смотрите также fstab(5)).

'rootfstype=...'
    The 'rootfstype' option tells the kernel to mount the root filesystem as if it where of the type specified. This can be useful (for example) to mount an ext3 filesystem as ext2 and then remove the journal in the root filesystem, in fact reverting its format from ext3 to ext2 without the need to boot the box from alternate media.

'ro'
'rw'
    Параметр «ro» указывает ядру монтировать корневую файловую систему «только для чтения» для того, чтобы программа проверки целостности файловой системы (fsck) могла работать с не изменяющейся файловой системой. Ни один процесс не может записать данные в файл, находящийся в данной файловой системе до тех пор, пока она не будет «перемонтирована» для чтения/записи, например, командой «mount -w -n -o remount /» (см. также mount(8)).

    Параметр «rw» указывает ядру монтировать корневую файловую систему в режиме для чтения/записи. Он используется по умолчанию.

'resume=...'
    Указывает ядру где расположены данные suspend-to-disk, которые вы хотите использовать для возобновления работы машины при выходе из состояния сна. Обычно совпадает с расположение раздела или файла подкачки. Пример:

        resume=/dev/hda2

«reserve=…»
    Этот параметр используется для защиты от тестирования определённых областей ввода/вывода. Команда должна быть задана в следующем виде:

        reserve=iobase,extent[,iobase,extent]...

    В некоторых машинах драйверы неправильно определяют аппаратное обеспечение или вызывают некорректную реакцию на тестирование определённых областей. В этих случаях может появиться необходимость предотвратить проверку (автоопределение) таких устройств.

    Данный параметр загрузки служит для указания определённой области портов ввода/вывода, которую не нужно тестировать. Драйвер устройства не будет проверять указанную область, если только другой параметр явно не указывает на необходимость их проверки.

    Например, загрузочная строка

        reserve=0x300,32  blah=0x300

    предотвращает проверку адресов 0x300-0x31f всеми драйверами устройств, кроме «blah».

«panic=N»
    По умолчанию, ядро не будет перезагружаться после паники, однако этот параметр заставит ядро перезагрузиться через N секунд (если N больше 0). Время до перезагрузки может быть также изменено командой

        echo N > /proc/sys/kernel/panic

«reboot=[warm|cold][,[bios|hard]]»
    Начиная Linux 2.0.22 по умолчанию используется «холодная» (cold) перезагрузка. Возможно вернуть старое значение (warm) по умолчанию с помощью «reboot=warm» («холодная» перезагрузка может понадобиться для сброса аппаратного обеспечения, однако, она может уничтожить данные дискового кэша. «Теплая» перезагрузка может быть несколько быстрее). По умолчанию перезагрузка производится аппаратными (hard) средствами, а именно запросом контроллеру клавиатуры команды на установку низкого уровня линии сброса. Однако точно существует, по меньшей мере, один тип материнских плат, на которых этот способ не работает. При указании параметра «reboot=bios» перезагрузка будет осуществляться путем перехода в BIOS.

'nosmp'
'maxcpus=N'
    (Только, если определён __SMP__.) Параметры загрузки «nosmp» или «maxcpus=0» полностью отключают SMP. Аргумент «maxcpus=N» ограничивает количество процессоров, активируемых в режиме SMP, значением N.

  Аргументы загрузки, используемые разработчиками ядра

«debug»
    Сообщения ядра обрабатываются демоном (например, klogd(8) или подобным), что позволяет записывать их на диск. Сообщения с приоритетом выше console_loglevel выводятся также и на консоль (список приоритетов смотрите в syslog(2)). По умолчанию, значение console_loglevel устанавливается для протоколирования сообщений на уровень выше чем KERN_DEBUG. Этот загрузочный параметр указывает ядру также выводить сообщения приоритета KERN_DEBUG. Уровень журнала для консоли также может быть установлен во время работы через файл /proc/sys/kernel/printk (описан в syslog(2)), операцией SYSLOG_ACTION_CONSOLE_LEVEL в syslog(2) или dmesg(8).

«profile=N»
    Существует возможность включить функцию оценки быстродействия ядра (kernel profiling). Для этого необходимо присвоить ненулевое значение переменной prof_shift. Это может быть сделано либо установкой параметра CONFIG_PROFILE при сборке ядра, либо указанием параметра «profile=N». Значение переменной prof_shift устанавливается равным N, или CONFIG_PROFILE или по умолчанию равняется 2. Оно определяет степень детализации оценки: если система исполняет код ядра, то с каждым тиком показания счётчика будут увеличиваться:

        profile[address >> prof_shift]++;

    Необработанную информацию оценки можно прочитать из /proc/profile. Для удобства чтения можно воспользоваться какой-либо утилитой, например, readprofile.c. Запись в /proc/profile приведёт к сбросу показаний счётчиков.

  Аргументы загрузки для использования ramdisk
(Only if the kernel was compiled with CONFIG_BLK_DEV_RAM.) In general it is a bad idea to use a ramdisk under Linux—the system will use available memory more efficiently itself. But while booting, it is often useful to load the floppy contents into a ramdisk. One might also have a system in which first some modules (for filesystem or hardware) must be loaded before the main disk can be accessed.

    In Linux 1.3.48, ramdisk handling was changed drastically. Earlier, the memory was allocated statically, and there was a 'ramdisk=N' parameter to tell its size. (This could also be set in the kernel image at compile time.) These days ram disks use the buffer cache, and grow dynamically. For a lot of information on the current ramdisk setup, see the kernel source file Documentation/blockdev/ramdisk.rst.

    Существует четыре параметра: два логических и два целочисленных.

«load_ramdisk=N»
    Если N=1, то выполнять загрузку ram-диска. Если N=0, то ramdisk не загружается (по умолчанию 0).

«prompt_ramdisk=N»
    Если N=1, то запрашивать вставку дискеты (по умолчанию). Если N=0, то не запрашивать (таким образом, этот параметр вообще не нужен).

«ramdisk_size=N» или «ramdisk=N» (устарел)
    Установить предельный размер ram-диска(-ов) равным N КБ. По умолчанию 4096 (4 МБ).

«ramdisk_start=N»
    Установить номер начального блока (смещение на дискете, с которого начинается ram-диск) равным N. Этот параметр не требуется, если ram-диск находится сразу за образом ядра.

«noinitrd»
    (Only if the kernel was compiled with CONFIG_BLK_DEV_RAM and CONFIG_BLK_DEV_INITRD.) These days it is possible to compile the kernel to use initrd. When this feature is enabled, the boot process will load the kernel and an initial ramdisk; then the kernel converts initrd into a "normal" ramdisk, which is mounted read-write as root device; then /linuxrc is executed; afterward the "real" root filesystem is mounted, and the initrd filesystem is moved over to /initrd; finally, the usual boot sequence (e.g., invocation of /sbin/init) is performed.

    For a detailed description of the initrd feature, see the kernel source file Documentation/admin-guide/initrd.rst.

    Параметр «noinitrd» указывает ядру пропускать вышеуказанные шаги, несмотря на то, что оно было собрано с поддержкой initrd. Данные initrd, тем не менее, остаются в /dev/initrd (это устройство может быть использовано только один раз: после того, как последний процесс, использующий /dev/initrd, завершится, данные освобождаются).

  Параметры загрузки для SCSI-устройств
Общие соглашения для этого раздела:

iobase — первый порт ввода/вывода, занятый узлом SCSI. Порты указываются в шестнадцатеричной системе счисления, обычно их значения находятся в диапазоне от 0x200 до 0x3ff.

irq — аппаратное прерывание, настроенное для карты. Возможные значения зависят от карты, но обычно используются 5, 7, 9, 10, 11, 12 и 15. Остальные значения, как правило, используются общей периферией, такой как: жёсткие диски IDE, дисководы, последовательные порты и т. д.

scsi-id — ID, используемый узел-адаптером для своей идентификации на шине SCSI. Только некоторые адаптеры позволяют изменять это значение, у большинства оно фиксировано. Обычно, в качестве значения используется 7, однако, карты Seagate и Future Domain TMC-950 используют 6.

parity — указывает, ожидает ли узел-адаптер SCSI от подключенных устройств передачу значений чётности во всей передаваемой информации. Для включения проверки чётности необходимо указать единицу, для отключения — ноль. Не все адаптеры позволяют управлять чётностью с помощью параметров загрузки.

«max_scsi_luns=…»
    A SCSI device can have a number of 'subdevices' contained within itself. The most common example is one of the new SCSI CD-ROMs that handle more than one disk at a time. Each CD is addressed as a 'Logical Unit Number' (LUN) of that particular device. But most devices, such as hard disks, tape drives, and such are only one device, and will be assigned to LUN zero.

    Некоторые плохо спроектированные устройства SCSI не обрабатывают запросы для LUN, не равные нулю. Поэтому, новые ядра, если при сборке ядра не был установлен флаг CONFIG_SCSI_MULTI_LUN, по умолчанию будут опрашивать только устройства с LUN, равным нулю.

    Для указания количества проверяемых при загрузке LUN можно в качестве параметра загрузки указать «max_scsi_luns=n», где n является числом от одного до восьми. Для избежания вышеописанной проблемы можно указать, что n=1.

Hастройка ленточных накопителей SCSI
    С помощью приведённой ниже строки загрузочных параметров можно настроить драйвер ленточных накопителей SCSI:

        st=buf_size[,write_threshold[,max_bufs]]

    Первые два числа указываются в килобайтах. По умолчанию значение buf_size равно 32k Б, а максимальный размер, который может быть указан, — 16384 КБ. В write_threshold задаётся значение, при достижении которого содержимое буфера записывается на ленту (по умолчанию равно 30 КБ). Максимальное количество буферов (max_bufs) зависит от количество обнаруженных накопителей. По умолчанию используется два буфера. Пример использования этого параметра:

        st=32,30,2

    Full details can be found in the file Documentation/scsi/st.rst.

  Жёсткие диски

Параметры драйвера IDE-диска/CD-ROM
    The IDE driver accepts a number of parameters, which range from disk geometry specifications, to support for broken controller chips. Drive-specific options are specified by using 'hdX=' with X in 'a'–'h'.

    Общие для всех дисков параметры указываются с префиксом «hd=». Заметим, что их можно использовать и для какого-то конкретного диска, и при этом параметр будет применён именно так, как ожидалось.

    Also note that 'hd=' can be used to refer to the next unspecified drive in the (a, ..., h) sequence. For the following discussions, the 'hd=' option will be cited for brevity.

    Support for IDE was removed in Linux 5.14.

Параметры «hd=cyls,heads,sects[,wpcom[,irq]]»
    Эти параметры используются для указания физической структуры диска. Обязательными являются только первые три значения. Значения цилиндров(cyls)/головок(heads)/секторов(sects) в дальнейшем используются в программе fdisk. Значение предварительной компенсации записи (wpcom) для дисков IDE игнорируется. Значение IRQ, указанное в качестве irq, используется в контроллере интерфейса, к которому подключён диск, и, на самом деле, не относится к диску.

Параметр «hd=serialize»
    В микросхеме двойного IDE интерфейса CMD-640 содержится ошибка, приводящая к тому, что при одновременной работе дисков первичного и вторичного интерфейсов происходит повреждение данных. Этим параметром можно указать, что драйверу никогда не следует использовать оба интерфейса одновременно.

Параметр «hd=noprobe»
    Не определять этот диск. Например,

        hdb=noprobe hdb=1166,7,17

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

Параметр «hd=nowerr»
    Бит WRERR_STAT на некоторых дисках установлен постоянно. Этот параметр позволяет обойти эту проблему в таких устройствах.

Параметр «hd=cdrom»
    Указывает драйверу IDE, что вместо обычного жёсткого диска IDE подключён CD-ROM, совместимый с ATAPI. В большинстве случаев CD-ROM определяется автоматически, однако, если этого не происходит, можно воспользоваться данным параметром.

Стандартные параметры драйвера дисков ST-506 («hd=»)
    The standard disk driver can accept geometry arguments for the disks similar to the IDE driver. Note however that it expects only three values (C/H/S); any more or any less and it will silently ignore you. Also, it accepts only 'hd=' as an argument, that is, 'hda=' and so on are not valid here. The format is as follows:

        hd=cyls,heads,sects

    Если установлено два диска, то для второго диска нужно повторить вышеуказанную строку со структурой.

  Устройства Ethernet
Различные драйверы используют разные параметры, но все они, как минимум, распознают IRQ, базу ввода/вывода и имя. В общей форме выглядит это примерно так:

    ether=irq,iobase[,param_1[,...param_8]],name

Первый не числовой аргумент воспринимается как имя. Значения param_n (если есть) у разных карт/драйверов, обычно, имеют различный смысл. Обычно, значения param_n используются для указания адреса общей памяти, выбранного интерфейса, канала DMA и т. п.

Как правило, этот параметр используется для принудительного определения второй сетевой карты, так как по умолчанию определяется только одна. Этого можно достичь заданием простой строки:

    ether=0,0,eth1

Обратите внимание, что ноль в качестве значения IRQ и базы ввода/вывода указывает драйверам определять значения автоматически.

Исчерпывающей документацией по использованию нескольких карт и по специфичным для карты/драйвера значениям param_n можно считать Ethernet-HowTo. Желающие могут обратиться к соответствующему их карте разделу этого документа.

  Драйвер дисковода
There are many floppy driver options, and they are all listed in Documentation/blockdev/floppy.rst. See that file for the details.

  Драйвер звука
Драйвер звука также может учитывать параметры загрузки для замены встроенных при компиляции значений по умолчанию. Не рекомендуется заново определять значение параметров, так как это довольно сложно. Описание находится в файле Documentation/sound/oss/README.OSS (и в drivers/sound/Readme.linux у старых ядер) в дереве исходного кода ядра Linux. Параметр загрузки имеет следующий вид:

    sound=device1[,device2[,device3...[,device10]]]

где каждое значение устройства N имеет формат 0xTaaaId, байты которого используются следующим образом:

T — тип устройства: 1=FM, 2=SB, 3=PAS, 4=GUS, 5=MPU401, 6=SB16, 7=SB16-MPU401

aaa — адрес ввода/вывода в шестнадцатеричном виде.

I — линия прерывания в шестнадцатеричном виде (т. е. 10=a, 11=b, …)

d — канал DMA.

Как видите, результат довольно непонятен, поэтому лучше установить собственные значения при компиляции. Параметр загрузки «sound=0» полностью отключит драйвер звука.

  Драйвер принтера

«lp=»
    Синтаксис:

        lp=0
        lp=auto
        lp=reset
        lp=port[,port...]

    Вы можете указать драйверу принтера, какие порты надо использовать, а какие не использовать совсем. Это удобно, если не нужно, чтобы драйвер принтера захватывал все доступные параллельные порты, и оставлял их другим драйверам (таким, как PLIP, PPA).

    В значении перечисляется несколько названий портов. Например, при lp=none,parport0 используется первый параллельный порт для lp1 и отключается lp0. Чтобы вообще отключить драйвер принтера, укажите lp=0.

СМОТРИТЕ ТАКЖЕ
klogd(8), mount(8)

Актуальную информацию можно найти в файле исходного кода ядра Documentation/admin-guide/kernel-parameters.txt.

ПЕРЕВОД
Русский перевод этой страницы руководства разработал(и) Artyom Kunyov <artkun@guitarplayer.ru>, Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitriy Ovchinnikov <dmitriyxt5@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, ITriskTI <ITriskTI@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков (debian-l10n-russian@lists.debian.org).