サーバ落ちてた
epgstationやmirakurunのPM2のステータスだけ見てて「今日も大丈夫だな」と思っていたら、つい先日再起動していた頃から録画が失敗していました。
どうも再起動の際にドライバを壊したらしくデバイスが見えなくなっていました。
ドライバの再インストール
DKMSにて管理されているドライバは「buildしてinstall」では進みません。
パッケージ管理されておりbuildしようがinstallしようが「もう作成されてます」でコマンドが帰ってきてしまいます。ではどのようにすればよいのでしょうか。
今回は管理されているドライバが壊れた時とはmodprobeで登録できない状態の場合です。
ERROR: could not insert 'pt1_drv': Exec format error
という感じにファイルが壊れた感じですね。
まずはクリーンな環境にする
まずはdkmsのコマンド一覧の中から使えそうな奴をピックアップして実行してみます。
まずはuninstall。
で登録した際に作業したフォルダで設定開始です。
$ cd pt1 $ REVISION=`hg log -r tip | sed -n -e '1s/.*://p'`
ここではリビジョンを取得するためにコマンドを叩いています。
DKMSへの登録までは済んでいるのでまずはインストールできるか確認してみます。
$ sudo dkms add -m pt1_drv -v $REVISION $ sudo dkms build -m pt1_drv -v $REVISION $ sudo dkms install -m pt1_drv -v $REVISION
どれを取っても「もう登録、インストールされているよー」と返事が返ってきます。なのでまずはinstallモジュールをアンインストールしてみます。
$ sudo dkms uninstall -m pt1_drv -v $REVISION
このコマンドはmodprobeで登録されているドライバをdepmodで取り出すだけでした。この後インストールとしてもまた壊れたファイルを登録してしまいます。これではいけません。
そこで完全に削除します。
$ sudo dkms remove -m pt1_drv/$REVISION --all
removeの構文が分からず試行錯誤したらこのコマンドに行きつきました。
このコマンドでbuildしたドライバの削除まで行われます。addまでは残っているので
$ sudo dkms build -m pt1_drv -v $REVISION $ sudo dkms install -m pt1_drv -v $REVISION $ modprobe pt1_drv
これで再導入できました。
コメント