在 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
你应该一切就绪。
我是 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
你应该一切就绪。