| 在使用鲁班猫的过程中,发现cat用户并没有配置好外设的使用权限。最简单的办法就是sudo改权限,让cat用户能临时访问设备(重启后会失效)。有没有什么办法能一劳永逸的呢?
当然有 ,就是通过udev规则实现设备权限的自动绑定。
什么是udev,简单来说,只要Linux内核启动了,udev就以守护进程的方式运行 ,并侦听内核发出的uevent来管理设备。所以不管是系统启动时初始化的设备,还是启动后插入的新设备(例如USB等热插拔设备),都逃不过udev的管理。 而使用udev规则来指定设备的访问权限,则是真正的一劳永逸的处理方式。
在命令行执行以下命令
sudo vi /etc/udev/rules.d/99-rockchip-permissions.rules
然后在文件尾部的 LABEL="permissions_end" 字段前添加以下内容
SUBSYSTEM=="spidev", GROUP="devuser", MODE="0660"
SUBSYSTEM=="i2c-dev", GROUP="devuser", MODE="0660"
SUBSYSTEM=="gpio*", PROGRAM="/bin/sh -c '\
chown -R root:devuser /sys/class/gpio && chmod -R 770 /sys/class/gpio;'"
这个配置规则,是告诉udev,只要是子系统硬件匹配spidev和i2c-dev的,就把该设备的用户组调整成devuser,权限改成0660
接下来我们需要新建devuser组,并把cat用户添加到这个组里。输入以下命令
sudo groupadd devuser
sudo adduser "$USER" devuser
然后重启设备
sudo reboot
重启完毕后,我们在命令行查看/dev/spidev*设备的权限,并使用spi测试程序测试一下,能正常读写。
|