Рейтинг:2

Почему в моем ядре Linux отсутствуют каталоги/файлы, необходимые для запуска ip_tables?

флаг in

как упоминалось в заголовке - в моем ядре Linux, похоже, отсутствуют файлы / каталоги, которые имеют решающее значение для правильной работы iptables.Я могу временно решить эту проблему, переустановив ядро, но это не окончательное решение, так как после перезагрузки я возвращаюсь к тому, с чего начал.

Когда я бегу iptables -L Я получаю сообщение об ошибке: «Возможно, необходимо обновить iptables или ваше ядро». Я обнаружил, что могу устранить эту ошибку, запустив sudo apt-get install --reinstall linux-modules-5.8.0-59-generic. Я заметил, что после переустановки у меня появились дополнительные файлы и каталоги в моем /lib/modules/5.8.0-59-универсальный каталог, что наводит меня на мысль, что в моем ядре по умолчанию они отсутствуют, и iptables не работает должным образом. После перезагрузки он возвращается к отсутствию этих файлов/каталогов, а iptables не работает.

Можно ли навсегда переустановить модуль ядра, чтобы мне не приходилось переустанавливать его после каждой перезагрузки, чтобы заставить работать iptables?

Я использую Ubuntu 20.04.2, и, как упоминалось выше, у меня ядро ​​версии 5.8.0-59. Я ценю любую помощь, которую я могу получить!

редактировать:

Результат, который я получаю от лс /загрузка/vmlinuz* это: [вывод vmlinuz]: https://i.stack.imgur.com/dDroe.png ИЛИ как текст:

/boot/vmlinuz /boot/vmlinuz-5.4.0-77-общий /boot/vmlinuz-5.8.0-48-общий /boot/vmlinuz-5.8.0-55-общий /boot/vmlinuz-5.8.0-59 -универсальный /boot/vmlinuz.old

И вывод, который я получаю от Политика apt-cache это: [вывод apt-кэша]: https://i.stack.imgur.com/OY9Cj.png ИЛИ как текст:

linux-image-generic: Установлено: 5.4.0.77.80 Кандидат: 5.4.0.77.80 Таблица версий: *** 5.4.0.77.80 500 500 http://archive.ubuntu.com/ubuntu focus-updates/main amd64 Пакеты 500 http://archive.ubuntu.com/ubuntu focus-security/main amd64 Пакеты 100 /var/lib/dpkg/status 5.4.0.26.32 500 500 http://archive.ubuntu.com/ubuntu focus/main Пакеты amd64

Работающий компьютер — Dell Optiplex 3020 со следующими характеристиками:

  • Процессор: четырехъядерный процессор Intel(R) Core(TM) i5-4570 с тактовой частотой 3,20 ГГц
  • Оперативная память: 8 ГБ оперативной памяти

редактировать: я не уверен, как вывод этих команд поможет мне, и я был бы очень признателен за дальнейшие рекомендации, поскольку я все еще не приблизился к решению этой проблемы!

vidarlo avatar
флаг ar
Пожалуйста, отредактируйте свой пост, чтобы включить в него вывод `ls /boot/vmlinuz*` и `apt-cache policy linux-image-generic`.
Michael Hampton avatar
флаг cz
Пожалуйста, опишите компьютер, на котором вы используете Ubuntu.
Landon Miller avatar
флаг in
Спасибо за ваши ответы, @vidarlo и Майкл Хэмптон! Я обновил свой пост, так что, надеюсь, вы, ребята, можете помочь больше!
vidarlo avatar
флаг ar
@LandonMiller Пожалуйста, не вставляйте текст как изображения, вставляйте его как текст и форматируйте с помощью кнопки `{}`.
Landon Miller avatar
флаг in
Я отредактировал свой пост, чтобы включить вывод в виде текста @vidarlo. Я очень ценю вашу помощь!
флаг mm
У меня та же проблема, что и у @LandonMiller, 20.04.4 LTS (фокус)
Landon Miller avatar
флаг in
@Titou Я опубликовал, что мне нужно было сделать, чтобы решить проблему. Может быть, попробовать это и посмотреть, работает ли это?
Рейтинг:1
флаг no

Ядро, с которым вы загружаетесь, отличается от того, которое вы установили. Короче говоря, модули, которые вы установили, предназначены для другого - возможно, более старого или более нового ядра, выбранного загрузчиком, который, скорее всего, не был обновлен.

