如何安装 linux-modules-extra?

Pyy*_*Pyy 1 usbserial linux-device-driver docker ubuntu-18.04 ubuntu-20.04

当我在基于单板计算机上运行的sudo apt install linux-modules-extra-$(uname -r)Docker 容器中运行时,出现以下错误:Ubuntu 20.04Ubuntu 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'
Run Code Online (Sandbox Code Playgroud)

对我来说,这让我想知道是否可以linux-modules-extra-4.15.0-143-generic安装Ubuntu 20.04?也许它只兼容Ubuntu 18.04

有人可以帮我澄清一下吗?

Dav*_*aze 5

一般来说,如果您正在构建内核模块,它必须与主机系统上运行的内核完全匹配。如果您使用的是本机 Debian 或 Ubuntu 系统(没有 Docker),则有一个系统可以在更新主机内核时重建或重新安装内核模块。例如,请参阅Debian wiki KernelDKMS 页面

相比之下,Docker 镜像通常应该可以跨主机移植。如果您升级主机的内核,或者如果您FROM ubuntu:18.04在 Ubuntu 20.04 主机上运行映像,则该映像实际上并不应该意识到这一点。

在您的特定情况下,您无法获取所需的内核标头,因为它们不是 Ubuntu 18.04 发行版的一部分。对于这种特殊情况,可能可以从更高版本的 Ubuntu 中获取标头,但在一般情况下可能无法获取;也许是因为系统实际上运行的是普通的 Debian 或 RHEL,并且内核构建不同,也许是因为运营商构建了自己的内核。

由于 Linux 内核模块对其运行的主机非常特定,并且它可以绕过任何和所有安全问题,因此尝试在容器中安装一个内核模块是不合适的。而是直接在主机上执行此操作。