探索/sys/module

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

✅ 使用方法:

  1. 将脚本保存为 module_scan.sh

  2. 赋予执行权限:

    bash

    chmod +x module_scan.sh
    
  3. 执行:

    bash

    ./module_scan.sh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值