我正在用这个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。