 | Компоненты ядра
В этом разделе мы рассматриваем материал по теме 2.201.1
экзамена 201 Администрирование, средний уровень (LPIC-2). Рейтинг темы 1.
Из чего состоит ядро?
В ядро Linux входит базовое ядро как таковое плюс некоторое
количество модулей ядра. В большинстве случаев базовое ядро
и большая коллекция модулей ядра, компилируемые
одновременно и устанавливаемые или распространяемые вместе,
основаны на коде, созданном Линусом Торвальдсом или
измененном производителями дистрибутивов Linux. Базовое ядро
всегда загружается в ходе загрузки системы и остается
загруженным во время работы постоянно. Модули ядра
первоначально могут быть загружены, а могут нет (хотя как
правило часть из них загружена) и могут подгружаться или
выгружаться во время работы.
Модульная структура ядра позволяет подключать дополнительные
модули, скомпилированные позднее или отдельно от базового
ядра. Дополнительные модули могут создаваться, когда вы
добавляете оборудование к уже работающей системе Linux, а
иногда могут поставляться третьими лицами. Модули ядра
иногда распространяются в виде бинарных файлов, в результате чего ваши способности, как системного администратора, настраивать модули ядра оказываются не востребованы. В любом случае, загруженный
модуль становится частью работающего ядра до тех пор, пока
он не будет выгружен. Вопреки некоторым представлениям,
модуль ядра не просто является интерфейсом прикладного
программирования (API) для общения с базовым
ядром, а становится частью работающего ядра.
Соглашения о
наименовании ядра
Ядра Linux следуют соглашениям о наименовании/нумерации, что
позволяет быстро получить важную информацию о загруженном ядре.
В соглашении определены обозначения для major номера, minor
номера, редакция и в некоторых случаях включена строка,
описывающая производителя/настройки. Эти соглашения применяются
для нескольких типов файлов, в том числе к архивам исходников
ядра, патчам и, возможно, нескольким базовым ядрам (если вы
запускаете то одно, то другое ядро).
Как и обычная разделенная точками последовательность,
ядро Linux следует соглашению по разделению стабильной и
экспериментальной веток. Для стабильных веток используется
четный minor номер, тогда как для
экспериментальных веток -- нечетный minor
номер. Редакция -- просто последовательная нумерация,
отражающая исправления ошибок и перенос нововведений в старые
версии ядра. Кроме того, номер часто характеризует
производителя или специальные возможности. Например:
-
linux-2.4.37-foo.tar.gz:
обозначает архив исходников для стабильной ветки ядра
2.4 от компании "Foo Industries"
-
/boot/bzImage-2.7.5-smp:
обозначает собранное экспериментальное базовое ядро 2.7
с возможностью поддержки SMP
-
patch-2.6.21.bz2: обозначает
патч для обновления более ранней стабильной версии 2.6
до редакции 21
Файлы ядра
Базовое ядро Linux может быть двух версий: zImage,
ограниченной 508 Кбайт, и bzImage для более крупных ядер
(приблизительно до 2.5 Мбайт). Как правило, современные
дистрибутивы Linux используют ядро формата bzImage, что
позволяет включать множество компонент. Вы можете предположить,
что так как "z" в zImage означает сжатие с помощью gzip, то "bz"
в bzImage может означать сжатие с помощью bzip2. Однако, "b"
просто обозначает "big", а для сжатия по-прежнему используется
gzip. В обоих случаях в каталоге /boot/ базовое ядро часто
переименовывается в vmlinuz. Как правило
файл
/vmlinuz является символьной
ссылкой на файл с полным именем ядра, включающим номер версии,
например, /boot/vmlinuz-2.6.10-5-386.
В каталоге /boot/ есть несколько
файлов, связанных с базовым ядром, которые вам уже знакомы
(иногда они могут располагаться вместо этого в корневом
каталоге файловой системы). System.map -- это таблица,
отображающая адреса символов ядра. initrd.img иногда используется
базовым ядром для создания упрощенной файловой системы
на ram-диске, подключаемом на этапе загрузки для
монтирования основной файловой системы.
Модули ядра
Модули ядра содержат дополнительный код ядра, который может
быть загружен после базового ядра. Модули обычно предоставляют одну
или несколько функций:
-
Драйверы устройств (Device drivers): поддержка
специфических типов оборудования
-
Драйверы файловой системы (File system drivers):
предоставляют необязательную возможность чтения и/или
записи специфической файловой системы
-
Системные вызовы (System calls): большинство
поддерживается базовым ядром, но модули могут добавлять
или изменять системные службы
-
Сетевые драйверы (Network drivers): реализуют
соответствующие сетевые протоколы
-
Загрузчики исполняемых файлов (Executable
loaders): анализируют и загружают исполняемые
дополнительные форматы
|  |