web-dev-qa-db-ja.com

再起動するたびにlibmodulesフォルダーを削除しました

uname -r:4.13.0-16-generic(ubuntu 17.10サーバー)

再起動後にiptablesが機能しないという問題があります。

iptables-apply /etc/network/iptables
[ ok ] Stopping fail2ban (via systemctl): fail2ban.service.
Applying new iptables rules from '/etc/network/iptables'... modprobe: FATAL: Module ip_tables not found in directory /lib/modules/4.13.0-16-generic
iptables-restore v1.6.1: iptables-restore: unable to initialize table 'filter'

Error occurred at line: 3
Try `iptables-restore -h' or 'iptables-restore --help' for more information.
failed.
Error: unknown error applying new iptables rules: /etc/network/iptables
Reverting to old iptables rules... done.

カーネルとiptablesを再インストールしようとしました:

apt install --reinstall linux-generic linux-image-4.13.0-16-generic linux-image-extra-4.13.0-16-generic linux-headers-4.13.0-16-generic iptables

(再起動せずに)再インストールすると、サービスの再起動後にiptablesが機能します。

マシンを再起動すると、同じエラーが再び発生します。

再起動するたびに、次のフォルダがなくなることに気づきました。

/lib/modules/4.13.0-16-generic/kernel/net/ipv4/netfilter

フォルダipv4に残っているファイルは2つだけです:gre.ko udp_tunnel.ko

不足しているファイルをこの場所にコピーすることはできません。次回の再起動で削除されます。

これを修正する方法はありますか?

2
Dirk

Ubuntu16.04でも同じことがわかります。修正はありませんが、なぜこれが発生しているのかについての洞察はあります。ブックプロセス中、システムは最初にRAMベースのファイルシステムinitramfsで起動します。ブートプロセスの後半で、ハードディスクが引き継ぎますが、initramfsのmodulesディレクトリはハードディスクのmodulesディレクトリにマウントされます。 mountの出力には次の行が含まれていることに注意してください。

_copymods on /lib/modules type tmpfs (rw,relatime)
_

わかりました。/lib/modulesへの変更(例:実行することによって

_Sudo apt-get install --reinstall linux-image-$(uname -r)
_

システムを再起動すると失われます。では、これはどのように機能するのでしょうか? _apt install_コマンドが新しいモジュールを追加するときは、対応するエントリを_/usr/share/initramfs-tools/hooks_に配置する必要があります。次に、_apt install_が呼び出すインストーラースクリプトが_update-initramfs_を実行し、CPIOアーカイブ/boot/initrd.img-(uname -r)を生成します。これはinitramfsイメージであり、システムでiptablesが機能するために必要なモジュールが含まれているはずです。再起動されます。

バグは、関連するエントリが実際には_/usr/share/initramfs-tools/hooks_で作成されないため、関連するエントリがinitramfsで作成されないため、システムの再起動時に保持されないことです。

この時点で私は立ち往生しています。

3
scottwh2

@ scottwh2で述べたように、問題はおそらくcopymodsramfsボリュームが/lib/modulesにマウントされていることです。これを確認するには、mount | grep /lib/modulesを実行します。

これを削除するには、

apt remove cloud-initramfs-copymods

次に、再起動します。

再起動後、copymodsエントリがmountから削除されていることを再確認してください。

0
falsePockets

Ubuntu Server16.04でも同じ問題が発生しました。コマンド:

mount | grep /lib/modules

表示:

copymods on /lib/modules type tmpfs (rw,relatime)

そのため、最初にcloud-initramfs-copymodsを削除しようとしましたが、そのパッケージがシステムにインストールされていませんでした。それから私はそれをインストールしました:

apt-get install cloud-initramfs-copymods

そしてその直後に私はそれを削除しました:

apt-get remove cloud-initramfs-copymods

そして、サーバーを再起動した後、copymodsはなくなり、モジュールは再起動後に削除されません!おかげでscottwh2falsePockets問題は正常に解決しました。

0
CityAceE