След. Предыд. Содержание
В этом разделе приводятся примеры
нескольких программ, которые можно
использовать для передачи
аргументов загрузки ядра в само
ядро. Рассматривается, также,
обработка параметров, какие
ограничения существуют на
параметры загрузки и как они
передаются к соответстующему
устройству.
Важно помнить, что в параметрах
загрузки нельзя использовать
пробелы, только между отдельными
аргументами. Список значений для
одного аргумента должен
разделяться запятыми между
значениями, и опять же, никаких
пробелов. Смотри пример ниже.
ether=9,0x300,0xd0000,0xd4000,eth0 root=/dev/hda1 *ПРАВИЛЬНО*
ether = 9, 0x300, 0xd0000, 0xd4000, eth0 root = /dev/hda1 *НЕПРАВИЛЬНО*
После загрузки и запуска ядра Linux
посмотреть параметры командной
строки, заданные при загрузке,
можно просто набрав /proc/cmdline
.
Обычно используется программа 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.
Другим широкоиспользуемым
загрузчиком 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/
.
Есть несколько параметров
загрузки ядра, хранящие свои
значения по-умолчанию в
определенных байтах самого образа
ядра. Есть утилита с названием rdev
,
установленная на большинстве
систем, которая знает где находятся
эти значения и как их изменить. Она
может, также, изменять значения, у
которых нет соответствующего
параметра загрузки ядра, например,
используемый по-умолчанию видео-режим.
Утилита rdev обычно привязана к swapdev,
ramsize, vidmode и rootflags. Это пять значений,
которые rdev может менять -- корневое
устройство, устройство своппинга,
параметры RAM-диска, видео-режим по-умолчанию
и установка readonly/readwrite для
корневого устройства.
Более подробную информацию по rdev
можно найти, набрав rdev -h
или
прочитав поставляемую страницу man (man
rdev
).
Большинство параметров загрузки
имеют вид:
имя[=значение_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
.
Если что-то в форме `foo=bar' не
принимается функцией установки,
как описано выше, то это
интерпретируется как установка
переменной окружения. Примером
может послужить применение TERM=vt100
или BOOT_IMAGE=vmlinuz.bak
в качестве
параметров загрузки. Эти
переменные окружения обычно
проверяются скриптами
инициализации для разрешения или
запрещения большого диапазона
параметров.
Любые оставшиеся параметры, не
выбранные ядром и не
интерпретированные в качестве
переменных окружения, будут
переданы в дальнейшую обработку,
которую обычно выполняет программа
init
. Наиболее обычный
параметр, передаваемый процессу init
,
является слово single, которое
сообщает init
загружать
компьютер в режиме одного
пользователя и не запускать все
обычные демоны. Список приемлимых
параметров смотрите в странице
руководства для установленной на
вашем компьютере версии программы init
.
След. Предыд. Содержание