10

私は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:

最初のマシンでは、タブレットを接続する前に、lsmod はモジュールを表示しません。プラグイン後、モジュールを自動的にロードできます。lsmod がモジュールを表示していることがわかります。

2nd mahcine では、デバイスを差し込んでモジュールを自動的にロードすることはできません。私はsudo modprobe <module>手動で行う必要があります。

社内の多くのマシンにモジュールをインストールする必要があるため、カーネルを再インストールせずにモジュールをインストールする方が簡単です。1号機でビルドしたカーネル.debパッケージを2号機にインストールしてみましたが、2号機では問題なく動きます。しかし、多くのマシンにカーネルを再インストールするのは気分が悪いです。ありがとう。

4

2 に答える 2

1

あなたが構築したカーネルは 1:1 ではないようです。また、通常、新しいカーネルをコンパイルする必要はありません。

ツリー外のドライバー展開に対処する最も簡単な方法は、DKMSを使用することです。

提供する必要があるのはdkms.conf、パッケージ名、バージョン、およびドライバー名と宛先 (.xml 内/lib/modules/{kernel}) を指定するファイルだけです。

次の例では、中かっこ内のものを実際のものに置き換える必要があります。たとえば、バージョンが 1.0.0 の場合は{version}1.0.0明らかに .

dkms.conf

PACKAGE_NAME="{mydriver}"
PACKAGE_VERSION="{version}"
BUILT_MODULE_NAME[0]="{mydriver}"
BUILT_MODULE_LOCATION[0]="/{mycompany?}"
AUTOINSTALL="yes"

次に、ソースを にインストールして実行するだけ/usr/src/{mydriver}-{version}ですdkms

 dkms add -m {mydriver} -v {version}
 dkms build -m {mydriver} -v {version}
 dkms install -m {mydriver} -v {version}

この分野で他の人が行ったことを調べてください。テストとリリースのプロセスに適用できる多くの自動化があります。Bluecherry のsolo6x10ツリー外バージョンは、いくつかの便利なmakeターゲットを提供します (開示: 私はそれを書いた人です)。

また、パッケージをビルドして配布したい場合はsolo6x10/debian、テンプレートとして使用できます。また、Debian wiki でリポジトリについて読むこともできます。

于 2016-09-23T02:26:25.483 に答える