Advanced Ubuntu Administration and Management Best Practices
Ubuntu Server の運用項目を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
Ubuntu 26.04 でカーネルモジュールを扱う場合、今すぐ読み込む操作と、再起動後も自動で読み込む設定を分けて考えます。modprobe は即時読み込み、/etc/modules-load.d/*.conf は起動時の永続読み込みに使います。
この記事では、br_netfilter と overlay を例に、現在の読み込み状態、modprobe、/etc/modules-load.d/my.conf、systemd-modules-load.service、再起動後確認、戻し方を扱います。
modules-load と modprobe の違い
modprobeは、現在稼働中のカーネルへモジュールを読み込むコマンドです。/etc/modules-load.d/*.confは、起動時に読み込むモジュール名を並べる設定です。modprobe.dは、モジュールのオプションや blacklist などを扱う別の仕組みです。- 永続化したい場合は、即時読み込みと起動時読み込みの両方を確認します。
現在の状態を確認する
まず対象モジュールが読み込まれているか確認します。Kubernetes や container runtime の準備では br_netfilter や overlay を確認する場面があります。
lsmod | grep -E 'br_netfilter|overlay' || true
modinfo br_netfilter
modinfo overlayモジュールを即時読み込みする
modprobe で現在のシステムにモジュールを読み込みます。エラーが出る場合は、モジュール名、カーネル、パッケージ状態を確認します。
sudo modprobe br_netfilter
sudo modprobe overlay
lsmod | grep -E 'br_netfilter|overlay'永続読み込み設定を作成する
再起動後も読み込むモジュールは /etc/modules-load.d/my.conf に並べます。1 行に 1 モジュール名だけを書きます。
sudo tee /etc/modules-load.d/my.conf >/dev/null <<'EOF'
br_netfilter
overlay
EOF
sudo chmod 0644 /etc/modules-load.d/my.confsystemd-modules-load を再起動する
設定ファイルを作成したら、systemd-modules-load.service を再起動して読み込みを確認します。
sudo systemctl restart systemd-modules-load.service
systemctl status systemd-modules-load.service --no-pager
lsmod | grep -E 'br_netfilter|overlay'起動時に読み込まれることを確認する
永続設定は再起動後の確認まで行います。再起動後に lsmod とサービス状態を確認します。
sudo rebootlsmod | grep -E 'br_netfilter|overlay'
systemctl status systemd-modules-load.service --no-pager
journalctl -b -u systemd-modules-load.service --no-pagerKubernetes ノードで確認する項目
Kubernetes ノードでは、カーネルモジュールと sysctl の両方を確認します。br_netfilter が読み込まれていないと、bridge 経由のパケット処理に関わる sysctl が存在しないことがあります。
lsmod | grep br_netfilter
sysctl net.bridge.bridge-nf-call-iptables || true
sysctl net.bridge.bridge-nf-call-ip6tables || trueモジュール名の確認
モジュール名はファイル名やパッケージ名と完全に同じとは限りません。modinfo と find で存在を確認できます。
modinfo br_netfilter
modinfo overlay
find /lib/modules/$(uname -r) -name '*br_netfilter*' -o -name '*overlay*'読み込みを解除する
利用中でないモジュールは modprobe -r で解除できます。ただし、他の機能が利用中の場合は解除できません。永続設定からも削除しないと、再起動後に再び読み込まれます。
sudo modprobe -r overlay
sudo modprobe -r br_netfilter
lsmod | grep -E 'br_netfilter|overlay' || true永続設定を戻す
起動時読み込みをやめる場合は、設定ファイルをバックアップしてから削除または内容を変更し、サービスを再起動します。
sudo cp -a /etc/modules-load.d/my.conf /etc/modules-load.d/my.conf.bak.$(date +%Y%m%d%H%M%S)
sudo rm /etc/modules-load.d/my.conf
sudo systemctl restart systemd-modules-load.servicemodprobe.d を使う場面
/etc/modprobe.d/ は、モジュールのオプション指定や blacklist を扱う場合に使います。単に起動時に読み込みたいだけであれば、/etc/modules-load.d/ にモジュール名を置く方が目的に合います。
ls -l /etc/modprobe.d
modprobe --showconfig | grep -E 'br_netfilter|overlay' || true確認項目
- 対象モジュール名が
modinfoで確認できること。 sudo modprobe モジュール名がエラーなく通ること。/etc/modules-load.d/my.confに 1 行 1 モジュール名で記載していること。systemd-modules-load.serviceが失敗していないこと。- 再起動後も
lsmodで読み込み状態を確認していること。
まとめ
Ubuntu 26.04 のカーネルモジュール管理では、即時読み込みの modprobe と、起動時読み込みの /etc/modules-load.d/*.conf を分けて扱います。Kubernetes やネットワーク機能の前提になるモジュールは、読み込む理由、sysctl との関係、再起動後の状態まで確認しておくことが重要です。

