菜鸟科技网

创建设备节点命令有哪些?

在Linux系统中,设备节点是设备文件在文件系统中的表现形式,通过设备节点可以与硬件设备进行交互,创建设备节点通常涉及mknod命令以及udev机制,以下是详细说明。

创建设备节点命令有哪些?-图1
(图片来源网络,侵删)

创建设备节点最基础的命令是mknod,其基本语法为mknod [选项] 设备名 设备类型 主设备号 次设备号,设备类型包括字符设备(c)和块设备(b);主设备号标识设备驱动程序,次设备号用于区分同一驱动下的多个设备,创建一个字符设备/dev/mychar,主设备号为10,次设备号为1,可执行mknod /dev/mychar c 10 1,直接使用mknod创建的设备节点不会动态管理,系统重启后可能丢失,且无法处理设备的热插拔。

现代Linux系统通常采用udev(在systemd系统中为udev)来自动管理设备节点,udev通过监听内核事件,动态创建、删除和修改设备节点,确保设备与节点的一致性,配置udev规则需要创建规则文件(通常位于/etc/udev/rules.d/),规则文件以.rules为后缀,包含匹配条件和动作,为特定USB设备创建节点,可编写规则:SUBSYSTEM=="usb", ATTR{idVendor}=="1234", ATTR{idProduct}=="5678", MODE="0664", SYMLINK+="myusb",该规则匹配指定厂商和产品ID的USB设备,设置权限为0664,并创建符号链接myusb,规则编写完成后,需执行udevadm control --reload-rules重新加载规则,再执行udevadm trigger触发设备事件,使规则生效。

对于需要静态设备节点的情况(如根文件系统中的设备),可通过/dev目录的tmpfs挂载结合mknod在启动时创建,或使用systemd的systemd-vconsole-setup等服务管理,某些设备(如磁盘分区)可通过MAKEDEV脚本(已逐渐被udev替代)批量创建节点。

以下是设备类型与主设备号的常见示例(部分):

创建设备节点命令有哪些?-图2
(图片来源网络,侵删)
设备类型 主设备号范围 示例设备 说明
字符设备 1-239 /dev/ttyS0 (4) 串行端口
块设备 1-239 /dev/sda (8) SCSI磁盘
字符设备 240-255 /dev/loop0 (7) 回环设备

创建设备节点时需注意:权限设置不当可能导致安全风险(如开放可写权限给普通用户);主次设备号错误会导致设备无法正常使用;动态设备节点应优先通过udev管理,避免手动创建导致的不一致。

相关问答FAQs:

  1. 问:为什么直接使用mknod创建的设备节点重启后会丢失?
    答:在Linux系统中,/dev目录通常由tmpfs虚拟文件系统挂载,其内容在重启后会重置,手动通过mknod创建的节点仅存在于当前运行会话,重启后tmpfs会重新挂载为空目录,因此节点丢失,现代系统推荐使用udev自动管理设备节点,确保设备与节点的动态对应和持久性。

  2. 问:udev规则中的MODE和SYMLINK参数有什么作用?
    答:MODE参数用于设置设备节点的访问权限,如MODE="0664"表示所有者可读写,组用户和其他用户只读;SYMLINK参数用于创建指向实际设备节点的符号链接,便于通过固定名称访问设备,避免因设备名变化(如USB接口更换导致设备名从/dev/sda变为/dev/sdb)导致的应用兼容性问题,通过SYMLINK+="mydisk"可始终通过/dev/mydisk访问设备,无论实际设备名如何变化。

    创建设备节点命令有哪些?-图3
    (图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