首页 > 系统相关 >Linux守护进程之udev-笔记

Linux守护进程之udev-笔记

时间:2024-04-04 22:32:57浏览次数:26  
标签:Linux udev ID 网卡 规则 节点 守护 设备

一、什么是 udev?

        udev 是 Linux 系统中的一个守护进程,它的主要任务是管理所有的设备节点。你可以把它想象成一个设备的“管家”,负责识别、监控和管理连接到计算机上的硬件设备。当一个新设备被连接到系统时,`udev` 会立刻识别它,并为其创建相应的文件和目录,这样其他程序就可以使用这个设备了。

二、udev的工作原理

        1、设备识别

        当你插入一个 USB 驱动器或其他硬件设备时,udev 会检查这个设备,并确定它的类型和特性。

        2、动态创建节点

        一旦识别了设备,udev 会动态地创建一个设备节点(通常在 /dev 目录下),并为这个节点分配一个合适的设备文件名。

        3、加载驱动

        udev还会尝试加载适合这个设备的驱动程序,确保设备能够正常工作。

        4.、通知应用程序:

        设备准备好后,udev会发送一个通知给系统,告诉其他程序设备已经可以使用了。

三、udev 的使用

  • 查看设备列表:

        你可以使用lsusb 或 lspci 命令来查看连接到系统的 USB 或 PCI 设备。这些命令会从 udev 获取设备信息。

  • 查看设备信息:

        对于特定的设备,你可以查看 /dev目录下的设备节点来获取更多信息。例如,cat /dev/sdX可以显示设备 sdX的信息(这里的 X是设备字母)。

  • 管理设备节点:

        系统管理员有时会需要手动创建、删除或修改设备节点。这可以通过编辑 udev 的规则文件(通常以 .rules结尾)来实现。

四、udev 的配置

       udev 的配置是通过一系列规则文件来实现的,这些规则文件告诉 udev 如何处理特定的硬件设备。规则文件通常以 .rules 扩展名结尾,并存放在 /etc/udev/rules.d/ 目录下。这些规则文件使用一种特定的语法来定义匹配模式和相应的动作

规则文件的结构

   udev 规则文件由一系列条目组成,每个条目包含一个或多个匹配属性(用于识别设备)和一组要执行的动作。条目通常遵循以下格式:

ACTION=="action", ATTR{attribute}=="value", ACTION=="command"
  • ACTION:指定当设备被添加("add")或移除("remove")时 udev 应该执行的操作。
  • ATTR{attribute}:指定设备的属性,如 idVendor(厂商 ID)、idProduct(产品 ID)等。
  • value:属性的值,用于匹配特定的设备。
  • ACTION=="command":当匹配条件满足时,udev 执行的命令或动作,如创建符号链接、设置权限等。

规则文件示例

        假设你想要为一个特定的 USB 打印机创建一个持久的设备节点,你可以创建一个如下的规则文件:

ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0x03f0", ATTR{idProduct}=="0x1a42", SYMLINK+="myprinter"

        这个规则的含义是:当一个 USB 设备被添加到系统,且它的厂商 ID 是 0x03f0,产品 ID 是 0x1a42 时,udev 会为这个设备创建一个名为 myprinter 的符号链接。

五、配置udev详细示例

        假设我们有一个特定的 USB 无线网卡,我们需要为它创建一个持久的设备节点,并设置特定的权限,以便只有特定的用户组可以访问这个设备。

  • 设备信息

        首先,我们需要获取设备的相关信息。通常,设备的厂商 ID 和产品 ID 是配置 udev 规则所需的关键信息。我们可以使用 lsusb 命令来查看连接到系统的所有 USB 设备的信息。

lsusb

         假设输出中显示我们的无线网卡具有以下信息:

Bus 002 Device 003: ID 0x0846:0x9001

        这里 0x0846 是厂商 ID,0x9001 是产品 ID。 

  • 创建规则文件 

        接下来,我们创建一个新的 udev 规则文件。通常,规则文件位于 /etc/udev/rules.d/ 目录下。我们可以创建一个名为 70-persistent-net.rules 的文件,其中 70 表示规则的优先级(数字越小,优先级越高)。

sudo nano /etc/udev/rules.d/70-persistent-net.rules
  • 编写规则 

        在打开的文本编辑器中,我们将编写以下规则:

# 匹配特定的 USB 无线网卡
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0x0846", ATTRS{idProduct}=="0x9001",

# 为设备创建一个持久的节点名
SYMLINK+="wireless网卡%n",

# 设置设备节点的权限,使得只有 "wireless" 用户组可以访问
GROUP="wireless", MODE="0660"

        这个规则的含义是:

  • 当一个 USB 设备被添加到系统,并且它的厂商 ID 是 0x0846,产品 ID 是 0x9001 时,udev 将执行以下操作:
    • 为设备创建一个名为 wireless网卡N 的符号链接,其中 N 是设备实例的编号。
    • 将设备的文件权限设置为 0660,这意味着只有文件的所有者和 "wireless" 用户组的成员可以读写设备文件。
    • 将设备的所属用户组设置为 "wireless"。
  • 应用规则

        保存并关闭规则文件后,我们需要让 udev 重新加载规则:

