问题描述:
我目前使用的是3399Pro 在使用root登录并用udev 挂载sd的时候,df 是看不到挂载成功的
环境:
核心板 3399pro
Ubuntu 18.04.5 LTS
需要了解的知识,大家自己搜下udev 的规则网上有很多,我就再进行描述了,介绍几个比较好用的命令
查看输出:
sudo dmesg | tail
查看规则运行情况:
sudo udevadm test /sys/class/block/mmcblk0p1
查询USB设备的属性:
udevadm info --attribute-walk --name=/dev/mmcblk0p1
重启udev服务:
- sudo service udev reload
- sudo service udev restart
路径:
3399 pro 有2个地方存放了规则
/lib/udev/rules.d/
/etc/udev/rules.d/
规则的编写大致上如下,文件名根据实际情况编写,我写的是50-sd.rules, 规则优先级自行判断写99-sd.rules 也可以
SUBSYSTEM=="block", KERNEL=="mmcblk[0-9]*", ACTION=="remove", RUN+="/etc/udev/scripts/sd_mount.sh"
sd_mount.sh 文件内容就是简单mount没有添加判断 网上有很多判断之类的,下面只写出关键的部分
mount /dev/mmcblk0p1 /mnt/mmc1/
自己可以添加输出,查看是否运行了。到这里已经完成了简单的udev基本规则,应该能正常挂载了。我经过测试后,mount 成功执行,但是 df 就是看不到 挂载成功,ls /mnt/mmc1/ 下的文件也看不到。具体问题出现在 如何在root用户空间中执行脚本或与用户共享安装点。
修改配置文件
vim /lib/systemd/system/systemd-udevd.service
- #修改为共享,原来是slave
- MountFlags=shared

修改后,重启开发板或者用命令重启udev 服务