Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum


Lines Club

Ищем достойных соперников.




Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

След. Предыд. Содержание


3. Общие не аппаратные параметры загрузки

Здесь рассматриваются параметры загрузки, не связанные с каким-либо оборудованием или периферией. Напротив, они связаны с определнными внутренними параметрами ядра, такими как управление памятью, ram-диском, корневой системой и другими.

3.1 Опции корневой файловой системы

Все следующие опции относятся к выбору и управлению ядром корневой файловой системой.

Параметр `root='

Этот параметр сообщает ядру какое устройство будет использовано в качестве корневой ФС во время загрузки. По умолчанию, эта установка имеет значение корневого устройства системы, на котором было построено ядро. Например, если рассматриваемое ядро было построено в системе, в которой корневым разделом был `/dev/hda1', то по-умолчанию корневым устройством будет `/dev/hda1'. Чтобы изменить значение по-умолчанию и выбрать в качестве корневого устройства флоппи-диск, нужно использовать `root=/dev/fd1'.

Допустимыми корневыми устройствами могут быть следующие:

(1) /dev/hdaN до /dev/hddN, которые являются разделами N на ST-506 совместимом диске `от a до d'.

(2) /dev/sdaN до /dev/sdeN, которые являются разделами N на SCSI совместимом диске `от a до e'.

(3) /dev/xdaN до /dev/xdbN, которые являются разделами N на XT совместимом диске `от a до b'.

(4) /dev/fdN, т.е. привод флоппи-диска с номером N. Номер N=0 соответствует устройству DOS `A:', а N=1 -- `B:'.

(5) /dev/nfs, не являющееся реальным устройством, а флагом, заставляющим ядро получить корневую ФС по сети.

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

Это один из немногих параметров загрузки ядра, которые хранят значение по-умолчанию в образе ядра и которые, таким образом, могут быть изменены утилитой rdev.

Параметр `ro'

При загрузке ядра необходимо, чтобы корневая файловая система, с которой производится чтения основных данных, была отключена. Это корневая ФС, монтируемая при загрузке. Однако, если корневая ФС смонтирована с разрешенным доступом для записи, вы не сможете надежно проверить целостность ФС с записанными неполностью файлами. Опция `ro' сообщает ядру монтировать корневую ФС как `readonly' (только чтение), чтобы разные программы проверки ФС (fsck) могли надежно предполагать, что на момент проверки неполностью записанных файлов нет. Ни программы, ни процессы не могут записывать файл в рассматриваемую ФС, пока она не будет перемонтирована с разрешенным доступом чтения/записи.

Это один из немногих параметров загрузки ядра, которые хранят значение по-умолчанию в образе ядра и которые, таким образом, могут быть изменены утилитой rdev.

Параметр `rw'

Это полная противоположность предыдущему параметру, сообщает ядру монтировать коревую ФС с доступом чтения/записи. В любом случае по-умолчанию коревая ФС монтируется с доступом чтения/записи. Не запускайте никаких программ типа `fsck' на файловой системе, смонтированной для чтения/записи.

Для этого параметра используется то же самое значение, упомянутое выше и хранимое в файле образа; доступно также через rdev.

3.2 Опции управления RAM-диском

Все следующие опции сообщают ядру как управлять устройством RAM-диска, обычно используемым для загрузки машины на этапе установки или в машинах с модульными драйверами, которые должны быть уже установлены для доступа к корневой файловой системе.

Параметр `ramdisk_start='

Чтобы разрешить образу ядра находиться на флоппи-диске со сжатым образом ram-диска необходимо добавить команду `ramdisk_start=<смещение>'. Ядро нельзя включить в сжатый образ файловой системы ram-диска, т.к. необходимо хранить его, начиная с нулевого блока, чтобы BIOS смогла считать загрузочный сектор и далее ядро могло загрузить само себя.

Замечание: Если вы используете несжатый образ ram-диска, то ядро может быть частью образа ФС, загружаемой в ram-диск, а дискету можно загрузить с помощью LILO, или это могут быть два отдельных ядра, как в случае сжатого образа.

