Назад | Перейти на главную страницу

ОШИБКА: не удалось открыть каталог /lib/modules/4.2.0-25-generic: нет такого файла или каталога

Я обновил 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 тоже работают.