Как мне скомпилировать модуль 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 тоже.

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


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

1
Отлично, это работает. А чтобы узнать, какие модули и версии известны DKMS, используйте dkms statusкоманду.
— Руслан
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.