Если вы используете двухдисковую boot/root установку (ядро на диске 1, образ ram-диска на диске 2), то ram-диск должен начинаться с нулевого блока и значение смещения должно быть равно нулю. Поскольку это значения по-умолчанию, вам вообще не обязательно использовать эту команду.

Параметр `load_ramdisk='

Этот параметр сообщает ядру -- нужно ли загружать образ ram-диска или нет. При `load_ramdisk=1' ядро будет загружать флоппи-диск в ram-диск. По-умолчанию значение равно нулю, т.е. ядро не должно загружать ram-диск.

Полное описание новых параметров загрузки и способ применения смотрите в linux/Documentation/ramdisk.txt. Также описан способ установки и сохранения этого параметра в образе ядра с помощью `rdev'.

Параметр `prompt_ramdisk='

Этот параметр сообщает ядру о необходимости сделать приглашение пользователю для вставки флоппи-диска с образом ram-диска. В однодисковой конфигурации образ ram-диска находится на той же дискете, с которой только что закончилась загрузка ядра, поэтому приглашения не нужно. В этом случае нужно использовать `prompt_ramdisk=0'. В двухдисковой конфигурации вам потребуется заменить диски, поэтому нужно указать `prompt_ramdisk=1'. Поскольку это значение по-умолчанию, в действительности оно не указывается. (Историческая справка: Боязливые обычно используют опцию LILO `vga=ask', временно приостанавливающую процесс загрузки и поволяющую заменить загрузочный диск на корневой.)

Полное описание новых параметров загрузки и способ применения смотрите в linux/Documentation/ramdisk.txt. Также описан способ установки и сохранения этого параметра в образе ядра с помощью `rdev'.

Параметр `ramdisk_size='

Поскольку в действительности размер ram-диска растет динамически, по мере необходимости, должено быть ограничение его размера, чтобы он не занял всю память и не оставил вас в недоумении. По-умолчанию это 4096 (т.е. 4МБ), что вполне достаточно. Вы можете изменить значение по-умолчанию, сделать больше или меньше с помощью параметра загрузки.

Полное описание новых параметров загрузки и способ применения смотрите в linux/Documentation/ramdisk.txt. Также описан способ установки и сохранения этого параметра в образе ядра с помощью `rdev'.

Параметр `ramdisk=' (устаревшее)

(ЗАМЕЧАНИЕ: Этот параметр устарел и не должен использоваться на ядрах, начиная с v1.3.47. Команды устройства ram-диска, которые можно использовать, описаны вышше.)

Определяет размер устройства RAM-диска в кБ. Например, если необходима корневая ФС на флоппи-диске 1.44МБ, загруженная в RAM-диск, нужно использовать:


        ramdisk=1440

Это один из немногих параметров загрузки ядра, которые хранят значение по-умолчанию в образе ядра и которые, таким образом, могут быть изменены утилитой rdev.

Параметр `noinitrd' (начальный RAM-диск)

В ядрах, начиная с v2.x, корневой файловой системой изначально может быть RAM-диск, а ядро выполняет /linuxrc образа RAM. Эта возможность обычно используется для загрузки модулей, необходимых для монтирования реальной корневой ФС (например, загрузка модулей драйвера SCSI, хранящиеся в образе RAM-диска, а затем монтирование реальной файловой системы на SCSI диске).

Фактически параметр `noinitrd' определяет что будет происходить с данными initrd после загрузки ядра. Если указано, то вместо преобразования их в RAM-диск, они будут доступны через /dev/initrd, который можно прочитать непосредственно перед освобождением памяти и возвращением ее системе. Более подробно об использовании начального RAM-диска смотрите в linux/Documentation/initrd.txt. Кроме того, дополнительную полезную информацию можно найти в самых свежих версиях LILO и LOADLIN.

3.3 Параметры загрузки управления памятью

Следующие параметры определяют действия Linux по обнаружению или управлению физической и виртуальной памятью вашей системы.

