Как установить linux-модули-дополнительно?

#docker #linux-device-driver #ubuntu-18.04 #ubuntu-20.04 #usbserial

Вопрос:

Когда я запускаюсь sudo apt install linux-modules-extra-$(uname -r) в контейнере Docker Ubuntu 20.04 , основанном на работающем одноплатном компьютере Ubuntu 18.04 , я получаю следующие ошибки:

 E: Unable to locate package linux-modules-extra-4.15.0-143-generic
E: Couldn't find any package by glob 'linux-modules-extra-4.15.0-143-generic'
E: Couldn't find any package by regex 'linux-modules-extra-4.15.0-143-generic'
 

Для меня это заставляет задуматься, возможно ли вообще установить linux-modules-extra-4.15.0-143-generic в Ubuntu 20.04 ? Может быть, это совместимо только с Ubuntu 18.04 ?

Не мог бы кто-нибудь прояснить это для меня, пожалуйста?

Ответ №1:

В общем случае, если вы создаете модуль ядра, он должен точно соответствовать ядру, запущенному в хост-системе. Если вы используете собственную систему Debian или Ubuntu (без докера), существует система, в которой модули ядра могут быть перестроены или переустановлены при обновлении ядра хоста. См., например, страницу Debian wiki KernelDKMS.

В отличие от этого, изображение Docker, как правило, должно быть переносимым между хостами. Если вы обновите ядро хоста или запустите FROM ubuntu:18.04 образ на хосте Ubuntu 20.04, образ на самом деле не должен знать об этом.

В вашем конкретном случае вы не можете получить необходимые заголовки ядра, потому что они не являются частью дистрибутива Ubuntu 18.04. В данном конкретном случае можно было бы получить заголовки из более поздней версии Ubuntu, но в общем случае это может оказаться невозможным; возможно, потому, что система на самом деле работает под управлением обычного Debian или RHEL, а сборка ядра отличается, возможно, потому, что оператор создал свое собственное ядро.

Поскольку модуль ядра Linux настолько специфичен для хоста, на котором он работает, и поскольку он может обойти все проблемы безопасности, нецелесообразно пытаться установить его в контейнер. Вместо этого сделайте это непосредственно на хосте.