私のLinuxディストリビューションでは、起動中に多くのモジュールがロードされており、そのモジュールがロードされた場所を見つけようとしています。
[root /proc]# lsmod
Module Size Used by
bufferclass_ti 5409 0
omaplfb 11525 0
musb_dsps 6444 0
musb_hdrc 52530 1 musb_dsps
pvrsrvkm 174837 2 bufferclass_ti,omaplfb
c_can_platform 4172 0
c_can 8180 1 c_can_platform
can_dev 6951 1 c_can
musb_am335x 1199 0
検索では、/etc/init.d
USBおよびフレームバッファモジュールをロードするスクリプトを表示できます。
[root /etc/init.d]# grep -rsI "modprobe" *
loadusb.sh:modprobe musb_hdrc
loadusb.sh:modprobe musb_am335x
loadusb.sh:modprobe musb_dsps
pvr-init: modprobe omaplfb
pvr-init: modprobe bufferclass_ti
ところで、CANモジュールがどこからロードされているかがわからないようです。このプラットフォームには/etc/modules
またはありません。 ///etc/modules.conf
検索しましたが運がありません。 CANドライバが起動することを確認した後:/etc/
modprobe
insmod
c_can
dmesg
[ 3.745933] CAN device driver interface
[ 3.891592] c_can_platform 481cc000.d_can: c_can_platform device registered (
regs=fa1cc000, irq=68)
しかし、どのスクリプトがロードされるかはわかりません。 CANモジュールをシステムに配置する理由を特定するのに役立つ可能性がある追加情報/ログはありますか?
一部の情報はmodinfo
次のとおりです/sys/devices
。
[root /etc/udev/rules.d]# modinfo c_can
filename: /lib/modules/3.12.103.12-am335xpsp-TMKv1.03.02R/kernel/drivers/net/can/c_can/c_can.ko
description: CAN bus driver for Bosch C_CAN controller
license: GPL v2
author: Bhupesh Sharma <[email protected]>
srcversion: 692B302E87FD3333EF840FE
depends: can-dev
intree: Y
vermagic: 3.12.103.12-am335xpsp-TMKv1.03.02R mod_unload modversions ARMv6 p2v8
[root /etc/udev/rules.d]# modinfo can_dev
filename: /lib/modules/3.12.103.12-am335xpsp-TMKv1.03.02R/kernel/drivers/net/can/can-dev.ko
alias: rtnl-link-can
author: Wolfgang Grandegger <[email protected]>
license: GPL v2
description: CAN device driver interface
srcversion: 65FA84AFE987C1155CF95A1
depends:
intree: Y
vermagic: 3.12.103.12-am335xpsp-TMKv1.03.02R mod_unload modversions ARMv6 p2v8
[root /]# modinfo c_can_platform
filename: /lib/modules/3.12.103.12-am335xpsp-TMKv1.03.02R/kernel/drivers/net/can/c_can/c_can_platform.ko
description: Platform CAN bus driver for Bosch C_CAN controller
license: GPL v2
author: Bhupesh Sharma <[email protected]>
srcversion: DA1DCA3FBA7E75E459BDCEC
alias: platform:d_can
alias: platform:c_can
alias: platform:c_can_platform
alias: of:N*T*Cbosch,d_can*
alias: of:N*T*Cbosch,c_can*
depends: c_can
intree: Y
vermagic: 3.12.103.12-am335xpsp-TMKv1.03.02R mod_unload modversions ARMv6 p2v8
[root /sys/devices]# ls
44e10800.pinmux fixedregulator.3 platform software
backlight.4 ocp.2 soc.0 system
breakpoint panel.5 soc0 virtual
答え1
私の現在の理解によると。これらのCANドライバを挿入するために、実際には誰も(ユーザースペーススクリプト)modprobe
\を呼び出しません。insmod
プラットフォーム機器。
これは次のように識別されます。
alias: platform:
modinfoコマンドの情報c_can_plat_driver
c_can_platformのソースコードは次のように定義されていますplatform_driver
。
プラットフォームドライバはコードに登録され、次にプラットフォームドライバのリストがLinuxカーネル起動プロセスの一部として挿入/実行されます。
より具体的な証拠/文書を探す必要がありますが、今はこれが理解されて答えとして残しておきます。