Параметр `mem='

У этого параметра два назначения: изначально он использовался для указания объема установленной памяти (или меньшего значения, если вы хотите ограничить объем памяти, доступный Linux). Второе (и более используемое) назначение -- указать mem=nopentium, сообщающий ядру Linux не использовать функцию эффективности таблицы 4МБ страниц (4MB page table performance feature).

Подпрограмма BIOS, описанная в спецификации PC и возвращающая количество установленной памяти, была разработана для максимум 64 МБ. (Да, еще одно неточное предположение, как и с 1024 цилиндрами дисков... ох!) При загрузке для определения количества установленной памяти Linux использует эту подпрограмму . Если у вас установлено более 64 МБ памяти, вы можете использовать этот параметр загрузки, чтобы сообщить Linux о количестве имеющейся памяти. Ниже приведено высказывание Линуса об использовании параметра mem=.

``Ядро примет любое значение параметра `mem=xx', которое вы укажите, но если обнаружится, что вы солгали, то рано или поздно это приведет к ужасному краху. Параметр определяет самый верхний адрес ОЗУ, т.е., например, `mem=0x1000000' означает, что вы используете 16 МБ памяти. Для машины с 96 МБ это будет `mem=0x6000000'. Если вы сообщите Linux, что памяти имеется больше, чем установлено в действительности, случится неприятность: возможно не сразу, но, в конечном счете, обязательно.''

Учтите, что аргумент не обязательно должен быть шестнадцатиричным, а для обозначения килобайтов и Мегабайтов можно использовать соответственно суффиксы `k' и `M' (регистр влияет). (`k' вызовет сдвиг вашего значения на 10 бит, а `M' - на 20 бит.) Типичным примером для машины с 128 МБ может быть "mem=128m".

Параметр `swap='

Он позволяет пользователю настраивать некоторые параметры виртальной памяти (VM), относящейся к своппингу на диск. Он может иметь следующие восемь значений:


        MAX_PAGE_AGE
        PAGE_ADVANCE
        PAGE_DECLINE
        PAGE_INITIAL_AGE
        AGE_CLUSTER_FRACT
        AGE_CLUSTER_MIN
        PAGEOUT_WEIGHT
        BUFFEROUT_WEIGHT

Заинтересовавшимся хакерам советуем прочитать linux/mm/swap.c и делать пометки об изменения в /proc/sys/vm. В каталоге linux/Documentation/vm/ имеется некоторая полезная документация по этой теме, подставляемая с ядрами.

Параметр `buff='

Параметр, похожий на `swap=', позволяет пользователю настроить некоторые параметры, связанные с управлением буферной памятью. Он может имесь следующие шесть значений:


        MAX_BUFF_AGE
        BUFF_ADVANCE
        BUFF_DECLINE
        BUFF_INITIAL_AGE
        BUFFEROUT_WEIGHT
        BUFFERMEM_GRACE

Заинтересовавшимся хакерам советуем прочитать linux/mm/swap.c и делать пометки об изменения в /proc/sys/vm. В каталоге linux/Documentation/vm/ имеется некоторая полезная документация по этой теме, подставляемая с ядрами.

3.4 Параметры загрузки для файловой системы NFS

Linux поддерживает системы, типа бездисковых рабочих станция, благодаря настройке их корневых систем как NFS (Network FileSystem -- Сетевая файловая система). Эти параметры используются, чтобы сообщить бездисковой рабочей станции с какой машины она будет получать систему. Помните, также, что необходим параметр root=/dev/nfs. Подробная информация по использованию NFS в качестве корневой ФС имеется в файле linux/Documentation/nfsroot.txt. Вы должны прочитать этот файл, поскольку ниже дан только краткий обзор, построенный на основе именно этого файла.

Параметр `nfsroot='

Этот параметр сообщает ядру какую машину, какой каталог и с какими опциями NFS использовать в качестве корневой ФС. Формат этого параметра следующий:


        nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]

