Все о Linux. LinuxRSP.Ru


Cвежие новости Linux и BSD, анонсы статей и книг прямо в почтовый ящик!
Подписаться письмом


 Сегодняшние новости:

25 лет исполнилось ядру Linux

Релиз KDevelop 5.0

Oracle открывает код JDK9 для ARM

Выпущен Timewarrior 1.0.0

Релиз Android 7.0

Percona Memory Engine для MongoDB на базе WiredTiger

PowerShell открыт и доступен для Linux

Форк TrueCrypt: VeraCrypt 1.18

Релиз Snapcraft 2.14

Релиз Go 1.7

Стабильный выпуск рабочего стола Lumina

Вышла первая версия аналога OpenCV - DCV 0.1

Выпуск минималистичной программы для мониторинга jsonmon 3

В MIT разработали новый язык программирования

Первый релиз Qt5Gtk2

Godot 2.1 - новая версия открытого игрового движка

Свободная цифровая станция звукозаписи: Ardour 5.0

Обновление SkypeWeb Plugin for Pidgin

Вышла версия 3.0 Android File Transfer для Linux (и для OS X)

Программный аналог MIDI-контроллера для создания музыки: Launchpadd v1.3

Mozilla спонсирует поддержку Python 3.5 в PyPy

Ef 0.08 - программа для моделирования динамики заряженных частиц

Обновление текстового редактора TEA до версии 42.0.0

Релиз OpenOrienteering Mapper 0.6.4

Вышли Guix и GuixSD 0.11

Релиз Opera 39

Выпуск LibreOffice 5.2

В OpenSSH обнаружены и устранены некоторые уязвимости

Эмулятор FCEUX 2.2.3

Компания Билайн переходит на российскую СУБД с открытым исходным кодом Tarantool

Google

 Новые статьи :

Утилиты для восстановления потерянных данных в Linux

Лучшие файловые менеджеры для Android

20 лучших бесплатных книг о Linux

Как сгенерировать открытый/закрытый SSH-ключ в Linux

Grive - клиент Google Drive для Linux с открытым исходным кодом

Протокол IPv6: варианты подключения

Сервер из образа: DHCP + TFTP + Initrd + OpenVZ

Обзор веб-панелей управления хостингом

Приёмы работы с Vim

Nginx как Reverse Proxy для сайта, использующего SSL

Разработка модулей ядра Linux

Мониторинг нагрузки http-сервера Apache 2

Перевод комментариев к файлу конфигурации Squid

Решение проблем при использовании "1c предприятие" 8.2 в Linux

Advanced Bash-Scripting Guide Искусство программирования на языке сценариев командной оболочки







Rambler's Top100





 
 

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


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.


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


      

Связь | О проекте LinuxRSP | Реклама | О Linux
© 1999-2021 LinuxRSP