sudo udevadm control --reload-rules

         然后,我们可以插入无线网卡并检查 udev 是否按照我们的规则创建了设备节点和符号链接:

udevadm info -a -n /dev/wireless网卡N

        替换 N 为你的设备实例的实际编号。

  • 验证权限

        最后,我们需要验证设备节点的权限是否正确设置。可以使用 ls -l 命令查看 /dev/ 目录下的设备节点:

ls -l /dev/wireless网卡N

        输出应该显示设备节点的权限是 660,并且所属组是 "wireless"。 

如果设备在插入时没有立即按预期工作,尝试重启 udev 服务或者重新启动系统。

标签:Linux,udev,ID,网卡,规则,节点,守护,设备
From: https://blog.csdn.net/weixin_52129797/article/details/137378926

相关文章

  • Linux操作系统之nfs网络文件系统
    目录一、NFS简介1.2安装配置NFS 一、NFS简介nfs类似于windows文件共享将linux的一个目录共享到网络中,网络中的其他所有主机都可以使用这个共享目录中的文件samba文件共享可以在linux中通过samba共享一个目录,然后在linux中可以访问这个共享 nfs网络磁盘可......
  • (通俗易懂)Unix/Linux上的五种IO模型
    接续上一节内容(通俗易懂)阻塞、非阻塞、同步、异步区别-CSDN博客,非常接地气地解释了阻塞、非阻塞、同步、异步的内容。由于内容深度具有延续性,建议看本节内容之前,先过一遍上一节内容噢~由于最近忙于项目,拖了好久才续更这一节内容。本节,我们更深入地探讨一下Unix/Linux上的五种I......
  • Linux——编译链接和gcc
    1.gcc,g++,gdb安装命令行写gcc,g++,gdb根据提示安装:sudoaptinstallgcc/g++/gdb2.gcc分布编译链接(1)预编译:gcc-Emain.c-omain.i(2)编译:gcc-Smain.i-omain.s(3)汇编:gcc-cmain.s-omain.o(4)链接gccmain.o-omain执行:./main或者:全路径/mai......
  • Linux——文件查看命令 文件编辑命令
    文件查看命令(1)cat1)查看文件内容(内容较少时使用):cat文件名2)合并文件:cat文件名1文件名2>文件名33)往文件中写入数据,(Ctrl+d结束输入);(2)moremore文件名文件内容较多时用more(空格,回车往下翻,b回滚)(3)lessless文件名看完内容之后不会显示到屏幕上;(......
  • Linux华为云Hadoop配置环境
    手工搭建Hadoop环境(Linux)_弹性云服务器ECS_最佳实践(huaweicloud.com)https://support.huaweicloud.com/bestpractice-ecs/zh-cn_topic_0000001698668477.html?locale=zh-cn#ZH-CN_TOPIC_0000001698668477__li49001945163110跟着傻瓜式CV即可。气死我了!找了半天,最后在官网......
  • Linux常用命令
    Linux常用命令本文记录了常用命令的详细解读。列出当前目录ls列出详细信息,可以查看文件和文件夹到权限ls-al给文件和文件夹授权sudochmod-R777dataset创建文件夹mkdir复制文件夹(递归)cp-r通过SSH复制到远程服务器scp-r在linux下一般用scp这个命令来......
  • 守护进程
    守护进程也称Daemon(精灵)进程,是Linux中的后台服务进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。一般采用以d结尾的名字。如httpd,nfsd、sshd等 Linux后台的一些系统服务进程,没有控制终端,不能直接和用户交互。不受用户登录、注销的影响,一直在运行着,......
  • Linux项目自动化构建工具 --- make/Makefile
    文章目录make/Makefile文件1背景2理解2.1创建执行代码2.2创建makefile文件2.3运行make指令2.3.1依赖关系2.3.2依赖方法2.3.3原理2.4项目清理make/Makefile文件1背景会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力一个工程中的源文......
  • 【Linux】网络基础常识
    文章目录1.网络常识1.0dhcp协议1.1ip地址,mac地址是什么?1.2你拿着手机是如何连接上wifi的?1.3数据,流量是什么?手机如何通过“数据/流量”上网?1.4电脑连接wifi的原理?电脑通过热点上网的原理?1.5固定电话打电话的原理?智能手机打手机电话/语音电话/视频电话的原理?1.62g,5g有什......
  • linux驱动-17-input子系统
    1input子系统介绍按键、鼠标、键盘、触摸屏等都属于输入(input)设备,Linux内核为此专门做了一个叫做input子系统的框架来处理输入事件。input子系统分为input驱动层、input核心层、input事件处理层,最终给用户空间提供可访问的设备节点。驱动层:输入设备的具体驱动程序,......