Как fschnitt указывает, всесторонний ответ на это, вероятно, был бы главой в системном руководстве по администрированию, таким образом, я попытаюсь только делать набросок фундаментальных понятий. Задайте новые вопросы при необходимости в большем количестве детали об отдельных моментах.
В UNIX все файлы в системе организованы в единственную структуру дерева каталогов (в противоположность Windows, где у Вас есть отдельное дерево каталогов для каждого диска).
Существует "корневой" каталог, который обозначен /
, который соответствует главному каталогу на основном диске/разделе (в мире Windows, это было бы C:
). Любой другой каталог и файл в системе могут быть достигнуты от корня путем спуска с подкаталогов.
Как можно сделать другие диски/разделы видимыми к системе в такой уникальной древовидной структуре? Вы монтируете их: монтирование диска/раздела на каталоге (например, /media/usb
) средства, что главный каталог на том диске/разделе становится видимым как смонтированный каталог. Пример: если я вставляю карту с интерфейсом USB в Windows I, получают новый диск, например, F:
; если в Linux я монтирую его на каталоге /media/usb
, затем главный каталог на карте с интерфейсом USB (что я видел бы путем открытия F:
диск в Windows), будет видимо в Linux как каталог /media/usb
. В этом случае, /media/usb
каталог называют "точкой монтирования".
Теперь, диски/разделы/и т.д. традиционно названы" (блок) устройствами" в мире UNIX, таким образом, Вы всегда говорите о монтировании устройства на каталоге. Злоупотреблением языком можно просто сказать, "монтируют это устройство" или "размонтирование тот каталог".
Я думаю, что только ответил на Ваш вопрос 1., но это могло запустить Вас для более конкретных вопросов.
Дальнейшее чтение: * http://ultra.pr.erau.edu/~jaffem/tutorial/file_system_basics.htm
Module.symvers
(ре), сгенерированное когда Вы (ре) модули компиляции. Выполненный make modules
, и необходимо получить a Module.symvers
файл в корне дерева ядра.
Обратите внимание на это, если Вы только работали make
и нет make modules
, Вы еще не создали модулей. Символы от самого ядра (vmlinux
или один из архитектурно-зависимых форматов изображения), находятся в System.map
.
для людей, которые нашли этот вопрос, погуглив предупреждение, которое вы получаете при компиляции одного из образцов LKM Дерека Моллоя :, вы можете просто создать пустой с помощью touch Modules.symvers
. если ваше ядро не использует версии модов (CRC, используемые операционной системой, чтобы убедиться, что модули соответствуют ядру )и ваш модуль не имеет никаких зависимостей от других модулей, этого будет достаточно, чтобы подавить предупреждение.
WARNING: Symbol version dump./Module.symvers
is missing; modules will have no dependencies and modversions.
Пустой файл так же хорош, как и файл, сгенерированный gcc, который просто имеет все символы с одинаковым 0x00000000
значением CRC в системе без модверсий.
В CentOS и, возможно, других вариантах RedHat просто извлеките соответствующий файл для вашего работающего ядра:
zcat /boot/symvers-$(uname -r).gz >./Module.symvers
В Ubuntu и, возможно, в других версиях Debian файлы будут найдены автоматически. Однако, если вам это нужно, файл находится здесь:
/usr/src/linux-headers-$(uname -r)/Module.symvers
make modules
действительно создаетModule.symvers
. Спасибо также за разъяснение различия междуmake
иmake modules
, и отношения кSystem.map
.Удачи! Солярис – sdaau 17.11.2011, 23:51insmod
. – Gilles 'SO- stop being evil' 25.10.2015, 14:56