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 커널 부팅 프로세스의 일부로 삽입/실행됩니다.

좀 더 구체적인 증거/문서를 찾아야 하는데, 지금은 이게 이해가 되서 답변으로 남겨두겠습니다.

관련 정보