Здравствуйте!
Скажите, по каким признакам ядро определяет, с ним ли скомпилирован загружаемый модуль или нет?
Конкретно в Astra Linux есть модуль безопасности, его исходный текст недоступен. Я попробовал при
компиляции ядра оставить ту же версию, что и у дистрибутивного, вроде бы это удалось.
Но всё равно оно не позволяет пользователю войти в систему, т.к. не может загрузить этот модуль.
Но вообще, в любой Linux, как это определяется?
Пётр.
модуль и ядро
Что говорит [highlight=black]modinfo /path/to/module.ko[/highlight]? А вообще, см. depmod(8).
Вот вывод modinfo:
[console]
filename: /lib/modules/3.2.0-27-generic/misc/parsec.ko
license: Commercial
srcversion: 211C0DFC7E111EB2B579B4F
depends:
vermagic: 3.2.0-27-generic SMP mod_unload modversions
parm: enabled:enable or disable PARSEC (uint)
[/console]
А какое ядро используется? 3.2.0?
Это вывод для дистрибутивного модуля, дистрибутивное ядро называется 3.2.0-27-generic,
скомпилированное собрано с этим же именем в Makefile в корне исходного кода,
CONFIG_VERSION_SIGNATURE и version в deb-пакетах совпадают.
Пётр.
Хм. Ну, вообще, модуль для другого ядра может и не грузиться (и с очень большой вероятностью не будет грузиться), потому что у ядра и модуля несовместимы ABI. Но если вы думаете, что ABI все-таки совместимы, но модуль не грузится из-за несовпадения строки "vermagic", вшитой в модуль, можно попробовать [highlight=black]# modprobe --force-vermagic parsec[/highlight]. Но это без гарантий. Положите модуль по пути /lib/modules/`uname -r`/misc/, затем выполните [highlight=black]# depmod -a[/highlight], затем пробуйте загрузить модуль командой выше, затем смотрите в dmesg результаты.
И да, арчвики -- весьма толковое чтиво.
Модуль именно там и находится и "depmod -a" для него делалось.
Насчёт ABI я ничего не думаю, т.к. не знаю, что это, хотя когда-то пытался смотреть.
Как я представляю, модуль грузится не во время загрузки системы, а когда пользователь
пытается войти, т.е. само ядро грузится. В auth.log при этом именно сообщение, что
parsec.ko не загрузился.
Пётр.
Оказалось, что в пакетах со скомпилированным ядром в /boot вообще нет abi-файла,
и в Astra 1.3 и в 1.4. А как он создаётся и возможно ли построить его отдельной командой?
Пётр.
Какой еще abi-файл? ABI -- это нечто совершенно другое. Так что, если ABI несовместим, похоже, придется писать модуль-привязку...
Действительно, это совершенно другое, но всё же в пакете с дистрибутивным ядром в /boot
есть abi-файл, а в пакете со скомпилированным - нет. Написать его самому - абсолютно
не вариант, я же не разработчик Astra и не знаю того, что для этого надо. Да и вообще
я модулей ядра никогда не писал.
Пётр.
Скажите, по каким признакам ядро определяет, с ним ли скомпилирован загружаемый модуль или нет?
Практикум по Linux Kernel
Соответствие модуля ядру тупо определяется по текстовой сигнатуре (наименованию) ядра - переименуйте ядро при сборке, и все модули окажутся неприемлемыми.
[quote="Peter"]Скажите, по каким признакам ядро определяет, с ним ли скомпилирован загружаемый модуль или нет?
Практикум по Linux Kernel
Соответствие модуля ядру тупо определяется по текстовой сигнатуре (наименованию) ядра - переименуйте ядро при сборке, и все модули окажутся неприемлемыми.[/quote]
Я пробовал перед компилированием назвать ядро так же, как и дистрибутивное,
и внутри deb-пакета с ним в INFO и в control было то же название, но это не помогло,
всё равно не принимает дистрибутивный модуль.
Пётр.
но это не помогло,
Вы просто делаете что-то не так *CRAZY*
Olej, а можете привести последовательность действий, которая даст положительный результат?
а можете привести последовательность действий, которая даст положительный результат?
Я вам показывал книжку, в >400 стр. Office, >5 лет практической работы, проверок и развития ... которая даёт положительный результат.
Что ещё надо?