再起動するたびにlibモジュールフォルダを削除する

再起動するたびにlibモジュールフォルダを削除する

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 フォルダには gre.ko udp_tunnel.ko ファイルが 2 つだけ残っていました。

見つからないファイルをこの場所にコピーしても効果はなく、次回の再起動時に削除されます。

この問題を解決する方法を知っていますか?

答え1

Ubuntu 16.04でも同じ結果が得られました。解決策はありませんが、なぜこのようなことが起こるのか、ある程度知ることができます。この本の進行中、システムは最初にRAMベースのファイルシステムであるinitramfsから起動します。後で起動プロセス中にハードディスクの代わりになりますが、initramfsのモジュールディレクトリはハードディスクのモジュールディレクトリにマウントされます。の出力にはmount次の行が含まれます。

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

[OK]、たとえば、次のように実行して/lib/modulesを変更します。

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

システムを再起動すると、失われます。それでは、これはどのように機能しますか?コマンドが新しいモジュールを追加した場合は、そのモジュールが存在するapt install必要があります/usr/share/initramfs-tools/hooks。その後、apt installインストーラ実行スクリプトを呼び出すと、initramfsイメージであるupdate-initramfsCPIOアーカイブが作成されます/boot/initrd.img-(uname -r)。このアーカイブには、システムの再起動時にiptablesが機能するために必要なモジュールが含まれているはずです。

エラーは、関連エントリが/usr/share/initramfs-tools/hooksinitramfsで実際には生成されないため、システムの再起動時に持続しないことです。

この時点で私は詰まった。

答え2

@scottwh2が述べたように、問題はcopymodsramfsボリュームです/lib/modulesmount | grep /lib/modules

それを削除するには、次を実行します。

apt remove cloud-initramfs-copymods

その後、再起動してください。

再起動後、copymodsそのエントリがmount

答え3

Ubuntu Server 16.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が消え、再起動後もモジュールは削除されません!ありがとうスコットWH2そして偽のポケット私の問題をうまく解決しました。

関連情報