我将 Ubuntu 15.10 升级到16.04,一定是在某个地方发生了我的麻烦。
当我想做的时候,我第一次意识到我的麻烦sudo iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
。我得到了:
modprobe: ERROR: ../libkmod/libkmod.c:586 kmod_search_moddep() could not open moddep file '/lib/modules/4.2.0-25-generic/modules.dep.bin'
modprobe: FATAL: Module ip_tables not found in directory /lib/modules/4.2.0-25-generic
iptables v1.6.0: can't initialize iptables table `filter': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
好的,所以有一个问题/lib/modules/4.2.0-25-generic
......
然后我尝试用sudo depmod
. 但我得到了:
depmod: ERROR: could not open directory /lib/modules/4.2.0-25-generic: No such file or directory
depmod: FATAL: could not search modules: No such file or directory
现在我想用 重建内核sudo apt-get install --reinstall linux-...
,这里有一些版本,例如:
linux-image-3.13.0-24-generic
linux-image-3.4.0-4-goldfish
linux-image-4.4.0-21-generic
linux-image-4.4.0-21-lowlatency
linux-image-4.4.0-22-generic
linux-image-4.4.0-22-lowlatency
但没有linux-image-4.2.0-25-generic
。奇怪的事情。因此,通过升级 Linux,不知何故设置了旧版本和错误版本的内核。
现在我想看看这个版本保存在哪里。我在uname -r
命令中找到了它。所以apt-get install linux-image-'uname -r'-dbgsym
,就像:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package linux-image-4.2.0-25-generic-dbgsym
E: Couldn't find any package by glob 'linux-image-4.2.0-25-generic-dbgsym'
E: Couldn't find any package by regex 'linux-image-4.2.0-25-generic-dbgsym'
但我不知道如何uname -r
手动更改。而且我也不知道为什么我得到了这个错误的版本。最重要的是,如果更改uname
.
顺便说一句,我使用 Digitalocean 并通过do-release-upgrade
.
编辑#1
我只是想看看我当前的内核。它实际上是 4.4.0-22:
sudo update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.4.0-22-generic
Found initrd image: /boot/initrd.img-4.4.0-22-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
done
但 uname 仍然说:
uname -r
4.2.0-25-generic
有人可以解释一下可能发生了什么以及如何解决吗?
您不能在 VPS 上安装自己的内核或内核模块。如果您绝对需要某些内核模块,您应该咨询您的主机。
我认为该
filter
模块当然应该包括在内。我只需要在Digitalocean中设置内核。现在我有了正确的内核(4.4.0.22)并且 iptables 也可以工作了。