Linux Kernel HOWTO: Модули

Previous Next Table of Contents

## 9. Модули

Загружаемые модули ядра могут сохранить память и упростить настройку. Область применения модулей включает файловые системы, драйвера карт ethernet, драйверы ленточных накопителей и т.п.

## 9.1 Установка утилит для работы с модулями

Утилиты для работы с модулями доступны от туда же откуда вы получили свое ядро, они называются `modules-x.y.z.tar.gz`; выберите самый большой номер `x.y.z`, который равен или ниже чем номер вашего текущего ядра. Распакуйте их с помощью команды ``tar zxvf modules-x.y.z.tar.gz`', перейдите в директорию, которую эта команда создала (`modules-x.y.z`), посмотрите файл `README`, и выполните приведенные в нем инструкции по установке (которые обычно являются очень простыми, такими как `make install`). Вы должны теперь получить программы `insmod`, `rmmod`, `ksyms`, `lsmod`, `genksyms`, `modprobe`, и `depmod` в директории `/sbin`. Если вы хотите, протестируйте полученные программы с помощью демонстрационного драйвера ``hw'' в `insmod`; для более детальной информации смотрите файл `INSTALL`, который находится в директории с исходными текстами.

Команда `insmod` вставляет модуль в работающее ядро. Модули обычно имеют расширение `.o`; пример драйвера, упомянутый выше называется `drv_hello.o`, так для того чтобы вставить его, вы должны выполнить ``insmod drv_hello.o`'. Для того чтобы увидеть список загруженных модулей используйте команду `lsmod`. Ее вывод выглядит примерно так:

        blah# lsmod
        Module:        #pages:  Used by:
        drv_hello          1

``drv_hello`' это имя модуля, он использует 1 страницу оперативной памяти (4k), и ни какие модули ядра не зависят от него на текущий момент. Для удаления этого модуля используйте команду ``rmmod drv_hello`'. Заметим, что `rmmod` требует имя модуля, а не имя файла; вы можете получить его из списка выдаваемого `lsmod`. Назначение других утилит для работы с модулями описано в их справочных страницах.

## 9.2 Модули распространяемые с ядром

В версии 2.0.30, почти все доступно как загружаемые модули. Для их использования сначала сначала убедитесь, что вы не настроили их вкомпилированными в ядро; то есть вы не ответили `y` в процессе выполнения ``make config`'. Скомпилируйте новое ядро и загрузитесь с ним. Затем снова перейдите в `/usr/src/linux`, и выполните ``make modules`'. это скомпилирует все модули, которые вы не указали при настройке ядра, и поместит ссылки на них в `/usr/src/linux/modules`. ВЫ можете использовать их прямо из этой директории, или выполните команду ``make modules_install`', которая установит модули в директорию `/lib/modules/x.y.z`, где `x.y.z` это версия ядра.

Это может быть особенно полезным в использовании файловых систем. Вы можете нечасто использовать файловые системы minix или msdos. Например, если я сталкиваюсь с гибким диском с msdos, я должен сделать `insmod /usr/src/linux/modules/msdos.o`, и затем `rmmod msdos`, когда все закончено. Эта процедура сохраняет примерно 50k ОЗУ в ядре в течении нормальной работы. Маленькое замечание для использования файловой системы minix: вы должны всегда настроить его прямо в ядро для использования в ``восстановительных (rescue)'' дисках.

Previous Next Table of Contents