在 Linux 中取消绑定 mmcblk1 驱动程序(禁用 SD 卡 Reader)

Unbinding mmcblk1 driver in Linux (disable SD Card Reader)

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

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

现在我正尝试对 SD 卡插槽执行相同的操作,但我 运行 遇到了问题,无法找到正确的 path/driver 来解除绑定。我相信该设备位于 /sys/block/mmcblk1,但我不确定如何找到正确的设备 id/unbind 文件。关于禁用 SD 接口的任何提示?

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

编辑 2:看起来禁用热插拔可能有效,但我现在正在努力理解 mdev 规则。

编辑 3(解决方案):通过设备树搜索后,我能够找到 运行 我的 mmc reader 的特定设备和驱动程序组合。 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,因为我们在其他地方使用它)并立即取消绑定驱动程序。

你可以试试黑名单/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"

使用卡 reader 为 "KERNEL==" 部分安装的任何设备。

然后执行 udevadm control --reload

你应该一切就绪。