本文记录使用udev自动挂载SD卡和U盘的方法。方法适用于各种linux带udev的系统。
usb挂载,sd卡挂载,udev使用,debian udev自动挂载,ubuntu自动挂载,嵌入式自动挂载,arm自动挂载,开发板自动挂载
参考链接:
http://blog.chinaunix.net/uid-26119896-id-5211736.html
一、添加udev规则
确认你系统有udev,然后,创建自动挂载的udev规则文件,具体规则参照上面的链接,位置: /etc/udev/rules.d/
cd /etc/udev/rules.d/
sudo touch 11-add-usb.rules
sudo touch 11-add-remove.rules
上面的规则,一个是自动挂着的规则,里面包含自动挂载usb和自动挂载sd卡的规则。命名方式要注意:
我们只需要创建了rules文件就好了,只要命名规则对了,udev会自动生效。
udev 是按照规则文件的字母顺序来解析各规则文件的,并根据匹配上的规则创建对应的设备文件或链接。所以,解析的顺序很重要,为了使自定义的规则生效,可以把规则写入较前的规则文件中,例如20-names.rules
二、SD卡自动挂载
在上述的规则文件11-add-usb.rules中,加入如下内容,就是如何挂着的方法,有严格的规则,详细 百度/必应/谷歌/ 一下“udev规则”,这里不叙述。
ACTION=="add",GOTO="farsight", KERNEL=="mmcblk[0-9]p[0-9]", RUN+="/etc/mount-sd.sh %k", LABEL="farsight"
这个意思是如果发现sd卡插入,那么运行/etc/mount-sd.sh这个脚本!这个脚本后面还带一个参数 %K,这个%k就是linux内核发现的新的设备名字。
三、U盘自动挂载
接着, 还是11-add-usb.rules, 继续在下一行,或者隔一行,加入如下内容:
ACTION=="add",GOTO="farsight",KERNEL=="sd[a-z][0-9]",RUN+="/etc/mount-usb.sh %k",LABEL="farsight"
这个意思是如果发现USB卡插入,那么运行/etc/mount-usb.sh这个脚本!这个脚本后面还带一个参数 %K,这个%k就是linux内核发现的新的设备名字。
最后,整个/etc/udev/rules/11-add-usb.rules:
ACTION=="add",GOTO="farsight", KERNEL=="mmcblk[0-9]p[0-9]", RUN+="/etc/mount-sd.sh %k", LABEL="farsight"
ACTION=="add",GOTO="farsight",KERNEL=="sd[a-z][0-9]",RUN+="/etc/mount-usb.sh %k",LABEL="farsight"
A
四、卸载SD卡
在上述的规则文件11-add-remove.rules(这个是移除u盘和sd卡的规则,上面是加载的规则,不一样)中,加入如下内容:
ACTION=="remove",GOTO="farsight", SUBSYSTEM=="block",GOTO="farsight", KERNEL=="mmcblk[0-9]p[0-9]",RUN+="/etc/umount-sd.sh", LABEL="farsight"
五、卸载U盘
接着上一步,在同一个文件里面,隔行,继续加入如下内容:
ACTION=="remove",GOTO="farsight",SUBSYSTEM=="block",GOTO="farsight",KERNEL=="sd[a-z][0-9]",RUN+="/etc/umount-usb.sh",LABEL="farsight"
最后,整个/etc/udev/rules/11-add-remove.rules文件如下:
CTION=="remove",GOTO="farsight", SUBSYSTEM=="block",GOTO="farsight", KERNEL=="mmcblk[0-9]p[0-9]",RUN+="/etc/umount-sd.sh", LABEL="farsight"
ACTION=="remove",GOTO="farsight",SUBSYSTEM=="block",GOTO="farsight",KERNEL=="sd[a-z][0-9]",RUN+="/etc/umount-usb.sh",LABEL="farsight"
六、创建挂载的目录
mkdir /mnt/sd -p
mkdir /mnt/usb -p
上面两个目录的路径和命名,要根据你自己的需要求来创建。我这里是随便写的。
七、添加脚本
---->创建脚本 /etc/mount-sd.sh, 这个脚本对应上面的udev规则里面的脚本,是一个专门用于挂载sd卡的脚本,创建后,填入如下内容并保存:
#!/bin/sh
/bin/mount -t vfat /dev/$1 /mnt/sd
sync
保存后,记得添加可执行权限: chmod +x /etc/mount-sd.sh
----> 创建脚本 /etc/umount-sd.sh, 这个脚本对应上面的udev规则里面的脚本,是一个专门用于umount sd卡的脚本,创建后,填入如下内容并保存:
#!/bin/sh
sync
umount /mnt/sd
保存后,记得添加可执行权限: chmod +x /etc/umount-sd.sh
----> 创建脚本 /etc/mount-usb.sh, 这个脚本对应上面的udev规则里面的脚本,是一个专门用于挂载usb的脚本,创建后,填入如下内容并保存:
#!/bin/sh
mount -t vfat /dev/$1 /mnt/usb
sync
为此文件添加可执行权限,切记。
chmod +x /etc/mount-usb.sh
----> 创建脚本 /etc/umount-usb.sh, 这个脚本对应上面的udev规则里面的脚本,是一个专门用于umount usb的脚本,创建后,填入如下内容并保存:
#!/bin/sh
sync
umount /mnt/usb
为此文件添加可执行权限,切记。
chmod +x /etc/umount-usb.sh