【问题标题】:Unbinding mmcblk1 driver in Linux (disable SD Card Reader)在 Linux 中解除绑定 mmcblk1 驱动程序(禁用 SD 卡读卡器)
【发布时间】:2018-09-24 07:36:20
【问题描述】:

我是 Linux 设备树的新手,我正在寻找一种方法来禁用我的 Linux 嵌入式系统上的 SD 卡接口。

我最近想出了如何通过使用echo -n 1-0:1.0 > /sys/bus/usb/drivers/hub/unbind解除绑定它的设备驱动程序来禁用我的USB接口

现在我正在尝试对 SD 卡插槽执行相同的操作,但在找到要解除绑定的正确路径/驱动程序时遇到问题。我相信该设备位于/sys/block/mmcblk1,但我不确定如何找到正确的设备 ID/取消绑定文件。有关禁用 SD 接口的任何提示?

编辑 1:经过进一步检查,当插槽中没有插入 SD 卡时,mmcblk1 甚至不显示。我应该如何禁用接口本身,而不仅仅是禁用单个卡?

编辑 2:禁用热插拔似乎可行,但我现在正在努力理解 mdev 规则。

编辑 3(解决方案):在浏览设备树后,我能够找到运行我的 mmc 阅读器的特定设备和驱动程序组合。 echo -n mmc1:aaaa > /sys/bus/mmc/drivers/mmcblk/unbind 能够解除驱动程序与设备的绑定 (mmc1:aaaa)。我还必须调整我的 mdev 规则,因为每次我插入设备时都会重新加载驱动程序。最终的解决方案是将以下内容放入 /etc/mdev.conf:mmcblk([1-9]+) root:disk 777 @echo -n mmc1:aaaa > /sys/bus/mmc/drivers/mmcblk/unbind,每次绑定 mmc 设备时都会运行(不包括 mmcblk0,因为我们在其他地方使用它)并立即取消绑定驱动程序。

【问题讨论】:

    标签: linux-kernel driver linux-device-driver embedded-linux device-tree


    【解决方案1】:

    您可以尝试将 /lib/modules/$(uname -r)/kernel/drivers 列入黑名单 /mmc/core/mmc_block.ko.xz.

    创建文件 /etc/modprobe.d/blacklist_sdcard.conf 并添加行:“blacklist mmc_block”(不带引号),然后重新启动。

    请注意,如果有其他设备在使用它,这可能会禁用系统上的其他设备,因此您可能会发现自己造成了问题。

    编辑

    抱歉,以上内容对您不起作用。我还担心其他事情正在使用设备驱动程序。

    应该这样做:

    创建 /etc/udev/rules.d/99-disable-automount.rules

    并添加行:

    ACTION=="add|change",KERNEL=="sdb",ENV{UDISKS_IGNORE}="1"

    使用读卡器安装的任何设备,如“KERNEL==”部分。

    然后做udevadm control --reload

    你应该准备好了。

    【讨论】:

    • 这是一个很好的尝试,但我无法将整个模块列入黑名单。它也用于板载闪存。
    • 这似乎是一个很好的解决方案!我最终选择了其他东西,因为我使用的是 mdev 而不是 udev,但最终我认为这会起作用。请参阅我的编辑以了解我的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    • 1970-01-01
    相关资源
    最近更新 更多