ドライバーの静的ロードに問題があり、混乱を招いています。ドライバーを静的にロードするには、プロセス 1) とプロセス 2) の 2 つの方法に従いました。以前私は従った:
プロセス 1: 手順は次のとおりです。
- demochardrv.ko という名前の char ドライバーを作成しました。
- /lib/modules/2.6.34.12/kernel/drivers/char/ にドライバーをコピーしました。
- /etc/modules にエントリを作成しました。
- リブート。
しかし、これらの 4 つの手順は以前は機能せず、lsmod に自分のドライバーが表示されませんでした。
したがって、上記の手順とは別に、別の方法に従いました: プロセス 2: 手順は次のとおりです。
ファイル「/lib/modules/2.6.34.12/build/drivers/char/Kconfig」にドライバーの詳細を追加しました: config DEMOCHARDRV tristate "TEST DEMO DRIVER' default n help TEST STATIC INSTALL DRIVER
「/lib/modules/2.6.34.12/build/drivers/char/Makefile」にドライバーの詳細を追加しました: obj-$(CONFIG_DEMOCHARDRV) += demochardrv.o
/lib/modules/2.6.34.12/build/drivers/char/ にドライバー ファイルをコピーしました。
- .config ファイルを編集し、CONFIG_DEMOCHARDRV=y を追加しました。
- make menuconfig を起動し、(* / M のいずれかで) ドライバーを選択しました。
- make を行い、モジュールを作成し、modules_install を作成し、install を作成しました。
- リブート
menuconfig でドライバーを選択していなくても、起動時にドライバーが読み込まれるようになりました。
プロセス 2 の問題を解決するために、/etc/modules に作成されたエントリを削除しました。しかし今、ドライバーはまったくロードされていませんでした。そのため、プロセス 2 の手順を削除し、再びプロセス 1 の手順に従いました。現在、起動時にドライバーがロードされています。現在、プロセス 1 が機能しています。ただし、プロセス 2 は単独では機能せず、プロセス 1 の追加の手順が必要です。
そのため、どのプロセスが正しいかについて混乱しています。誰でもいくつかの入力を提供できますか?