内核模块缺失

内核模块缺失

我正在用这个NPi i.MX6ULL(armhf) 在这里登板。它带有一个基于 Debian Buster 的定制 Linux 发行版。但它已经被完全剥离到最低限度。

我的问题与主板无关,更多的是关于linux内核。我试图安装防火墙并在其上运行,但没有任何效果。我发现缺少很多常见的内核模块(请参阅下面的 lsmod 输出)。

所以基本上我明白我缺少 nf_tables 和 ip_tables 模块。但现在我的愚蠢问题是——我该如何添加它们?我从哪里得到它们?我已经“apt install nftables”和所有其他类型的东西。但没有任何东西在其中添加模块。

有什么帮助吗?谢谢!

debian@npi:~/libmnl$ cat /etc/os-release 
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

debian@npi:~/libmnl$ uname -r
4.19.71-imx-r1
debian@npi:~/libmnl$ lsmod
Module                  Size  Used by
imx_wm8960             16384  0
snd_soc_wm8960         40960  0
snd_soc_fsl_sai        24576  0
imx_pcm_dma_v2         16384  1 snd_soc_fsl_sai
snd_soc_fsl_spdif      24576  0
snd_soc_fsl_asrc       45056  0
imx_pcm_dma            16384  1 snd_soc_fsl_spdif
snd_soc_core          147456  7 snd_soc_fsl_asrc,snd_soc_fsl_sai,imx_pcm_dma_v2,snd_soc_fsl_spdif,imx_pcm_dma,snd_soc_wm8960,imx_wm8960
snd_pcm_dmaengine      16384  3 imx_pcm_dma_v2,imx_pcm_dma,snd_soc_core
snd_pcm                98304  9 snd_soc_fsl_asrc,snd_soc_fsl_sai,snd_pcm_dmaengine,imx_pcm_dma_v2,snd_soc_fsl_spdif,imx_pcm_dma,snd_soc_core,snd_soc_wm8960,imx_wm8960
snd_timer              32768  1 snd_pcm
evbug                  16384  0
dht11                  16384  0
touch_gt9xx            61440  0

debian@npi:/lib/modules/4.19.71-imx-r1$ ls
kernel             modules.builtin      modules.dep.bin  modules.softdep
modules.alias      modules.builtin.bin  modules.devname  modules.symbols
modules.alias.bin  modules.dep          modules.order    modules.symbols.bin
debian@npi:/lib/modules/4.19.71-imx-r1$ cd kernel/
debian@npi:/lib/modules/4.19.71-imx-r1/kernel$ ls
crypto  drivers  fs  lib  sound

答案1

仅当您获得内核及其.config文件的完整源代码(认为后者可能不是必需的)时,您才能添加它们。在这种情况下,您可以编辑.config并启用缺少的内核模块。

如果你足够幸运,你可以尝试下载这个内核源代码来自 kernel.org,然后使用交叉构建编译器编译它(我不确定这个板架构是什么 - 你已经省略了它),例如sudo apt install gcc-arm-none-eabi。在完美的世界中,您应该使用与构建内核相同的编译器版本,否则模块可能会由于不同的 ABI 而触发内核恐慌/OOP。

相关内容