Наши партнеры








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

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

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


2. Обзор параметров строки загрузки

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

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


        ether=9,0x300,0xd0000,0xd4000,eth0  root=/dev/hda1            *ПРАВИЛЬНО*
        ether = 9, 0x300, 0xd0000, 0xd4000, eth0  root = /dev/hda1    *НЕПРАВИЛЬНО*

После загрузки и запуска ядра Linux посмотреть параметры командной строки, заданные при загрузке, можно просто набрав /proc/cmdline.

2.1 LILO (LInux LOader)

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

Типичная конфигурация приостановит LILO и напечатает LILO: после включения компьютера. Затем она ждет несколько секунд ввода пользователем дополнительных параметров и, в случае их отсутствия, загружает систему по-умолчанию. Типичные системные метки, используемые людьми в файле конфигурации, этоlinux, backup и msdos. Если вы хотите ввести параметр загрузки, то делаете его сразу после системной метки раздела, с которого вы хотите загрузиться, как показано на примере ниже:


        LILO: linux root=/dev/hda1

LILO поставляется с прекрасной документацией, в том числе по обсуждаемым здесь параметрам загрузки, из которых особенно важна команда LILO append=, необходимая когда кто-то собирается добавить параметр загрузки в виде постоянного добавления к конфигурационному файлу LILO. Вы просто добавляете нечто типа append = "foo=bar" к файлу /etc/lilo.conf. Это можно сделать в начале файла конфигурации, применяя ко всем разделам, или для одного системного раздела, если добавить внутри секции image=. Более полное описание смотрите в документации LILO.

2.2 LoadLin

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

Он полезен, также, если у вас имеется оборудование, использующее драйвер DOS для установки в определенное состояние. Общий пример -- "SoundBlaster совместимые" звуковые карты, требующие драйвер DOS для установки определенных регистров карты в SB совместимый режим. Загрузка DOS с поставляемым драйвером, а затем загрузка Linux из строки DOS с помощью LOADLIN.EXE предотвратит сброс карты, который происходит при обычной перезагрузке. Таким образом, карта остается в SB соместимом режиме и, следовательно, может быть использована под Linux.

Есть еще несколько других программ, которые можно использовать для загрузки Linux. Полный список смотрите в списке доступных программ на вашем местном ftp зеркале Linux, в каталоге system/Linux-boot/.

2.3 Утилита ``rdev''

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

Утилита rdev обычно привязана к swapdev, ramsize, vidmode и rootflags. Это пять значений, которые rdev может менять -- корневое устройство, устройство своппинга, параметры RAM-диска, видео-режим по-умолчанию и установка readonly/readwrite для корневого устройства.

Более подробную информацию по rdev можно найти, набрав rdev -h или прочитав поставляемую страницу man (man rdev).

2.4 Как ядро отбирает параметры

Большинство параметров загрузки имеют вид:


        имя[=значение_1][,значение_2]...[,значение_11]

где `имя' - уникальное ключевое слово, идентифицирующее часть ядра, которому передаются связанные значения (если несколько). Несколько параметров загрузки передаются просто списком параметров выше приведенного формата, разделенного пробелами. Помните, что предел в 11 значений реален, поскольку существующий код на одно ключевое слово обрабатывает только 11 параметров, разделенных запятыми. (Однако, в особых сложных ситуациях вы можете повторно использовать такое же ключевое слово с еще 11-ю параметрами, предполагая, что функция установки это поддерживает.) Также помните, что ядро разбивает список максимум на десять целочисленных аргументов и последующую строку, поэтому реально вы не можете передать 11 целочисленных значений, если только не преобразовываете 11-й параметр из строчного в целочисленный непосредственно в самом драйвере.

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

Затем ядро проходится по списку функций установки (находящемуся в массиве bootsetups) в поиске совпадения заданной строки параметра (такой как `foo') с функцией установки (foo_setup()) конкретного устройства или части ядра. Если вы передаете ядру строку foo=3,4,5,6,bar, то ядро будет искать зарегистрировано ли `foo' в массиве bootsetups. Если да, то ядро вызовет функцию установки, связанную с `foo' (foo_setup()) и передаст ей целочисленные значения 3, 4, 5 и 6, указанные в командной строке ядра, и также строковый параметр bar.

2.5 Установка переменных окружения

Если что-то в форме `foo=bar' не принимается функцией установки, как описано выше, то это интерпретируется как установка переменной окружения. Примером может послужить применение TERM=vt100 или BOOT_IMAGE=vmlinuz.bak в качестве параметров загрузки. Эти переменные окружения обычно проверяются скриптами инициализации для разрешения или запрещения большого диапазона параметров.

2.6 Передача параметров в программу `init'

Любые оставшиеся параметры, не выбранные ядром и не интерпретированные в качестве переменных окружения, будут переданы в дальнейшую обработку, которую обычно выполняет программа init. Наиболее обычный параметр, передаваемый процессу init, является слово single, которое сообщает init загружать компьютер в режиме одного пользователя и не запускать все обычные демоны. Список приемлимых параметров смотрите в странице руководства для установленной на вашем компьютере версии программы init.


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