Linuxカーネルの動作をリアルタイムに把握し、必要に応じてカーネルモジュールの操作やハードウェアの問題に対応する技術は、上級管理者への第一歩です。
目次
🧠 カーネルの情報確認
現在実行中のカーネルバージョンを確認
uname -r
カーネルモジュールの依存関係の管理
depmod # モジュール依存ファイル modules.dep を生成
cat /lib/modules/$(uname -r)/modules.dep
🔧 カーネルモジュールの操作
モジュールの一覧を表示
lsmod
モジュールの読み込み
modprobe <モジュール名> # 推奨(依存モジュールも自動で読み込み)
insmod ./foo.ko # 直接バイナリファイルから読み込む
モジュールのアンロード
rmmod <モジュール名> # モジュールが使われていなければ削除可能
モジュールの詳細情報を取得
modinfo <モジュール名>
⚙ モジュール設定とパラメータの制御
モジュールのパラメータ設定
cat /sys/module/<モジュール名>/parameters/
永続的な設定ファイル(起動時設定)
/etc/modprobe.d/<ファイル>.conf
# 例:snd-hda-intelモジュールに index=1 を渡す
options snd-hda-intel index=1
📂 カーネル設定と制御ファイル
/proc/sys/kernel/ の内容を確認・変更
cat /proc/sys/kernel/hostname
sudo sysctl -w kernel.hostname=myhost
永続化設定:
/etc/sysctl.conf
/etc/sysctl.d/*.conf
🧬 sysfs(/sys)によるシステム状態の確認
ls /sys/module/
ls /sys/class/net/
cat /sys/class/net/eth0/address
sysfs は動的に変化するカーネル内部情報へのインターフェースです。
🔍 ハードウェアとカーネルメッセージの調査
起動やデバイス情報
dmesg # カーネルの初期化ログやデバイスログ
journalctl -k # systemd管理下のカーネルログ
lspci # PCIデバイス一覧
lsusb # USBデバイス一覧
lsdev # 利用中のデバイス(旧式)
⚡ udev によるデバイス管理とルール設定
udev は、デバイスの検出と /dev/ 以下のデバイスファイルの作成を動的に行います。
udev のリアルタイム監視
udevadm monitor # udev イベントの監視
udev ルールの場所
/etc/udev/rules.d/ # 管理者設定
/lib/udev/rules.d/ # パッケージ提供
ルール例
# USBメモリを特定の名前でマウント
SUBSYSTEM=="block", ATTRS{idVendor}=="abcd", NAME="usb_custom"
反映方法:
sudo udevadm control --reload-rules
💥 カーネルダンプの取得(クラッシュ対応)
kdump と kexec を使ったクラッシュ後のメモリダンプ
kdump:カーネルクラッシュ時に別のカーネルで起動し、ダンプを取得
- CentOS/RedHat では
kdumpパッケージを有効化 /etc/kdump.confで保存先や対象を設定- systemctlで起動:
sudo systemctl enable kdump
sudo systemctl start kdump
kexec:リブートせずに別のカーネルを即時起動
kexec -l /boot/vmlinuz-xxx --initrd=/boot/initramfs-xxx.img --command-line="root=/dev/sdX1"
kexec -e # 実行して即再起動(シャットダウンプロセス省略)
⚠️ 本番環境での利用は慎重に。診断用途に向いています。
🔚 まとめ
| 項目 | コマンド・ファイル |
|---|---|
| カーネルバージョン確認 | uname -r |
| モジュール管理 | lsmod, modprobe, rmmod, modinfo, depmod |
| 設定ファイル | /etc/modprobe.d/, /etc/sysctl.conf, /sys/module/ |
| udev管理 | udevadm, /etc/udev/rules.d/ |
| デバイス情報 | dmesg, lspci, lsusb, journalctl -k |
| ダンプ取得 | kdump, kexec |
💡 補足アドバイス
- トラブルが発生したらまず
dmesgとjournalctl -kをチェック。 - 不要なモジュールの読み込みはセキュリティリスクにもなり得るため、
blacklist設定も活用しましょう。 - udevルールのデバッグには
udevadm test /sys/class/...が便利です。
コメント