Scroll to navigation

BOOTPARAM(7) Руководство программиста Linux BOOTPARAM(7)

ИМЯ

bootparam - аргументы, передаваемые ядру Linux во время загрузки

ОПИСАНИЕ

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

Если ядро загружается непосредственно из BIOS (например, с дискеты, на которую вы скопировали его с помощью команды «cp zImage /dev/fd0»), то возможности указать параметры нет. Для того, чтобы передать параметры ядру, необходимо использовать программное обеспечение, имеющее такую возможность, например, LILO или loadlin. Некоторые параметры могут быть указаны путём изменения образа ядра с помощью rdev. Более подробную информацию можно найти в rdev(8).

Наиболее широко используется программа LILO (LInux LOader — загрузчик Linux), написанная Вернером Алмесбергером (Werner Almesberger). В ней предусмотрена возможность загрузки различных ядер, а также других операционных систем (DOS, OS/2, Linux, FreeBSD, UnixWare и т. д.). Настройки программы хранятся в обычном текстовом файле. Более подробную информацию можно найти в lilo(8) и lilo.conf(5).

Другим широко используемым загрузчиком Linux является программа «LoadLin», позволяющая запускать ядро Linux (с указанием параметров) из DOS при наличии доступа к некоторым ресурсам.

Кроме того, она может быть очень полезна, если имеется аппаратное обеспечение, требующее какой-либо начальной инициализации, выполнить которую возможно лишь из DOS. Примером могут служить звуковые карты, «совместимые с SoundBlaster», требующие запуска программы DOS для настройки режима совместимости с SB. Загрузив DOS с соответствующими драйверами, а затем с помощью loadlin Linux, вы сможете избежать сброса настроек карты, производимого при перезагрузке компьютера.

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

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

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

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

Большая часть обработки выполняется в linux/init/main.c. Сначала ядро проверяет, является ли аргумент одним из специальных аргументов «root=», «nfsroot=», «nfsaddrs=», «ro», «rw», «debug» или «init». Назначение этих специальных аргументов объясняется ниже.

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

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

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

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

«init=…»
Задаёт начальную команду, запускаемую ядром. Если этот параметр не задан или программа не найдена, то ядро попробует запустить /sbin/init, затем /etc/init, затем /bin/init, затем /bin/sh. Если не удалось запустить ни одну из указанных программ, то ядро переходит в режим «паники».
«nfsaddrs=…»
Задаёт адрес загрузки с nfs. Используется при загрузке системы по сети.
«nfsroot=…»
Задаёт корневую файловую систему nfs. Если эта строка не начинается с «/», «,» или цифры, то перед ним будет вставлена строка «/tftpboot/». Этот параметр используется при загрузке системы по сети.
«no387»
(Только, если определён CONFIG_BUGi386). Некоторые сопроцессоры i387 содержат ошибки, проявляющиеся при работе в 32-битном защищённом режиме. Например, некоторые первые версии микросхем ULSI-387 приводили к «зависанию» системы при выполнении операций над числами с плавающей запятой. Использование параметра «no387» указывает, что Linux необходимо игнорировать наличие математического сопроцессора. Естественно, ядро должно быть собрано с поддержкой эмуляции математического сопроцессора!
«no-hlt»
(Только, если определён CONFIG_BUGi386). Некоторые из первых версий процессоров i486DX-100 содержали ошибки, связанные с инструкцией «hlt», которые приводили к тому, что процессор не всегда мог вернуться к нормальной работе после выполнения этой инструкции. Использование параметра «no-hlt» указывает Linux (в случаях, когда нечего больше обрабатывать) просто выполнять бесконечный цикл, а не останавливать ЦП. Это позволяет использовать Linux тем, у кого установлен процессор с подобной неисправностью.
«root=…»
Этот аргумент указывает ядру, какое устройство должно быть использовано в качестве корневой файловой системы. Значение по умолчанию этого параметра устанавливается при сборке ядра и, как правило, совпадает с устройством, на котором была расположена корневая файловая система во время сборки. Для использования в качестве устройства с корневой файловой системой, к примеру, второго дисковода, следует указать «root=/dev/fd1». Кроме того, устройство с корневой файловой системой может быть указано с помощью rdev(8).

