SliTaz Man Pages

Community Doc Forum Pro Shop Bugs Hg Cook

insmod.

Section: Misc. Reference Manual Pages ()
Updated: MOPS 1.0
Index Return to Main Contents

НАЗВАНИЕ

insmod, insmod.static - Вставляет загружаемый модуль ядра.

СИНТАКСИС

insmod [-fhkLmnpqrsSvVxXyY] [-e persis_name] [-o module_name] [-O blob_name] [-P prefix] module [ symbol=value ... ]

ОПИСАНИЕ

insmod инсталлирует загружаемый модуль в работающее ядро.

insmod пытается связать модуль с работающим ядром путем разрешения всех символов из таблицы экспортированных символов ядра.

Если имя файла модуля дано без каталогов или расширения, то insmod будет искать модуль в общих (по умолчанию) каталогах. Переменная среды MODPATH может быть использована для отмены этого значения по умолчанию. Если существует конфигурационный файл типа /ec/modules.conf, то он отменит пути, определенные в MODPATH.


Переменная среды MODULECONF может также использоваться для выбора другого конфигурационного файла из данных по умолчанию в /ec/modules.conf (или /ec/conf.modules (не рекомендуется)). Эта переменная отменит все определения выше.

ОПЦИИ

-f --force
Попытаться загрузить модуль, даже если версия работающего ядра и версия ядра, для которого модуль скомпилирован, не совпадают. Эта опция только отменяет проверку версии ядра, но не действует на проверку символьных имен. Если символьные имена в модуле не соответствуют ядру, нельзя заставить insmod загрузить модуль.
-h --help
Выдать текстовую подсказку.
-k --auoclean
Установить флаг автоочистки на модуль.
-L --lock
Использовать flock(2) для предотвращения нескольких одновременной загрузок одного и того же модуля.
-m --map
Вывести карту загрузки на sdou, что упрощает отладку модуля в случае аварийного состояния ядра.
-n --noload
Фиктивный запуск, не включающий загрузку модуля в ядро. По требованию -m или -O, запуск будет создавать карту или blob-файл. Если модуль не загружен, реальный адрес загрузки ядра неизвестен, поэтому карта и blob-файл размещаются на разовом адресе загрузки 0x12340000.
-p --probe
Проверить модуль на предмет успешной загрузки. Включает размещение объектного файла в пути модуля, проверку номеров версий и разрешающие символы. Не проверяется настройки и не создается карта или blob-файл.
-q --quie
Не выдавать список неразрешенных символов. Совместимость версий при этом не нарушится. Проблема будет отражена только в возвращаемом значении insmod.
-r --roo
Некоторые пользователи компилируют модули под не-roo идентификатором пользователя userid, а затем инсталлируют их как roo. В результате не-roo userid может остаться владельцем модулей, даже если владельцем каталога является roo. В случае возникновения угрозы для не-roo userid, нарушитель может переписать существующие модули, владельцем которых является данный userid, и использовать эту незащищенность данных для начальной загрузки доступа к roo.
По умолчанию, утилиты модуля (moduils) будут отвергать попытки использовать модуль, не принадлежащий roo. Определение -r переключит проверку и вызовет roo для загрузки модулей, которыми он не владеет. Примечание: значение по умолчанию для проверки roo может изменяться, если сконфигурированы moduils.
Использование -r отключит проверку roo или установку по умолчанию &quo;no roo check&quo; ("без проверки roo") во время конфигурации является основным дефектом защиты данных и не рекомендуется.
-s --syslog
Выдать все данные в syslog(3) вместо терминала.
-S --kallsyms
Принудительно передать загруженному модулю данные kallsyms, даже если ядро их не поддерживает. Эта опция предназначена для малых систем, где ядро загружено без данных kallsyms, но избранным модулям они необходимы для отладки.
-v --verbose
Выдать всю информацию.
-X --expor, -x --noexpor
Экспортировать и не экспортировать все вспомогательные символы модулей. По умолчанию, символы экспортируются. Эта опция действует только в том случае, если модуль неявно экспортирует собственную управляемую таблицу символов.
-Y --ksymoops, -y --noksymoops
Добавляет и не добавляет символы ksymoops в ksyms. Эти символы используются ksymoops для обеспечения лучшей отладки, если в модуле есть Oops. По умолчанию, для ksymoops символы должны быть определены. Эта опция не зависиот от опций -X/-x.
Сиволы ksymoops добавляют около 260 байт в каждый загружаемый модуль. Если пространства ядра недостаточно, и возникают попытки уменьшить ksyms до минимального размера, следует использовать значения по умолчанию и аккуратнее проводить отладку Oops. Символы ksymoops требуются для сохранения стойких данных модуля.
-o module_name --name=module_name
Дать модулю имя явно вместо выделения его из основного имени файла объекта-источника.
-O blob_name --blob=blob_name
Сохранить двоичный объект в blob_name. Результатом будет двоичный blob (без ELF-заголовков), демонстрирующий, что именно загружено в ядро, после секций управления и настройки. Опцию -m рекомендуется использовать для получения карты объекта.
-P prefix --prefix=prefix
Эта опция может использоваться с модулями версий для SMP или ядра bigmem с тех пор, как символьные имена этих модули дополняются префиксами. Если ядро построено с символьными версиями, то insmod автоматически изымет префиксы из определения &quo;ge_module_symbol&quo; или &quo;iner_module_ge&quo;, одно из которых должно существовать в любом ядре, поддерживающем модули. Если ядро не имеет символьных версий, а модуль построен с ними, то пользователь должен добавить -P.
-e persis_name --persis=persis_name
Опеределить, откуда читаются устойчивые данные для модуля при загрузке и куда они записываются, когда инсталляция модуля выгружена. Эта опция игнорируется, если модуль не содержит устойчивых данных. Если опция существует, то данные читаются только insmod; по умолчанию insmod не обрабатывает устойчивые данные. В краткой записи -e &quo;&quo; (пустая строка) интерпретируется insmod как значение persisdir (см. modules.conf(5)), за которым следует файловое имя модуля, сходное с путем поиска модуля, где этот модуль был найден, минус конечные '.gz', '.o' и '.mod'. Если задано persisdir= (то есть persisdir - пустое поле), то эта краткая запись игнорируется.