Если параметр nfsroot не был дан в командной строке, то по-умолчанию будет использовано `/tftpboot/%s'. Другие опции следующие:

<server-ip> -- Задает адрес IP сервера NFS. Эсли это поле не задано, то по-умолчанию адрес будет определен переменной nfsaddrs (см. ниже). Одно из применений этого параметра, например, разрешение использования разных серверов RARP и NFS. Обычно оставляете это поле пустым.

<root-dir> -- Имя каталога на сервере, монтируемого как корневого. Если в строке имеется фраза `%s', то она будет заменена на ASCII-представление IP адреса клиента.

<nfs-options> -- Стандартные опции NFS. Все опции разделены запятыми. Если поле опций не задано, то будут использованы следующие умолчания:

        port            = как указан демоном portmap сервера
        rsize           = 1024
        wsize           = 1024
        timeo           = 7
        retrans         = 3
        acregmin        = 3
        acregmax        = 60
        acdirmin        = 30
        acdirmax        = 60
        flags           = hard, nointr, noposix, cto, ac

Параметр `nfsaddrs='

Это параметр загрузки устанавливает различные адреса сетевого интерфейса, необходимые для соединения по сети. Если это параметр опущен, то для выяснения этих значений ядро попытается использовать RARP и/или BOOTP. Формат следующий:


        nfsaddrs=<my-ip>:<serv-ip>:<gw-ip>:<netmask>:<name>:<dev>:<auto>

<my-ip> -- IP адрес клиента. Если опущен, адрес будет опреледен с помощью RARP или BOOTP. Выбор протокола будет зависить от то, какой был разрешен во время конфигурирования ядра и параметра <auto>. Если параметр указан, то ни RARP, ни BOOTP использоваться не будут.

<serv-ip> -- IP адрес сервера NFS. Если для определения адреса клиента используется RARP и этот параметр НЕ опущен, то будут приниматься ответы только от указанного сервера. Для использования разных RARP и NFS серверов, укажите здесь ваш сервер RARP (или оставьте пустым), а сервер NFS укажите в параметре nfsroot (см. выше). Если это поле опущено, то будет использован адрес сервера, ответившего на запрос RARP или BOOTP.

<gw-ip> -- IP адрес шлюза, если сервер находится в другой подсети. Если поле опущено, то никакие шлюзы использоваться не будут, подразумевается, что сервер находится в локальной сети, если значение не было получено с помощью BOOTP.

<netmask> -- Маска сети для сетевого интерфейса. Если поле опущено, то сетевая маска будет взята из IP адреса клиента, если не будет получено значение по BOOTP.

<name> -- Имя клиента. Если поле опущено, будет использован IP адрес клиента в ASCII нотации или значение, полученое по BOOTP.

<dev> -- Имя используемого сетевого устройства. Если поле опущено, то для RARP запросов будут использованы все устройства, а для BOOTP -- первое найденное. Для NFS будет использовано устройство, на котором были получены ответы RARP или BOOTP. Если у вас только одно устройство, вы спокойно можете опустить это поле.

<auto> -- Используемый метод автоконфигурирования. Если указан `rarp' или `bootp', то используется указанный протокол. Если значение -- `both' (оба) или опущено, то будут применены оба протокола, насколько они были разрешены при конфигурировании ядра. Использование `none' означает отсутствие автоконфигурирования. В этом случае вы должны указать все необходимые значения в предыдущих полях.