Вы можете убедиться в этом с помощью кот /прок/версия. Это покажет текущее работающее ядро. apt install --reinstall linux-modules-`cut -d\ -f3 /proc/version` должен установить правильную версию.

Ты можешь использовать dpkg -l|grep Linux- чтобы увидеть, что установлено.

Что касается того, чтобы загрузчик перестал перезагружаться в ту же старую версию, sudo update-grub может решить это. В качестве альтернативы вы можете просмотреть /загрузка/жратва/жратва.cfg для получения дополнительной информации или держите Сдвиг или нажмите ESC при загрузке и выберите соответствующее ядро. (Видеть https://askubuntu.com/questions/281119/how-do-you-run-update-grub для дальнейшего устранения неполадок)

Несмотря на то, что Linux придерживается «монолитного» дизайна, в котором большая часть функций может быть встроена в само ядро, в настоящее время доступно так много функций, что имеет смысл перенести как можно больше этих функций, таких как iptables, в «загружаемые модули ядра». ". У него есть замечательная функция, когда он «автозагружает» эти модули по мере необходимости, но эти модули обычно очень специфичны для версии ядра — и он не находит их — см. ЛС /USR/библиотека/модули/* - это то, что дало вам сообщение об ошибке.

Вы можете просмотреть, какие модули в настоящее время загружены с помощью lsmod. Вы также можете загружать модули с помощью инсмод и разгрузить их с rmmod. (Видеть мужчина инмод и так далее.)

Компьютеры настолько изменились за последние 30 лет, что вместо того, чтобы просто хранить модули в основном разделе, их нужно хранить на временном RAM-диске. initrd потому что иногда эти модули необходимы для доступа к реальному жесткому диску или файловой системе. обновление-личность заботится о хранении копий необходимых модулей в соответствующих initrd для соответствующих ядер Linux.

Как правило, если ядро ​​каким-то образом может прочитать вашу корневую файловую систему, вы можете загрузить любую корневую файловую систему Linux, используя любое ядро. Таким образом, вы обычно можете легко восстановить или сделать резервную копию вашей системы, загрузившись с загрузочного Linux, а затем смонтировав свою основную файловую систему. (чтобы найти см. лсблк и устанавливать) Чтобы работать в вашей реальной системе, даже если вы загрузились с другой, см. chroot. Например, если вы выполняете загрузку в реальном времени, а ваш жесткий диск отображается как /dev/sdb1 тогда ты можешь fsck /dev/sdb а потом смонтировать /dev/sdb1 /mnt, а потом sudo mount -t proc - /mnt/sdb1/proc; sudo mount -o bind /dev /mnt/sdb1/dev; судо chroot/mnt/sdb1 и тогда вы можете бежать меткая установка или же обновление-личность и выход и судо перезагрузка.)

Файлы могут быть повреждены или отсутствовать из-за многих факторов - нехватки места на диске, ослабленных кабелей, поврежденного оборудования, перебоев в подаче электроэнергии, ЭМП, космических лучей. Современное программное обеспечение хорошо справляется со многими из этих проблем. Отличительной чертой Linux по сравнению с другими системами является то, что она дает вам гораздо больше возможностей для ее восстановления, а не просто переустановки, и в процессе вы узнаете больше о том, как она работает.

флаг mm
Отличный ответ. Я согласен с тем, что ремонт должен приносить дополнительные знания.
Рейтинг:0
флаг in

Для @Titou... Кажется, у меня возникла эта ошибка из-за поврежденного ядра?? Я решил проблему, сделав резервную копию и переустановив ОС Ubuntu. После этого у меня не было проблем с тех пор.

флаг no
Повреждены или отсутствуют «модули ядра». Что касается резервного копирования, вам нужно делать резервную копию только в том случае, если вы переформатируете - что неплохо, если у вас повреждена файловая система, и `fsck` не может это исправить.Если вы делаете резервную копию, в Linux есть одно преимущество: вам нужно сделать резервную копию только `/home`. Если вы не размещаете веб-сайты и базы данных, в этом случае конфигурация находится в `/etc`, а данные в `/var`. Если у вас есть образы докеров, лучше всего экспортировать их, потому что простое резервное копирование `/var/lib/docker` в конечном итоге займет во много раз больше места, чем сами образы, поскольку дедупликация может не сохраниться.
флаг mm
Спасибо за решение!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.