4.7 使用设备文件系统创建设备文件
在Linux 2.6.32版本之前,在基本的Linux系统中必须调用mknod
命令手动创建设备文件。设备文件与内核设备之间的一致性则交由系统开发者负责。伴随着2.6系列的稳定版内核发布,一个名为sysfs的新虚拟文件系统诞生了。sysfs的任务就是方便用户态进程查看系统的硬件配置。
当内核检测到设备时,编译进内核的Linux驱动通过sysfs将设备进行注册。对于那些编译为模块的驱动来说,这个注册过程发生在模块加载的时候。sysfs是通过Linux内核配置CONFIG_SYSFS来打开并准备好使用的,该配置应当默认设置为yes。
内核通过设备文件系统创建设备文件。任何希望注册设备节点的驱动将通过设备文件系统(通过核心驱动)来创建设备文件。当设备文件系统实例被挂载到/dev目录时,设备节点将以固定的名称、权限和所有者被首次创建。所有的设备节点都归root用户所有并且默认权限为0600。
这之后,内核很快就会给udevd
发送一个uevent。根据/etc/udev/rules.d/
、/lib/udev/rules.d/
和/run/udev/rules.d/
目录下的规则文件,udevd
将额外创建指向设备节点的符号链接。udevd
也会修改设备节点的权限、所有者、用户组,或者修改该对象在udevd
内部的数据库条目(名称)。这三个目录下的规则是有编号的,并且会被合并。设备创建时,如果udevd
无法找到一条适用的规则,那么相应的权限和所有者信息会维持设备文件系统初始化时的状态。
CONFIG_DEVTMPFS_MOUNT内核选项会让内核启动时自动挂载设备文件系统,除非启动时指定了initramfs。
在没有导入environment-setup-cortexa7hf-neon-poky-linux-gnueabi
脚本的终端中打开menuconfig窗口。依次选择main menu -> Device Drivers ->Generic Driver Options -> Maintain a devtmpfs filesystem to mount at /dev。按下空格键就可以看到一个*号出现在新的配置选项上。选择Exit直到退出menuconfig GUI。记得保存新的配置。
编译新的镜像并拷贝到tftp目录:
现在重启你的i.MX7D目标处理器。