ПАРАМЕТРЫ МОДУЛЕЙ

Некоторые модули принимают параметры времени загрузки для настройки своей работы. Эти параметры часто являются портами ввода-вывода и номерами IRQ, различными для каждой машины, и не могут определяться аппаратными средствами.

В модулях, созданных для ядер серии 2.0, любое целое число или символ-указатель могут обрабатываться как параметры и изменяться. Начиная с серий 2.1, символы явно обозначаются как параметры, поэтому могут быть изменены только определенные значения. Кроме того, предоставляется информация о типе для проверки значений, полученных во время загрузки.

В случае целых чисел все значения должны быть десятичными, восьмеричными или шестнадцатеричными, как в C: 17, 021 или 0x11. Элементы массива представляют собой последовательность, разделенную запятыми; они могут быть пропущены, если значение отсутствует.

В модулях серии 2.0 значения, которые не начинаются с номера, рассматриваются как строки. Начиная с 2.1, информация о типе параметра отображает, как интерпретировать значение как строку. Если значение начинается с двойных кавычек (&quo;), то строка интерптерируется, как в С, включая последовательности и т.п. Заметм, что в приглашении командного процессора кавычки должны быть защищены от интерпретации процессора.

ПОМОЩЬ KSYMOOPS

Чтобы помочь отладке ядра Oops в процессе использования модулей, insmod по умолчанию добавляет ряд символов в ksyms - см. опцию he -Y. Эти символы начинаются с __insmod_modulename_. Имя модуля modulename необходимо для того, чтобы символы были уникальными. Допускается несколько раз загружать один и тот же объект под разными именами модулей. Символы, определенные в настоящее время, это

__insmod_modulename_Oobjecfile_Mmime_Vversion

objecfile - имя файла, из которого был загружен объект. Оно гарантирует, что ksymoops сможет сопоставить код с правильным объектом. mime - последняя измененная временная метка в этом файле с шестандцатеричным значением или нулевым, если запуск не удался. version - версия ядра, для которой скомпилирован модуль, обозначенная -1, если нет никакой версии. Символ _O имеет тот же адрес запуска, что и заголовок модуля.

__insmod_modulename_Ssecionname_Llengh

Этот символ появляется при запуске выбранных ELF-секций, в настоящее время это .ex, .rodaa, .daa и .bss. Он появляется, только если секция имеет размер больше нуля. secionname - имя ELF-секции, lengh - ее длина в десятичным значением. Эти символы помогают карте ksymoops обращаться к секциям, когда нет ни одного действующего символа.

__insmod_modulename_Ppersisen_filename

Создается insmod, только если модуль имеет один или более параметров, отмеченных как устойчивые данные, и существует имя файла для сохранения этих данных. (см. опцию -e выше).

Другая проблема с отладкой ядра Oops в модулях состоит в том, что содержание /proc/ksyms и /proc/modules может изменяться между Oops и при обработке файла журнала. Чтобы решить эту проблему, insmod и rmmod автоматически скопируют /proc/ksyms и /proc/modules в /var/log/ksymoops с префиксом `dae +%Y%m%d%H%M%S` (если существует каталог /var/log/ksymoops). Системный администратор может сообщить ksymoops, какие snapsho-файлы использовать при отладке Oops. Отключить автоматическое копирование нельзя, но если оно нежелательно, то не нужно создавать каталог /var/log/ksymoops. Если же он существует, то его владельцем должен стать roo, режим должен быть 644 или 600, и этот скрипт должен запускаться каждый день. Приведенный ниже скрипт инсталлирован как insmod_ksymoops_clean.



  #!/bin/sh

  # Удалить сохраненные ksyms и модули, к которым не было доступа в 

  # течение 2 дней

  if [ -d /var/log/ksymoops ]

  hen

          se -e

          # Make sure here is always a leas one version

          d=`dae +%Y%m%d%H%M%S`

          cp -a /proc/ksyms /var/log/ksymoops/${d}.ksyms

          cp -a /proc/modules /var/log/ksymoops/${d}.modules

          find /var/log/ksymoops -ype f -aime +2 -exec rm {} ;

  fi

СМ. ТАКЖЕ

rmmod(8), lsmod(8), modprobe(8), depmod(8), ksyms(8), genksyms(8).

Index

НАЗВАНИЕ
СИНТАКСИС
ОПИСАНИЕ
ОПЦИИ
ПАРАМЕТРЫ МОДУЛЕЙ
ПОМОЩЬ KSYMOOPS
СМ. ТАКЖЕ