[Linux] ドライバの再起動

Linux ドライバを無効にしたり再起動して有効にしたい場合、モジュールとしてビルドして filesystem にインストールし、modprobe(insmod)/rmmod で 有効化・無効化します。

ここでは、kernel に静的ビルドしたドライバを有効化・無効化する方法を示します。

例えば 8250 シリアルドライバがインストールされている場合、sysfs には以下のファイルがあります。"serial8250" がリンクファイルとしてあるので、ドライバは kernel に接続された状態です。

# ls /sys/bus/platform/drivers/serial8250
bind  serial8250  uevent  unbind

以下のように unbind に指示すると、ドライバは kernel から切り離され終了します。このドライバが供給している /dev/ttyS0 などは見えなくなります。

# echo serial8250 > /sys/bus/platform/drivers/serial8250/unbind

以下のように bind に指示すると、ドライバは kernel に再び接続され probe から処理を開始します。

# echo serial8250 > /sys/bus/platform/drivers/serial8250/bind

このように、静的ビルドでリンクしたドライバも、一度切り離して再接続することで、probe からの処理をデバッグすることができるようになります。


コメント

タイトルとURLをコピーしました