私はubuntuを使用していますが、問題はLinux全般です。
Linuxカーネルをコンパイルしてモジュール/ドライバーをインストールし、新しくコンパイルされたカーネルをインストールしました。それは正常に動作します。
新しいカーネルをインストールせずにこのドライバーを別のマシンで動作させるには、.ko
ファイルを新しいマシンにコピーして/lib/modules/<version>/...
実行しますsudo depmod -a
。次に実行しsudo modprobe <drivername>
ます。モジュールは問題なくロードできます。.ko
しかし、デバイスはこのモジュールではうまく機能していません。
2 つのマシンはハードウェアが同一ではありませんが、カーネル バージョンと ubuntu リリース バージョンは同一です。通常、.ko
ファイルのコピーは、同じ Linux リリースと同じカーネルに対して機能するはずです。
ドライバーに関する詳細情報。隠しペンタブレットドライバーです。すべてのパッチ ファイル:
- 1 つの .c ファイル
drivers/hid/
- に一行追加
drivers/hid/Makefile
- に数行追加します
drivers/hid/usbhid/Kconfig
- に数行追加します
drivers/hid/hid-ids.h
drivers/hid/usbhid/hid-quirks.c
の hid_blacklist 構造体の { 0, 0 } の前に数行追加します
それで全部です。
drivers/hid/
すべてのファイルを含むディレクトリ全体.ko
を最初のマシンから2番目のマシンにコピーしようとさえしました。しかし運がない。ペンタブレットは2台目のマシンで認識でき、ペンでマウスの左クリックイベントを行うことはできますが、ペンはカーソルを移動できません。
うまくいけば、私は十分な詳細を提供しました。私の目標は、カーネルを再インストールせずに、モジュールを同一の Linux リリース (カーネル) にのみインストールすることです。それを達成する方法、またはそれが可能かどうかはわかりません。
どうもありがとう。
PS:
- 動作する最初のマシンの dmesg 出力: http://paste.ubuntu.com/6419301/
- 2 台目のマシンでの dmesg 出力: http://paste.ubuntu.com/6419302/
最初のマシンでは、タブレットを接続する前に、lsmod はモジュールを表示しません。プラグイン後、モジュールを自動的にロードできます。lsmod がモジュールを表示していることがわかります。
2nd mahcine では、デバイスを差し込んでモジュールを自動的にロードすることはできません。私はsudo modprobe <module>
手動で行う必要があります。
社内の多くのマシンにモジュールをインストールする必要があるため、カーネルを再インストールせずにモジュールをインストールする方が簡単です。1号機でビルドしたカーネル.debパッケージを2号機にインストールしてみましたが、2号機では問題なく動きます。しかし、多くのマシンにカーネルを再インストールするのは気分が悪いです。ありがとう。