Корневое устройство может быть указано как в символьном, так и в числовом виде. Символьное представление имеет вид /dev/XXYN, где XX означает тип устройства, («hd» — для совместимых с ST-506 жестких дисков, при этом Y принимает значения от «a» до «d»; «sd» — для совместимых со SCSI дисков, при этом Y принимает значения от «a» до «e»; «ad» — для Atari ACSI дисков, при этом Y принимает значения от «a» до «e»; «ez» — для съёмных дисков Syquest EZ135, подключаемых к параллельному порту, при этом Y равно «а»; «xd» — для совместимых с XT дисков, при этом Y равно «a» или «b»; «fd» — для дисководов, при этом Y равно номеру дисковода — fd0 будет в DOS дисководом «A:», fd1 — «B:»), Y — буква или номер устройства, а N — номер (в десятичной системе исчисления) раздела на этом устройстве (для дисководов не указывается). Ядра последних версий поддерживают также многие другие типы, в основном для CD-ROM: nfs, ram, scd, mcd, cdu535, aztcd, cm206cd, gscd, sbpcd, sonycd, bpcd (nfs соответствует сетевой загрузке; ram ссылается на ram диск).

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

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

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

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

Выбрать, запускать ли файловую систему только для чтения или для чтения/записи, можно с помощью rdev(8).

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

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

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

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

reserve=0x300,32 blah=0x300
предотвращает проверку адресов 0x300-0x31f всеми драйверами устройств, кроме «blah».
«mem=…»
Вызов BIOS в соответствии со стандартом PC может вернуть до 64МБ установленной памяти. Linux использует эту функцию при загрузке для определения объёма установленной памяти. Если установлено более 64МБ памяти, то вы можете использовать этот параметр для указания точного количества установленной памяти. Значение может быть указано в десятичной или шестнадцатеричной (с префиксом 0x) системах счисления. Кроме того, можно использовать суффиксы «k» (производит умножение на 1024) и «M» (производит умножение на 1048576). Вот цитата Линуса по поводу использования параметра «mem=»:


«Ядро примет любое значение в параметре «mem=xx», но если окажется, что вы его обманули, рано или поздно это приведёт к краху системы. Параметр определяет верхнюю границу адресуемой памяти, то есть «mem=0x1000000» означает, что установлено 16МБ памяти. Для машины с 96МБ нужно указать «mem=0x6000000».

ЗАМЕЧАНИЕ: некоторые машины могут использовать верхнюю часть памяти для кэширования BIOS и других целей, так что на самом деле не все 96МБ памяти могут оказаться доступными. Бывает и наоборот: некоторые наборы микросхем отражают физическую память области BIOS на область за физической памятью, так что доступное адресное пространство будет 96МБ + 384КБ. Если объём памяти, указанный linux, больше реально существующего, то возникнут проблемы: может быть не сразу, но рано или поздно, обязательно.

Также можно использовать параметр загрузки «mem=nopentium» для выключения страничных таблиц по 4МБ в ядрах, настроенных для систем IA32 с процессором pentium или более новым.

