On Fri, Jun 15, 2007 at 10:41:15PM +0400, Хихин Руслан wrote: > 1 Первое, что пришло в голову - положить модули в разные папки. > depmode -a > Посмотрел в modules.dep - в файл попадает первый найденный ядром модуль. > Так дело не пойдёт :) Да, такая ситуация недопустима. > 2 Дал модулям разные имена, положив их в одной папке. > nvidia_71xx.ko и nvidia_96_xx.ko > > depmode -a > В modules.dep попали все модули. > Любой модуль можно загрузить по имени. Однако в этом случае возникает несоответствие имени файла модуля реальному имени модуля (которое прописано внутри файла). И при отсутствии nvidia.ko не будет работать выгрузка модуля через команду modprobe -r nvidia. > 3 Создал символьную ссылку c именем nvidia. > depmode -a > И символическая ссылка тоже в modules dep. Это тоже источник граблей - после смены ссылки надо обязательно вызывать depmod -a, поскольку у разных версий модуля может быть разный набор зависимостей. > Перезагружаю компьютер с ссылкой, указывющей на nvidia_71xx.ko. > Оп! - в dmesg вижу, что почему-то загрузился nvidia_96xx.ko. Хотя и > в ./.versions/nvidia и символическая ссылка указывет на 71xx - видно > где-то умная автоматика выбирает наибольшую из имеющихся версий - > глюк. Проблема может быть в том, что в модулях nvidia есть таблица PCI ID поддерживаемых карт, по информации из которой udevd может загружать модули автоматически. Для модуля nvidia это по умолчанию запрещено (через blacklist nvidia в /etc/modprobe.d/blacklist), но в случае переименования модуля этот запрет не срабатывает.