Подключение модулей по требованию
Модуль может быть подключен автоматически, когда потребуется обеспечиваемая им функциональность, а затем автоматически удален.
Предположим, например, что файловая система MS-DOS не была подключена ни статически, ни динамически. Если пользователь попытается смонтировать файловую систему MS-DOS, системный вызов mount нормальным образом закончится неудачей и возвратит код ошибки, потому что MS-DOS не находится в списке file systems зарегистрированных файловых систем. Однако если при конфигурировании ядра была задана поддержка автоматического подключения модулей, Linux попытается подключить модуль MS-DOS, а затем снова просмотрит список зарегистрированных файловых систем. Если модуль был подключен успешно, системный вызов mount будет выполнен так, словно файловая система присутствовала с самого начала.
Программа modprobe
Чтобы автоматически подключить модуль, ядро создает поток для выполнения внешней программы modprobe3, которая разберется со всеми вопросами, связанными с зависимостями модулей. Зависимости обсуждались ранее: модулю для работы может потребоваться один или несколько модулей, а тем, в свою очередь, могут потребоваться еще модули. Например, модулю MS-DOS требуется другой модуль по имени fat, содержащий код, общий для всех файловых систем, основанных на FAT (File Allocation Table, Таблица размещения файлов). То есть если модуля fat еще нет, то он тоже должен быть автоматически подключен при запросе на модуль MS-DOS. Разрешение зависимостей и поиск модулей лучше всего выполнять в режиме пользователя, поскольку эти действия связаны с обращением к объектным файлам модулей в файловой системе.
Внешняя программа modprobe аналогична программе insmod, поскольку подключает модуль, указанный в командной строке. Однако программа modprobe вдобавок рекурсивно подключает все модули, используемые модулем, заданным в командной строке. Например, если пользователь вызовет modprobe для подключения модуля MS-DOS, эта программа подключит вслед за MS-DOS и модуль fat, если это будет необходимо. Программа modprobe просто проверяет зависимости модуля; фактически его подключение происходит за счет ответвления нового процесса и выполнения программы insmod.
Откуда программа modprobe знает о зависимостях модуля? При запуске системы выполняется еще одна внешняя программа по имени depmod. Она просматривает все модули, откомпилированные для работающего ядра, которые обычно хранятся в каталоге /lib/modules. Затем эта программа записывает все зависимости модулей в файл modules.dep. Программа modprobe просто сопоставляет информацию из этого файла со списком подключенных модулей, полученным из файла /ргос /modules.
Предыдущая страница | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | Следующая страница