«panic=N»
По умолчанию, ядро не будет перезагружаться после паники, однако этот параметр заставит ядро перезагрузиться через N секунд (если N больше 0). Время до перезагрузки может быть также изменено командой «echo N > /proc/sys/kernel/panic».
«reboot=[warm|cold][,[bios|hard]]»
(Только, если определён CONFIG_BUGi386). Начиная с версии 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, что позволяет записывать их на диск. Сообщения с приоритетом выше console_loglevel выводятся также и на консоль (список приоритетов см. в <linux/kernel.h>). По умолчанию ведётся журнал всех сообщений более важных, чем отладочные сообщения. Этот параметр указывает ядру также выводить сообщения приоритета DEBUG. Уровень журнала для консоли также может быть установлен во время работы с помощью параметров klogd. См. klogd(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 приведёт к сбросу показаний счётчиков.

«swap=N1,N2,N3,N4,N5,N6,N7,N8»
Устанавливает восемь параметров, управляющих алгоритмом подкачки: max_page_age, page_advance, page_decline, page_initial_age, age_cluster_fract, age_cluster_min, pageout_weight, bufferout_weight. Только для настройщиков ядра.
«buff=N1,N2,N3,N4,N5,N6»
Устанавливает 6 параметров, управляющих буферной памятью ядра: max_buff_age, buff_advance, buff_decline, buff_initial_age, bufferout_weight, buffermem_grace. Только для настройщиков ядра.

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

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

В Linux 1.3.48 работа с ram-диском была значительно изменена. Раньше память выделялась статически и существовал параметр «ramdisk=N», определявший её размер. Также возможно было задать необходимый размер во время сборки ядра или с помощью rdev(8). В настоящее время под ram-диски используются буферы кэша и размер можно изменять динамически. Дополнительную информацию (включая информацию по использованию rdev(8) для настройки новых ram-дисков) можно найти в /usr/src/linux/Documentation/ramdisk.txt.

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

«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»
(Только, если ядро было собрано с CONFIG_BLK_DEV_RAM и CONFIG_BLK_DEV_INITRD). В настоящее время существует возможность собрать ядро с поддержкой initrd. Если эта возможность включена, то при запуске загружается ядро и начальный ram-диск. Затем ядро преобразует initrd в «обычный» ram-диск, который монтируется в качестве корневой файловой системы на чтение-запись. Далее запускается /linuxrc. Затем монтируется «настоящая» корневая файловая система, а файловая система initrd переносится в /initrd. И, наконец, начинается обычная процедура загрузки (например, запускается /sbin/init).

Более подробно initrd описан в /usr/src/linux/Documentation/initrd.txt.

Параметр «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=…»
Устройство SCSI может включать в себя «подустройства». В качестве примера можно взять новые многодисковые SCSI CD-ROM-ы. Адрес каждого места под компакт-диск может быть задан «логическим номером устройства» (Logical Unit Number — LUN). Но большинство устройств, таких как, жёсткие диски, ленточные накопители и др., содержат только одно устройство, которому присваивается нулевой LUN.

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

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

С помощью приведённой ниже строки загрузочных параметров можно настроить драйвер ленточных накопителей SCSI:
st=buf_size[,write_threshold[,max_bufs]]

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

st=32,30,2
Более подробная информация приведена в файле Documentation/scsi/st.txt (или drivers/scsi/README.st — в старых ядрах), находящемся в дереве исходного кода ядра.
Настройка Adaptec aha151x, aha152x, aic6260, aic6360, SB16-SCSI
Названия, начинающиеся с aha, относятся к картам, а aic — к микросхеме SCSI этих типов карт, включая Soundblaster-16 SCSI.

Код определения этих хостов SCSI проверяет наличие установленного BIOS и, если он отсутствует, карта не будет найдена. В этом случае необходимо указать параметр загрузки в следующем виде:

aha152x=iobase[,irq[,scsi-id[,reconnect[,parity]]]]
Если драйвер скомпилирован с поддержкой отладки, то для установки уровня отладки может быть указано шестое значение.

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

aha152x=0x340,11,7,1
Обратите внимание, что параметры должны быть указаны строго в указанном порядке, то есть, если необходимо указать parity, то придётся также указывать значения iobase, irq, scsi-id и reconnect.
Настройка Adaptec aha154x
Карты серии aha1542 имеют встроенный контроллер дисковода i82077, в то время как карты aha1540 его не имеют. Эти карты могут управлять шиной (busmastering) и поэтому имеют параметры, позволяющие установить «справедливость», которая используется для совместного использования шины с другими устройствами. Параметр загрузки выглядит следующим образом:
aha1542=iobase[,buson,busoff[,dmaspeed]]
Значения iobase обычно следующие: 0x130, 0x134, 0x230, 0x234, 0x330, 0x334. Клоны этой карты могут поддерживать и другие значения.

Значения buson, busoff отвечают за количество микросекунд, в течение которых карта управляет шиной ISA. Значения по умолчанию равны 11мкс для buson и 4мкс для busoff, так что другие карты (такие, как ISA LANCE Ethernet) тоже смогут получить доступ к шине ISA.

Значение dmaspeed указывает скорость (в МБ/с), с которой осуществляются DMA-пересылки (Direct Memory Access — прямой доступ к памяти). По умолчанию она равна 5МБ/с. Новые версии карт позволяют настроить это значение программно, в старых — используются переключатели. Можно указывать значения до 10МБ/c, если материнская плата поддерживает такие значения. Экспериментировать со значениями выше 5МБ/с следует с осторожностью.

Настройка Adaptec aha274x, aha284x, aic7xxx
Параметры этих карт указываются в следующем виде:
aic7xxx=extended,no_reset
Значение extended, если оно не равно нулю, указывает, что для больших дисков включена расширенная трансляция. Значение no_reset, если оно не равно нулю, указывает драйверу во время загрузки системы не сбрасывать шину SCSI при настройке хост-адаптера.
Настройка AdvanSys SCSI Hosts («advansys=»)
Драйвер AdvanSys понимает до четырех адресов ввода/вывода по которым будет производиться поиск карты SCSI AdvanSys. Заметьте, что эти значения (если они используются) не влияют на проверки EISA или PCI. Они используются только для проверки карт ISA или VLB. Если драйвер был скомпилирован с поддержкой отладки, то дополнительно можно указать её уровень, задав параметр 0xdeb[0-f]. 0-f позволяет установить уровень сообщений отладки равным любому из 16 уровней детализации.
AM53C974=host-scsi-id,target-scsi-id,max-rate,max-offset
Настройка BusLogic SCSI Hosts («BusLogic=»)
BusLogic=N1,N2,N3,N4,N5,S1,S2,…
Полное описание параметров командной строки BusLogic приведено в /usr/src/linux/drivers/scsi/BusLogic.c (строки 3149-3270 той версии ядра, которая использовалась при написании этой страницы). Нижеприведенный текст является кратким содержанием описания.

Параметры N1-N5 являются целыми числами. Параметры S1,… являются строками. N1 — адрес ввода/вывода хост-адаптера. N2 — глубина очереди тегов (Tagged Queue Depth) для целевых устройств, поддерживающих очередь тегов (Tagged Queuing). N3 — время установления шины (Bus Settle Time) в секундах. Это время ожидания между сбросом хост-адаптера, вызывающим сброс шины SCSI, и выдачей команд SCSI. N4 — локальные настройки (для одного хост-адаптера). N5 — глобальные настройки (для всех хост-адаптеров).

Строковые параметры используются для управления очередью тегов (TQ:Default, TQ:Enable, TQ:Disable, TQ:<Per-Target-Spec>), исправлением ошибок (ER:Default, ER:HardReset, ER:BusDeviceReset, ER:None, ER:<Per-Target-Spec>) и поиском хост-адаптера (NoProbe, NoProbeISA, NoSortPCI).

Настройка EATA/DMA
Список проверяемых по умолчанию портов ввода/вывода может быть изменён с помощью
eata=iobase,iobase,….
Настройка Future Domain TMC-16x0
fdomain=iobase,irq[,adapter_id]
Настройка SCSI-контроллера Great Valley Products (GVP)
gvp11=dma_transfer_bitmask
Настройка Future Domain TMC-8xx, TMC-950
tmc8xx=mem_base,irq
В mem_base задаётся значение области памяти, в которую отражается область ввода/вывода этой карты. Обычно используется одно из следующих значений: 0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000.
Настройка IN2000
in2000=S
где S — строка, состоящая из разделённых запятой элементов вида ключевое_слово[:значение]. Распознаются следующие ключевые слова: ioport:addr, noreset, nosync:x, period:ns, disconnect:x, debug:x, proc:x. Назначение этих параметров описано в /usr/src/linux/drivers/scsi/in2000.c.
Настройка NCR5380 и NCR53C400
Параметр загрузки имеет следующий вид:
ncr5380=iobase,irq,dma
или
ncr53c400=iobase,irq
Если карта не использует прерывания, то значение IRQ, равное 255 (0xff), запретит прерывания. Значение IRQ, равное 254, означает автоопределение. Подробности можно найти в файле Documentation/scsi/g_NCR5380.txt (или drivers/scsi/README.g_NCR5380 — для старых ядер) из дерева исходного кода ядра.
Настройка NCR53C8xx
ncr53c8xx=S
где S — строка разделённых запятой элементов вида «ключевое_слово:значение». Распознаются следующие ключевые слова: mpar (master_parity), spar (scsi_parity), disc (disconnection), specf (special_features), ultra (ultra_scsi), fsn (force_sync_nego), tags (default_tags), sync (default_sync), verb (verbose), debug (debug), burst (burst_max). Назначение параметров описано в /usr/src/linux/drivers/scsi/ncr53c8xx.c.
Настройка NCR53c406a
ncr53c406a=iobase[,irq[,fastpio]]
Для работы в режиме без прерываний укажите, что irq = 0. Для быстрого режима pio укажите fastpio = 1 и 0 — для медленного.
PAS16 работает на микросхеме SCSI NC5380. Последние модели поддерживают программную настройку. Параметры загрузки указываются в следующем виде:
pas16=iobase,irq
Отличие между старыми и новыми моделями состоит лишь в том, что можно указать значение IRQ, равное 255, что принудит драйвер работать без использования прерываний, хотя это приведёт к потере производительности. Обычно, значение iobase равно 0x388.
Настройка Seagate ST-0x
Если карта не определяется при загрузке, то придётся использовать параметр загрузки в виде:
st0x=mem_base,irq
В mem_base задаётся значение области памяти, в которую отражается область ввода/вывода этой карты. Обычно используется одно из следующих значений: 0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000.
Настройка Trantor T128
Эти карты также основаны на микросхеме NCR5380 и понимают следующие параметры:
t128=mem_base,irq
Допустимыми значениями для mem_base могут быть 0xcc000, 0xc8000, 0xdc000, 0xd8000.
Настройка UltraStor 14F/34F
Список проверяемых по умолчанию портов ввода/вывода может быть изменён с помощью
eata=iobase,iobase,….
Настройка WD7000
wd7000=irq,dma,iobase
Настройка SCSI-контроллера Commodore Amiga A2091/590
wd33c93=S
где S — строка параметров, разделённых запятыми. Распознаются следующие параметры: nosync:bitmask, nodma:x, period:ns, disconnect:x, debug:x, clock:x, next. Подробности приведены в /usr/src/linux/drivers/scsi/wd33c93.c.

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

Параметры драйвера IDE-диска/CD-ROM
Драйвер IDE понимает довольно большое число параметров, начиная от указания геометрии диска до поддержки неисправных микросхем контроллера. Параметры, относящиеся к конкретному диску, указываются с помощью «hdX=», где X принимает значения от «a» до «h».

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

Также заметим, что «hd=» может быть использован для ссылки на следующий неуказанный диск в последовательности (a, …, h). В дальнейшем, для краткости, параметры будут описаны в виде «hd=». Более подробная информация приведена в файле Documentation/ide.txt (или drivers/block/README.ide, для старых ядер) из дерева исходного кода ядра.

Параметры «hd=cyls,heads,sects[,wpcom[,irq]]»
Эти параметры используются для указания физической структуры диска. Обязательными являются только первые три значения. Значения цилиндров(cyls)/головок(heads)/секторов(sects) в дальнейшем используются в программе fdisk. Значение предварительной компенсации записи (wpcom) для дисков IDE игнорируется. Значение IRQ, указанное в качестве irq, используется в контроллере интерфейса, к которому подключён диск, и, на самом деле, не относится к диску.
Параметр «hd=serialize»
В микросхеме двойного IDE интерфейса CMD-640 содержится ошибка, приводящая к тому, что при одновременной работе дисков первичного и вторичного интерфейсов происходит повреждение данных. Этим параметром можно указать, что драйверу никогда не следует использовать оба интерфейса одновременно.
Параметр «hd=dtc2278»
Этот параметр сообщает драйверу, что установлен интерфейс IDE DTC-2278D. После этого драйвер будет пытаться использовать специфичные для DTC операции для включения второго интерфейса и более быстрых режимов передачи.
Параметр «hd=noprobe»
Не определять этот диск. Например,
hdb=noprobe hdb=1166,7,17
отключит проверку, но одновременно задаст структуру диска, так что он будет зарегистрирован как обычное блочное устройство, и с ним можно будет работать.
Параметр «hd=nowerr»
Бит WRERR_STAT на некоторых дисках установлен постоянно. Этот параметр позволяет обойти эту проблему в таких устройствах.
Параметр «hd=cdrom»
Указывает драйверу IDE, что вместо обычного жёсткого диска IDE подключён CD-ROM, совместимый с ATAPI. В большинстве случаев CD-ROM определяется автоматически, однако, если этого не происходит, можно воспользоваться данным параметром.
Стандартные параметры драйвера дисков ST-506 («hd=»)
Стандартный драйвер дисков, также как драйвер IDE, понимает аргументы, описывающие структуру дисков. Однако он ожидает указания только трёх значений (C/H/S), а если их будет больше или меньше, то просто проигнорирует их. Кроме того, аргумент должен быть указан в виде «hd=», то есть «hda=» и т. п., в данном случае, являются неправильным. Формат следующий:
hd=cyls,heads,sects
Если установлено два диска, то для второго диска нужно повторить вышеуказанную строку со структурой.
Параметры драйвера дисков XT («xd=»)
Если используется одна из старых 8-битных карт, передающих данные с колоссальной скоростью 125КБ/c, то читайте дальше. Если карта не определяется, то придётся указать параметр загрузки в виде:
xd=type,irq,iobase,dma_chan
В значении type задаётся производитель карты; оно заменяет автоопределяемое значение. Возможные типы указаны в файле drivers/block/xd.c из дерева исходного кода ядра. Параметр type — это индекс в списке xd_sigs; с течением времени типы добавляются или убираются из середины списка, что приводит к изменению всех номеров типов. В данный момент (Linux 2.5.0) имеются следующие типы: 0=общий; 1=DTC 5150cx; 2,3=DTC 5150x; 4,5=Western Digital; 6,7,8=Seagate; 9=Omti; 10=XEBEC. В случае, когда несколько типов ссылаются на одно и то же значение, они эквивалентны.

Функция xd_setup() не проверяет передаваемые ей значения и предполагает, что введены все 4 значения. Не надо делать обратного. Пример для контроллера WD1002 с отключённым/не установленным BIOS и параметрами контроллера XT «по умолчанию»:

xd=2,5,0x320,3
Сменные диски Syquest EZ*
ez=iobase[,irq[,rep[,nybble]]]

Устройства с шиной IBM MCA

См. также /usr/src/linux/Documentation/mca.txt.

Жёсткие диски PS/2 ESDI
Есть возможность указать требуемую структуру при загрузке:
ed=cyls,heads,sectors.
Для ThinkPad-720 добавьте параметр
tp720=1.
Настройка IBM Microchannel SCSI Subsystem
ibmmcascsi=N
где в N задаётся pun (SCSI ID) подсистемы.
Интерфейс Aztech
Синтаксис для этого типа карт следующий:
aztcd=iobase[,magic_number]
Если значение magic_number равно 0x79, то драйвер будет пытаться работать в любом случае, даже при неизвестной версии микропрограммы. Все остальные значения игнорируются.
Приводы CD-ROM для параллельного порта
Синтаксис:
pcd.driveN=prt,pro,uni,mod,slv,dly
pcd.nice=nice
где в «port» указывается базовый адрес, «pro» — номер протокола, «uni» — номер выбранного устройства (для последовательно связанных устройств), «mod» — режим (установите его в -1 для автоопределения самого оптимального режима), значение «slv» должно быть равно 1, если устройство должно быть подчинённым, «dly» — маленькое целое число, определяющее замедление доступа к нижним портам. Параметр «nice» контролирует работу драйвера при простое (idle) процессора, что несколько сказывается на скорости.
Интерфейс Sony CDU-31A и CDU-33A
Этот интерфейс CD-ROM можно найти на некоторых старых звуковых картах Pro Audio Spectrum и на других звуковых картах, поставляемых Sony. Синтаксис следующий:
cdu31a=iobase,[irq[,is_pas_card]]
Значение IRQ, равное нулю, сообщает драйверу о том, что аппаратные прерывания не поддерживаются (на некоторых картах PAS). Если карта поддерживает прерывания, то нужно использовать их, так как это снижает загрузку процессора драйвером.

Если используется карта Pro Audio Spectrum, то значение is_pas_card должно быть равно «PAS», в противном случае оно может вообще не указываться.

Интерфейс Sony CDU-535
Синтаксис этого интерфейса CD-ROM:
sonycd535=iobase[,irq]
Если необходимо указать значение IRQ, то в качестве «заполнителя» значения базы ввода/вывода можно использовать ноль.
Интерфейс GoldStar
Синтаксис этого интерфейса CD-ROM:
gscd=iobase
Интерфейс CD-ROM ISP16
Синтаксис:
isp16=[iobase[,irq[,dma[,type]]]]
(три целых числа и строка). Если в качестве type будет указано «noisp16», то интерфейс не будет настроен. Другие распознаваемые типы: «Sanyo», «Sony», «Panasonic» и «Mitsumi».
Интерфейс Mitsumi Standard
Синтаксис этого интерфейса CD-ROM:
mcd=iobase,[irq[,wait_value]]
Значение wait_value предназначено для указания внутреннего интервала ожидания для тех, у кого возникают проблемы с этим диском; этот параметр может быть отключён при компиляции с помощью #define. Mitsumi FX400 является проигрывателем CD-ROM IDE/ATAPI и не использует драйвер mcd.
Интерфейс Mitsumi XA/MultiSession
Для того же оборудования, что и описанного выше, но в данном случае драйвер имеет дополнительные возможности. Синтаксис:
mcdx=iobase[,irq]
Интерфейс Optics Storage
Синтаксис для этого типа карт следующий:
optcd=iobase
Интерфейс Phillips CM206
Синтаксис для этого типа карт следующий:
cm206=[iobase][,irq]
Драйвер ожидает в качестве значений IRQ числа от 3 до 11, а в качестве значений портов ввода/вывода числа от 0x300 до 0x370, так что можно указать или то, или другое, или оба значения (в произвольном порядке). Кроме того, можно указать «cm206=auto» для включения автоопределения.
Интерфейс Sanyo
Синтаксис для этого типа карт следующий:
sjcd=iobase[,irq[,dma_channel]]
Интерфейс SoundBlaster Pro
Синтаксис для этого типа карт следующий:
sbpcd=iobase,type
где type — одна из следующих строк (регистр имеет значение): «SoundBlaster», «LaserMate» или «SPEA». База ввода/вывода относится к интерфейсу CD-ROM, а не к звуковой части карты.

Устройства Ethernet

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

ether=irq,iobase[,param_1[,…param_8]],name
Первый нечисловой аргумент воспринимается как имя. Значения param_n (если есть) у разных карт/драйверов, обычно, имеют различный смысл. Обычно, значения param_n используются для указания адреса общей памяти, выбранного интерфейса, канала DMA и т. п.

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

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

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

Драйвер дисковода

У драйвера дисковода есть много параметров. Все они перечислены в Documentation/floppy.txt (или в drivers/block/README.fd, в старых ядрах). Нижеприведенная информация взята непосредственно из этого файла.

Устанавливает битовую маску mask допустимых дисководов. По умолчанию для каждого контроллера дисководов разрешены только приводы 0 и 1. Это сделано по причине того, что некоторое нестандартное аппаратное обеспечение (материнские платы ASUS PCI) неправильно работает с клавиатурой при доступе к дискам 2 и 3. Отчасти, этот параметр устарел благодаря параметру cmos.
Включает в битовой маске все дисководы. Используйте этот параметр, если к контроллеру подсоединено более двух дисководов.
Устанавливает битовую маску так, что разрешёнными являются только дисководы 0 и 1 (по умолчанию).
Сообщает драйверу, что контроллер работает правильно. Это позволяет работать более эффективно, но может не выполняться в некоторых контроллерах. Может повысить скорость некоторых операций.
Сообщает драйверу, что работать с контроллером дисководов нужно осторожно.
Сообщает драйверу, что в наличии есть только один контроллер дисководов (по умолчанию).
Сообщает драйверу о наличии 2-х контроллеров дисководов. Подразумевается, что второй контроллер находится по адресу address. Если address не указан, то подразумевается 0x370.
Сообщает драйверу дисководов, что это Thinkpad. В Thinkpad используется инвертированая линия для смены дисков.
Сообщает драйверу дисководов, что это не Thinkpad.
Устанавливает тип дисковода согласно типу в cmos. Кроме того, этот дисковод разрешается в битовой маске. Это полезно, если имеется более двух дисководов (только два могут быть описаны в cmos) или если BIOS использует нестандартные типы CMOS. Если значение cmos первых двух дисководов равно нулю (по умолчанию), то драйвер будет считывать информацию об этих дисководах из CMOS.
Выводить предупреждающее сообщение при получении нежданного прерывании (по умолчанию).
Не выводить предупреждающее сообщение о нежданном прерывании. Это требуется при некоторых видеорежимах переносных компьютеров IBM L40SX (скорее всего, в них имеется связь между видео- и дисководами. Нежданные прерывания влияют только на производительность и могут быть попросту проигнорированы).

Драйвер звука

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

sound=устройство1[,устройство2[,устройство…[,устройство10]]]
где каждое значение устройства 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» полностью отключит драйвер звука.

Драйверы ISDN

Драйвер ISDN ICN
Синтаксис:
icn=iobase,membase,icn_id1,icn_id2
где icn_id1,icn_id2 — две строки, используемые для обозначения карты в сообщениях ядра.
Драйвер ISDN PCBIT
Синтаксис:
pcbit=membase1,irq1[,membase2,irq2]
где membaseN — адрес начала общей памяти N-ной карты, а irqN — прерывание N-ной карты. По умолчанию используется IRQ 5 и membase 0xD0000.
Драйвер ISDN Teles
Синтаксис:
teles=iobase,irq,membase,protocol,teles_id
где iobase — адрес порта ввода/вывода карты, membase — базовый адрес общей памяти карты, irq — канал прерывания, используемый картой, а teles_id — уникальная строка-идентификатор ASCII.

Драйверы последовательного порта

Драйвер RISCom/8 Multiport Serial («riscom8=»)
Синтаксис:
riscom=iobase1[,iobase2[,iobase3[,iobase4]]]
Подробности можно найти в /usr/src/linux/Documentation/riscom8.txt.
Драйвер DigiBoard («digi=»)
Определяется шестью параметрами. Синтаксис:
digi=status,type,altpin,numports,iobase,membase
Параметры могут быть указаны как целые числа или как строки. Если используются строки, то iobase и membase должны быть указаны в шестнадцатеричном виде. Целочисленные аргументы (может быть несколько) следуют в таком порядке: status (Enable(1) или Disable(0) — включить или отключить эту карту), type (PC/Xi(0), PC/Xe(1), PC/Xeve(2), PC/Xem(3)), altpin (Enable(1) или Disable(0) — включить или отключить упорядочивание дополнительных выводов), numports (количество портов на этой карте), iobase (порт ввода/вывода, на который настроена карта (в шестнадцатеричном виде)), membase (базовый адрес окна памяти (в шестнадцатеричном виде)). Таким образом, следующие два параметра загрузки эквивалентны:
digi=E,PC/Xi,D,16,200,D0000
digi=1,0,0,16,0x200,851968
Подробности можно найти в /usr/src/linux/Documentation/digiboard.txt.
Последовательный/параллельный радиомодем Baycom
Синтаксис:
baycom=iobase,irq,modem
Указываются ровно 3 параметра; при наличии нескольких карт команда «baycom=» указывается несколько раз. Параметр modem — строка, значение которой может принимать ser12, ser12*, par96, par96*. При этом * обозначает, что используется программный DCD, а ser12/par96 выбирают поддерживаемый тип модема. Подробности описаны в файле Documentation/networking/baycom.txt (или drivers/net/README.baycom, в старых ядрах) из дерева исходного кода ядра.
Драйвер радиомодема звуковой карты
Синтаксис:
soundmodem=iobase,irq,dma[,dma2[,serio[,pario]]],0,mode
Все параметры, кроме двух последних, являются целыми числами; ничего не значащий 0 требуется из-за ошибки в коде настройки. Параметр mode — строка вида hw:modem, где hw может быть sbc, wss или wssfdx и modem — afsk1200 или fsk9600.

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

«lp=»
Синтаксис:
lp=0
lp=auto
lp=reset
lp=порт[,порт…]
Вы можете указать драйверу принтера, какие порты надо использовать, а какие не использовать совсем. Это удобно, если не нужно, чтобы драйвер принтера захватывал все доступные параллельные порты, и оставлял их другим драйверам (таким, как PLIP, PPA).

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

Драйвер WDT500/501
Синтаксис:
wdt=io,irq

Драйверы мыши

«bmouse=irq»
Драйвер busmouse понимает только один параметр — используемое значение аппаратного IRQ.
«msmouse=irq»
То же самое относится и к драйверу msmouse.
Настройка мыши ATARI
atamouse=threshold[,y-threshold]
Если указан только один аргумент, то он используется для задания чувствительности по x и по y. В противном случае, первый аргумент устанавливает чувствительность по x, второй аргумент — по y. Значения должны быть в диапазоне от 1 до 20 (включительно); по умолчанию они равны 2.

Видеоустройства

«no-scroll»
Этот параметр указывает, что драйверу консоли не следует использовать аппаратную прокрутку (scroll), осуществляемую путём перемещения начала области экрана в видеопамяти, а не путём перемещения данных. Параметр требуется для некоторых машин Брайля.

СМОТРИТЕ ТАКЖЕ

lilo.conf(5), klogd(8), lilo(8), mount(8), rdev(8)

Большая часть этой страницы была взята из Boot Parameter HOWTO версии 1.0.1, написанной Полом Готмэйкером (Paul Gortmaker). Там можно найти более подробную информацию. Актуальным источником информации по этим вопросам является /usr/src/linux/Documentation/kernel-parameters.txt.

2007-12-16 Linux