Как мне скомпилировать модуль DKMS для нескольких версий образа ядра в Debian?

10

У меня установлены версии 3.16 и 4.0 linux-imageпакета. Во время входа в систему я могу выбрать, какое ядро ​​я хочу загрузить, в пункте меню «Дополнительные параметры». Однако, когда я устанавливаю модуль DKMS, он компилируется только для более новой версии:

Setting up fglrx-modules-dkms (1:14.12-1) ...
Loading new fglrx-14.12 DKMS files...
Building only for 4.0.0-1-amd64

Соответствующие пакеты ( linux-headers, linux-kbuild, linux-compiler-gcc) установлены на 3.16 тоже.

Почему пакет не скомпилирован для старого образа ядра? Могу ли я настроить что - то такое , что будет собран?

doublep
источник
2
Возможно, оно уже существует?
0xC0000022L
У меня нет доступа к этому компьютеру для проверки, но я получаю то же сообщение, пытаясь переустановить этот пакет DKMS. Так что, вероятно, нет.
дабл
Нет, он не был установлен. Тем не менее, теперь стала доступна более новая версия этого пакета, и, как только я обновился, он автоматически был собран для обоих ядер. Так что, возможно, в пакете тоже была какая-то проблема. С другой стороны, я выполнил обновление при загрузке в 3.16, так что, может быть, оно всегда собирается для текущего ядра и любых установленных новых ?
дабл

Ответы:

5

Вы можете использовать команду установки DKMS (Ref:), man dkmsчтобы пересобрать и установить модуль для конкретного ядра. Ниже приведен пример, созданный удалением модулей virtualbox для одной версии ядра.

sudo dkms install <module-name>/<module-version> -k <kernel-version>

$ dkms status
vboxhost, 5.0.10, 4.2.0-21-generic, x86_64: installed
vboxhost, 5.0.10, 4.2.0-22-generic, x86_64: installed
vboxhost, 5.0.10, 4.2.0-23-generic, x86_64: installed
vboxhost, 5.0.10, 4.2.0-25-generic, x86_64: installed

$ sudo dkms remove vboxhost/5.0.10 -k 4.2.0-22-generic
...

$ dkms status
vboxhost, 5.0.10, 4.2.0-21-generic, x86_64: installed
vboxhost, 5.0.10, 4.2.0-23-generic, x86_64: installed
vboxhost, 5.0.10, 4.2.0-25-generic, x86_64: installed


$ sudo dkms install vboxhost/5.0.10 -k 4.2.0-22-generic

Kernel preparation unnecessary for this kernel.  Skipping...

Building module:
cleaning build area....
make KERNELRELEASE=4.2.0-22-generic -C /lib/modules/4.2.0-22-generic/build M=/var/lib/dkms/vboxhost/5.0.10/build...............
cleaning build area....

DKMS: build completed.

vboxdrv.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.2.0-22-generic/updates/dkms/

vboxnetflt.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.2.0-22-generic/updates/dkms/

vboxnetadp.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.2.0-22-generic/updates/dkms/

vboxpci.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.2.0-22-generic/updates/dkms/

depmod....

DKMS: install completed.

$ dkms status
vboxhost, 5.0.10, 4.2.0-21-generic, x86_64: installed
vboxhost, 5.0.10, 4.2.0-22-generic, x86_64: installed
vboxhost, 5.0.10, 4.2.0-23-generic, x86_64: installed
vboxhost, 5.0.10, 4.2.0-25-generic, x86_64: installed
user.dz
источник
1
Отлично, это работает. А чтобы узнать, какие модули и версии известны DKMS, используйте dkms statusкоманду.
Руслан