pi@raspberrypi:/sys/module$ ls
8021q i2c_dev snd_rawmidi
8250 ip_tables snd_seq_device
apparmor ipv6 snd_soc_bcm2835_i2s
auth_rpcgss kdb snd_soc_core
bcm2708_fb kernel snd_soc_simple_card
bcm2835_codec keyboard snd_soc_simple_card_utils
bcm2835_isp kgdboc snd_soc_wm8960
bcm2835_mmal_vchiq lan78xx snd_timer
bcm2835_mmc libsha256 snd_usb_audio
bcm2835_v4l2 llc snd_usbmidi_lib
blk_cgroup lockd soundcore
block loop spi_bcm2835
bluetooth mc spidev
bnep mmcblk spurious
brcmfmac module srcutree
brcmutil mousedev stp
brd netpoll sunrpc
btbcm nfs sysrq
cachefiles nfs_layout_nfsv41_files tcp_cubic
cfg80211 nfsv4 uio
cmac printk uio_pdrv_genirq
configfs random usbcore
configs raspberrypi_hwmon usbhid
cpufreq rcupdate usb_storage
cryptomgr rcutree v4l2_mem2mem
debug_core regmap_i2c vc_mem
dns_resolver rfcomm vc_sm_cma
dwc_otg rfkill videobuf2_common
ecc rng_core videobuf2_dma_contig
ecdh_generic scsi_mod videobuf2_memops
fb scsi_transport_iscsi videobuf2_v4l2
firmware_class sdhci videobuf2_vmalloc
fixed sha256_generic videodev
fscache smsc95xx vt
fscrypto snd watchdog
fuse snd_bcm2835 workqueue
garp snd_compress x_tables
hci_uart snd_hwdep xz_dec
hid snd_pcm zswap
i2c_bcm2835 snd_pcm_dmaengine
pi@raspberrypi:/sys/module$ ^C
看一看I2C
pi@raspberrypi:/sys/module$ cd i2c_bcm2835/
pi@raspberrypi:/sys/module/i2c_bcm2835$ ls
coresize holders initstate parameters sections taint
drivers initsize notes refcnt srcversion uevent
pi@raspberrypi:/sys/module/i2c_bcm2835$ ll
total 0
drwxr-xr-x 7 root root 0 Aug 8 09:30 .
drwxr-xr-x 121 root root 0 Aug 8 09:09 ..
-r--r--r-- 1 root root 4096 Aug 8 09:30 coresize
drwxr-xr-x 2 root root 0 Aug 8 09:30 drivers
drwxr-xr-x 2 root root 0 Aug 8 09:30 holders
-r--r--r-- 1 root root 4096 Aug 8 09:30 initsize
-r--r--r-- 1 root root 4096 Aug 8 09:30 initstate
drwxr-xr-x 2 root root 0 Aug 8 09:30 notes
drwxr-xr-x 2 root root 0 Aug 8 09:30 parameters
-r--r--r-- 1 root root 4096 Aug 8 09:30 refcnt
drwxr-xr-x 2 root root 0 Aug 8 09:30 sections
-r--r--r-- 1 root root 4096 Aug 8 09:30 srcversion
-r--r--r-- 1 root root 4096 Aug 8 09:30 taint
--w------- 1 root root 4096 Aug 8 09:30 uevent
pi@raspberrypi:/sys/module/i2c_bcm2835$ ^C
pi@raspberrypi:/sys/module/i2c_bcm2835$ modeinfo i2c_bcm2835
-bash: modeinfo: command not found
pi@raspberrypi:/sys/module/i2c_bcm2835$ modinfo i2c_bcm2835
filename: /lib/modules/5.4.83-v7+/kernel/drivers/i2c/busses/i2c-bcm2835.ko
alias: platform:i2c-bcm2835
license: GPL v2
description: BCM2835 I2C bus adapter
author: Stephen Warren <swarren@wwwdotorg.org>
srcversion: 4DA85BEB07BF37BEDA6A0D9
alias: of:N*T*Cbrcm,bcm2835-i2cC*
alias: of:N*T*Cbrcm,bcm2835-i2c
alias: of:N*T*Cbrcm,bcm2711-i2cC*
alias: of:N*T*Cbrcm,bcm2711-i2c
depends:
intree: Y
name: i2c_bcm2835
vermagic: 5.4.83-v7+ SMP mod_unload modversions ARMv7 p2v8
parm: debug:1=err, 2=isr, 3=xfer (uint)
Bash 脚本会遍历 /sys/module 下的所有模块,列出每个模块的:
-
名称
-
是否有参数(如果有就列出)
-
引用计数(refcnt)
-
初始化状态(initstate)
-
是否被其他模块依赖(holders)
📜 脚本内容:module_scan.sh
bash
#!/bin/bash
echo "🔍 正在扫描内核模块信息..."
echo "--------------------------------------------"
MODULE_PATH="/sys/module"
for module in $(ls $MODULE_PATH); do
echo "🧩 模块名称: $module"
# 引用计数
if [ -f "$MODULE_PATH/$module/refcnt" ]; then
refcnt=$(cat "$MODULE_PATH/$module/refcnt")
echo " 🔗 引用计数: $refcnt"
fi
# 初始化状态
if [ -f "$MODULE_PATH/$module/initstate" ]; then
initstate=$(cat "$MODULE_PATH/$module/initstate")
echo " 🚦 初始化状态: $initstate"
fi
# 参数
if [ -d "$MODULE_PATH/$module/parameters" ]; then
echo " ⚙️ 参数:"
for param in $(ls "$MODULE_PATH/$module/parameters"); do
value=$(cat "$MODULE_PATH/$module/parameters/$param")
echo " - $param = $value"
done
else
echo " ⚙️ 参数: 无"
fi
# 被哪些模块依赖
if [ -d "$MODULE_PATH/$module/holders" ]; then
holders=$(ls "$MODULE_PATH/$module/holders")
if [ -z "$holders" ]; then
echo " 🧷 被依赖模块: 无"
else
echo " 🧷 被依赖模块: $holders"
fi
fi
echo "--------------------------------------------"
done
✅ 使用方法:
-
将脚本保存为
module_scan.sh -
赋予执行权限:
bash
chmod +x module_scan.sh -
执行:
bash
./module_scan.sh
1297

被折叠的 条评论
为什么被折叠?



