내 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 커널 부팅 프로세스의 일부로 삽입/실행됩니다.
좀 더 구체적인 증거/문서를 찾아야 하는데, 지금은 이게 이해가 되서 답변으로 남겨두겠습니다.