The Linux BootPrompt-HowTo
2. Огляд параметрів рядка завантаження
У цьому розділі наведено приклади кількох програм, які можна використовувати для передачі аргументів завантаження ядра в саме ядро. Розглядається також обробка параметрів, які обмеження існують на параметри завантаження і як вони передаються до відповідного пристрою.
Важливо пам'ятати, що в параметрах завантаження не можна використовувати пробіли лише між окремими аргументами. Список значень для одного аргументу повинен розділятися комами між значеннями, і знову ж таки, жодних прогалин. Дивись приклад нижче.
Після завантаження та запуску ядра 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 поставляється з чудовою документацією, в тому числі за параметрами завантаження, що обговорюються тут, з яких особливоважлива команда 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 -h або прочитавши сторінку man (man rdev).
2.4 Як ядро відбирає параметри
Більшість параметрів завантаження мають вигляд:
де `ім'' - унікальне ключове слово, що ідентифікує частину ядра, якому передаютьсяпов'язані значення (якщо кілька). Декілька параметрів завантаження передаються просто списком параметрів вище наведеного формату, розділеного пробілами. Пам'ятайте, що межа в 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 .