Linuxカーネルモジュールをロードしたソースがわかりますか?

Linuxカーネルモジュールをロードしたソースがわかりますか?

私の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.dUSBおよびフレームバッファモジュールをロードするスクリプトを表示できます。

[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/modprobeinsmodc_candmesg

[    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プラットフォーム機器

これは次のように識別されます。

  1. alias: platform:modinfoコマンドの情報
  2. c_can_plat_driverc_can_platformのソースコードは次のように定義されていますplatform_driver

プラットフォームドライバはコードに登録され、次にプラットフォームドライバのリストがLinuxカーネル起動プロセスの一部として挿入/実行されます。

より具体的な証拠/文書を探す必要がありますが、今はこれが理解されて答えとして残しておきます。

関連情報