Intereting Posts
В Debian, как я могу добавить пакет Python в dist-packages к virtualenv? Может ли правило блока на PF добавить src ip в таблицу mv файл без нарушения символической ссылки на этот файл Можно ли получить конкретную информацию о сжатии файла? Как установить псевдоним во всех оболочках tty? systemd, используя 100% моего процессора, если нет, если я запустил его без systemd Измените тему Xfce из сценария bash Показать записи исключения маршрутизации ядра (FIB) Проблемы с созданием вложенных каталогов в VSFTP на CENTOS7 Ограничить доступ на внешний накопитель, установленный и используемый sftp Создайте загрузочный ubuntu usb для mac или любой компьютер Как вы получаете fgrep, чтобы найти литерал «–help»? Добавить команду echo в / etc / profile, чтобы отключить гашение экрана локальная папка, связанная с SSH с сервера Каково правильное значение для максимального количества CPU для sched_setaffinity?

Модули ядра: .o vs .ko

Похоже, что файлы, содержащие модули ядра, называются .o , по крайней мере, это то, что я рисую при просмотре учебника, подобного этому . Тем не менее, в моем ящике debian, эти файлы, как представляется, называются .ko .

Зависит ли он от распределения (или его проверки) от того, называются ли файлы .o или .ko , и являются ли они более или менее одинаковыми, в противном случае?

Я нашел здесь следующий ответ:

Короткий ответ заключается в том, что файл .ko – это ваш объектный файл, связанный с некоторым ядром, автоматически созданным структурам данных, которые необходимы ядру.

Файл .o – это объектный файл ваших модулей – результат компиляции ваших c-файлов. Затем система сборки ядра автоматически создает другой файл C с некоторыми структурами данных, описывающими модуль ядра (с именем your_module_kmod.c), скомпилирует этот файл C в другой объектный файл и связывает ваш объектный файл и файл объекта, который он создал вместе, чтобы создать .ko файл.

Динамический компоновщик в ядре, отвечающий за загрузку модулей ядра, ожидает найти структуру данных, которую ядро ​​помещает в объект kmod в файле .ko, и не сможет загрузить ваш модуль ядра без них.

Также из этого источника , ссылаясь на tldp : до версии ядра 2.4, это было «.o», а с 2.6 – «.ko».

Это похоже на старое руководство (учебник), в фактах он был написан в 2005 году. Когда ядро ​​Linux было 2.4.x, у модулей было расширение .o, а в 2.6 они стали .ko