Поле <auto> может быть единственным значением параметра nfsaddrs (без всех предыдущих `:') в случае применения автоконфигурирования. Однако в этом случае значение `none' не допустимо.

3.5 Другие дополнительные параметры загрузки

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

Параметр `debug'

Ядро передает важные (и не очень важные) сообщения оператору через функцию printk(). Если сообщение считается важным, функция printk() поместит копию на текущую консоль, а также после доставки направит к функции для регистрации klogd() на диске. Причина печати важных сообщений на консоле наряду с регистрацией на диске в том, что в случае, например, отказа диска сообщение не запишется и будет потеряно.

Пороговое значение цености сообщения задается переменной console_loglevel. По-умолчанию на консоль отправляется все, что важнее отладки (DEBUG - уровень 7). (Эти уровни определены в файле kernel.h) Использование debug в качестве значения параметра загрузки переведет консоль на уровень 10, т.е. все сообщения ядра появятся на консоле.

Обычно уровень консоли можно установить во время выполнения опцией программы klogd(). Как это сделать смотрите на странице man для установленной в вашей системе версии.

Параметр `init='

По-умолчанию во время загрузки ядро запускает программу `init', которая затем подготавливает компьютер для пользователя, запуская программы getty, выполняя скрипты `rc' и т.п. В начале ядро ищет /sbin/init, затем /etc/init (обесцененно) и, напоследок, попробует запустить /bin/sh (возможно в /etc/rc). Если, например, ваша программа init повреждена и, таким образом, вы не можете загрузиться, вы можете просто использовать коммандную строку загрузки init=/bin/sh, которая может пропустить вас во время загрузки непосредственно к оболочке чтобы заменить поврежденную программу.

Параметр `kbd-reset'

Обычно на i386 машинах ядро Linux не сбрасывает при загрузке контроллер клавиатуры, предполагая что это делает BIOS. Но, как обычно, не все машины делают то, что должны. Использование этой опции может помочь вам, если у вас есть проблемы с клавиатурой. Опция просто заставляет делать сброс во время инициализации. (Некоторые утверждали, что это должно делаться всегда, по-умолчанию).

Параметр `maxcpus='

Число, указанное в этом параметре, ограничивает максимальное количество процессоров в режиме SMP. Использование 0 эквивалентно опции nosmp.

Параметр `mca-pentium'

Машины IBM модель 95 с Microchannel, по всей видимости, зависают во время теста, обычно выполняемом Linux для обнаружения типа математического сопроцессора. Поскольку все процессоры Pentium имеют встроенные математический сопроцессор, этот тест (и проблему зависания) можно обойти с помощью этоой опции загрузки.

Параметр `md='

If your root filesystem is on a Multiple Device then you can use this (assuming you compiled in boot support) to tell the kernel the multiple device layout. The format (from the file linux/Documentation/md.txt) is:

Если ваша корневая система расположена на составном (Multiple) устройстве, то вы можете использовать это параметр (считаем, что поддержка вкомпилирована в загрузку), чтобы сообщить ядру конфигурацию (layout) составного устройства. Формат (из документации linux/Documentation/md.txt) такой:

md=md_device_num,raid_level,chunk_size_factor,fault_level,dev0,dev1,...,devN

где md_device_num количество устройств md, т.е. 0 означает md0, 1 -- md1 и т.д. Для raid_level используйте -1 для линейного режима и 0 для striped режима. Другие режимы пока не поддерживаются. chunk_size_factor только для raid-0 и raid-1 и устанавливает размер куска (chunk) как PAGE_SIZE, сдвинутый влево на указанное количество. fault_level -- только для raid-1 и устанавливает максимальное количество ошибок. (Пока не поддерживается из-за отсутствия поддержки загрузки для raid1.) dev0-devN -- список устройств, разделенный запятыми, которые составляют индивидуальное устройство md: например, /dev/hda1,/dev/hdc1,/dev/sda1

Параметр `no387'

В некоторых сопроцессорах i387 есть ошибки, вылезающие в 32-битовом защищенном режиме. Например, некоторые ранние чипы ULSI-387 вызывают жесткое зависание при вычислениях с плавающей запятой, очевидно из-за ошибки в командах FRSAV/FRRESTOR. Параметр загрузки `no387' позволяет Linux игнорировать мат. сопроцессор, даже если он имеется. Конечно, у вас тогда должно быть ядро с поддержкой математической эмуляции. Это может быть также полезным, если у вас действительно одна из старых 386 машин с 80287 FPU, т.к. Linux не может использовать 80287.

Параметр `no-hlt'

У семейства ЦПУ i386 (и его наследниках) есть инструкция `hlt', заставляющая ЦПУ ничего не делать, пока внешнее устройство (клавиатура, модем, диск и т.п.) не вызовут его для выполнения задачи. Это позволяет процессору входить в режим `пониженного потребления', в котором он сидит как зомби пока внешнее устройство его не разбудит (обычно через прерывание). У некоторых ранних чипов i486DX-100 были проблемы с командой `hlt', после которой они не могли надежно вернуться в рабочий режим. С помощью параметра `no-hlt' можно заставить Linux при отстутствии активности выполнять бесконечный цикл вместо остановки процессора. Это позволит владельцам таких бракованных чипов использовать Linux, хотя советуем по возможности менять такие процессоры по гарантии.

Параметр `no-scroll'

Этот параметр запрещает при загрузке функцию скроллинга (прокручивания), которая делает сложным применение терминалов Braille.

Параметр `noapic'

Эта опция позволяет SMP ядру не использовать расширенные возможности контроллера прерываний в многопроцессорных машинах. Подробнее смотри в документации linux/Documentation/IO-APIC.txt.

Параметр `nosmp'

Позволяет SMP ядру на SMP машинах работать одним процессором. Обычно используется только для отладки и определения наличия зависимости конкретной проблемы от SMP.

Параметр `panic='

В маловероятном случае паники ядра (т.е. внутренняя ошибка, обнаруженная ядром, и которую ядро считает достаточно серьезной для громкого предупреждения и последующей полной остановки), по-умолчанию компьютер остается в этом состоянии, пока кто-нибудь не придет, обратит внимание на сообщение паники на экране и перезагрузит машину. Однако, если машина работает автоматически в изолированном месте, возможно более желательно, чтобы машина автоматически перегрузила себя, что вернуться в работу. Например, при panic=30 при загрузке ядро попытается перегрузиться через 30 секунд после паники ядра. Нулевое значение соответствует поведению по-умолчанию, т.е. ждать вмешательства оператора.

Помните, что это время тайм-аута можно также прочитать и изменить через sysctl интерфейс /proc/sys/kernel/panic.

Параметр `pci='

Параметр `pirq='

Using this option tells a SMP kernel information on the PCI slot versus IRQ settings for SMP motherboards which are unknown (or known to be blacklisted). See linux/Documentation/IO-APIC.txt for more information.

Эта опция передает SMP ядру информацию об установках IRQ слота PCI неизвестных (или известных в черном списке) материнских плат SMP. Подробнее смотри в linux/Documentation/IO-APIC.txt.

Параметр `profile='

Разработчики ядер могут разрешать опции, позволяющие им определять как и где ядро тратить циклы ЦПУ, пытаясь максимизировать эффективность. Эта опция позволяет вам указать номер профайла при загрузке. Обычно выбран второй. Вы также можете скомпилировать ядро с профилированием, разрешенным по-умолчанию. В любом случае, вам понадобится инструмент типа readprofile.c, который поможет использовать вывод /proc/profile.

Параметр `reboot='

Эта опция задает тип перезагрузки, выполняемой Linux при "сбрасывании" компьютера (обычно через /sbin/init управляя Ctrl-Alt-Delete). По-умолчанию, ядра с v2.0 выполняют "холодную" перезагрузку (т.е. полный сброс, BIOS проверяет память и т.д.) вместо "теплой" перезагрузки (т.е. без полного сброса, память не проверяется). "Холодная" перезагрузка была выбрана по-умолчанию, поскольку появилась тенденция применения дешевого/поврежденного оборудования, не выполняющего требования "теплой" перезагрузки. Чтобы вернуться к старому способу ("теплому" рестарту), примените reboot=w или практически любое слово, начинающееся на букву w.

Какие причины для беспокойства? Некоторые дисковые контроллеры с кэш-памятью на плате могут распознавать теплую перезагрузки и сбрасывать все кэшируемые данные на диск. При холодной загрузке карта может быть инициализирована и данные в кэш памяти карты будут потеряны. Другие считают что системы, затрачивающие много времени на проверку памяти, и/или SCSI BIOS'ы, долго инициализирующиеся при холодном рестарте, являются весомой причиной делать теплую перезагрузку.

Параметр `reserve='

Используется для защиты диапазона портов I/O от проверки (probe). Формат команды:

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

В некоторых машинах бывает необходимо защитить драйверы устройств от поиска устройств (auto-probing) в определенном диапазоне. Причиной может послужить плохо сконструированное аппаратура, вызывающая подвисание загрузки (как на некоторых ethernet картах), устройства, идентифицирующиеся ошибочно, устройства, состояние которых было изменено предыдущим probe, или просто устройства, инициализацию которых ядром вы не желаете.

Этот параметр загрузки reserve устраняет эту проблему, указывая диапазон портов I/O, который нужно исключить из тестирования. Этот диапазон резервируется в таблице ядра регистрации портов как уже определенный (с именем reserved). Учтите, что этот механизм не требуется для большинства машин. Необходимо его применять только при наличии проблем или в специальных случаях.

The I/O ports in the specified region are protected against device probes that do a check_region() prior to probing blindly into a region of I/O space. This was put in to be used when some driver was hanging on a NE2000, or misidentifying some other device as its own. A correct device driver shouldn't probe a reserved region, unless another boot argument explicitly specifies that it do so. This implies that reserve will most often be used with some other boot argument. Hence if you specify a reserve region to protect a specific device, you must generally specify an explicit probe for that device. Most drivers ignore the port registration table if they are given an explicit address.

Порты I/O в указанном диапазоне защищены от поиска устройств, выполняемого процедурой check_region() слепого поиска в области пространства I/O. Это пришлось ввести, когда приводил к зависанию некий драйвер для NE2000, а также ошибочно определял другое устройство, как свое собственное. Корректный драйвер устройства не должен тестировать зарезервированный диапазон, если другой параметр загрузки не будет явно указывать это сделать. Подразумевается, что reserve чаще будет использовать с другим загрузочным параметром. Т.е. если вы зарезервировали диапазон reserve для защиты некоторого устройства, то вы должны явно указать адреса тестирования этого устройства. Большинство драйверов игнорируют таблицу регистрации портов, если им указали явный адрес.

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


        reserve=0x300,32  blah=0x300

защищает от проверки все драйверы устройств в адресах 0x300-0x31f, за исключением драйвера для `blah'.

Как обычно с загрузочными параметрами имеется ограничение на 11 параметров, таким образом вы можете указать только 5 зарезервированных диапазонов одним ключевым словом reserve. Если у вас необычно сложные запросы, то поможет несколько указателей reserve.

Параметр `vga='

Заметьте, что это не совсем загрузочный параметр. Это опция, интерпретируемая LILO, а не ядром, как другие загрузочные аргументы. Однако его применение стало настолько обычным, что заслуживает упоминания здесь. Его также можно установить с помощью rdev -v или эквивалентно vidmode в файле vmlinuz. Это позволяет коду установки использовать BIOS для изменения режима дисплея по-умолчанию до непосредственной загрузки ядра Linux. Обычные режимы 80х50, 132х44 и т.д. Лучший способ применения этой опции - стартовать с vga=ask, который предложит вам список различных режимов, допустимых к использованию с вашим видео-адаптером, до загрузки ядра. После того, как вы выберите нужный номер из упомянутого выше списка, его можно будет поместить на место `ask'. Более подробную информацию смотрите в файле linux/Documentation/svga.txt, поставляемый со всеми свежими версиями ядра.

Помните, что у новейших ядер (v2.1 и выше) код установки, изменяющий видеорежим как опцию, числится как Video mode selection support, поэтому эту опцию необходимо разрешить, если вы желаете использовать эту возможность.


Next Previous Contents


Эта статья еще не оценивалась
Вы сможете оценить статью и оставить комментарий, если войдете или зарегистрируетесь.
Только зарегистрированные пользователи могут оценивать и комментировать статьи.

Комментарии отсутствуют