web-dev-qa-db-ja.com

グラフィックドライバーモジュールを再読み込みする最速の方法は?

この場合は、gma500_gfxと呼ばれるDRMカーネルモジュールを変更するために、グラフィックスドライバーの開発に取り組んでいます。

このドライバーに変更を加えるたびに、以前のカーネルモジュールを(cpコマンドで)コンパイルおよび置換するスクリプトを開始し、Linuxディストリビューション(Lubuntu)を再起動します。

Linuxを再起動しないと、このグラフィックドライバーモジュールをリロードできません(まだ)。コマンドmodprobeおよびrmmodは、常に「使用中のモジュール」エラーを表示します。

modprobe gma500_gfx -r
modprobe: FATAL: Module gma500_gfx is in use.

依存関係を見ると、次のリストが表示されます。

gma500_gfx            185579  2 
drm_kms_helper         48716  1 gma500_gfx
drm                   298219  3 drm_kms_helper,gma500_gfx
video                  19370  2 Acer_wmi,gma500_gfx
i2c_algo_bit           13413  1 gma500_gfx

また、これらの依存関係をアンロードすることもできず、同じエラーが発生します。 modprobeの前に試したが失敗したその他のこと:

  • 「init 1」でシングルユーザー環境に移動します
  • 「/etc/init.d/lightdm stop」でlightdmをシャットダウンします(refcountを1から1に減らします)。

Linuxディストリビューションを再起動するよりも、グラフィックスドライバーモジュールを再読み込みするためのより速い方法を誰か知っていますか

6
Arthur Borsboom

多くの調査の結果、モジュールがアンロードされないようにする2つのリファレンスと、モジュールをリロードする方法を見つけました。ロックを保持する2つのことは次のとおりです。

  1. LightDM、軽量Xディスプレイマネージャー
  2. 汎用フレームバッファフレームワーク

ロックをそれぞれ削除するには:

  1. Sudo /etc/init.d/lightdm stop
  2. echo 0 > /sys/class/vtconsole/vtcon1/bind

ただし、2番目のオプションはgma500_gfxドライバーからフレームバッファーフレームワークのバインドを解除し、画面出力を停止します。したがって、nrを組み合わせた方が適切です。 2バインド解除、モジュールのアンロード、画面のリセット、モジュールの再ロードを行うスクリプトを使用します。私の知る限り、これをコンソールから実行する必要があります。

#!/bin/bash
echo 0 > /sys/class/vtconsole/vtcon1/bind
modprobe -r gma500_gfx
modprobe gma500_gfx
/etc/init.d/lightdm start

できれば、1つの再起動スクリプトが必要です。このスクリプトは、LightDMから直接実行でき、ドライバーを再ロードしてセッションを復元します。私はまだこれを行うことができませんでしたが、それは上記の質問とは異なるトピックです。それを行うための提案は、私を幸せにします。 :)

2
Arthur Borsboom