udev简介

引子

今天用virt-manager安装了一个虚拟机,然后对虚拟机的网络配置作了简单的修改,安装了一些基本的软件,为了减少后面安装的虚拟机的麻烦,于是使用virt-manager的克隆工具将该虚拟机克隆了一份。但是,进入到该克隆的虚拟机中后发现,虚拟机里面始终上不了网。通过"ifconfig -a"发现,只有eth1而不是我所期待的eth0,而我的网络配置文件中只对eth0进行了设置,所以网卡启动之后没有得到正确的配置,因此,上不了网也是很自然的事情。我知道解决这个问题最简单的办法就是在网络配置文件"/etc/network/interfaces"中加上eth1相应的配置然后重启网络就好了。可是我不想这样做,因为之前也遇到过类似的问题,明明只有一个网卡,可是系统启动之后网络的名称总是eth1。于是在网络搜索了一下相应的资料,知道原来通过linux中的udev可以解决这个问题。

udev简介

udev是构建在linux的sysfs之上的是一个一个用户程序,它能够根据系统中的硬件设备的状态动态更新设备文件,包括设备文件的创建,删除等,设备文件通常放在/dev目录下。使用udev后,在/dev目录下就只包含系统中真正存在的设备。udev的的工作过程大致是这样的:

 

1. 当内核检测到在系统中出现了新设备后,内核会在sysfs文件系统中为该新设备生成一项新的记录,新记录是以文件或目录的方式来表示,每个文件都包含有特定的信息。

 

2. udev在系统中是以守护进程的方式运行,它通过某种途径检测到新设备的出现,通过查找设备对应的sysfs中的记录得到设备的信息。

 

3. udev会根据/etc/udev/udev.conf文件中的udev_rules指定的目录,逐个检查该目录下的文件,这个目录下的文件都是针对某类或某个设备应该施行什么措施的规则文件。udev读取文件是按照文件名的ASCII字母顺序来读取的,如果udev一旦找到了与新加入的设备匹配的规则,udev就会根据规则定义的措施对新设备进行配置。同时不再读后续的规则文件。

 

udev的工作可以简单的概括为:监控系统中设备状态的变化,当有设备的状态发生变化时,根据用户的配置对设备文件执行相应的操作。

udev的配置规则

udev的全局的配置文件是/etc/udev/udev.conf,该文件一般缺省有这样几项:

udev_root="/dev"                         #udev产生的设备文件的根目录是/dev
udev_rules="/etc/udev/rules.d"    #用于指导udev工作的规则所在目录。
udev_log="err"                              #当出现错误时,用syslog记录错误信息。

其中最关键的就是规则文件,即/etc/udev/rules.d/目录下的文件,udev是按照文件名的ASCII字母顺序来读取的,一旦找到与设备匹配的规则,就运用该规则,并不再读后续的规则文件了。下面简单看下udev定义了那些规则,以及它是如何进行配置的,怎样去编写这种规则文件。

 

udev的规则文件以行为单位,以"#"开头的行代表注释行。其余的每一行代表一个规则。每个规则分成一个或多个“匹配”和“赋值”部分。“匹配”部分用“匹配“专用的关键字来表示,相应的“赋值”部分用“赋值”专用的关键字来表示。“匹配”关键字包括:ACTION,KERNEL,BUS, SYSFS等等,“赋值”关键字包括:NAME,SYMLINK,OWNER等等。具体详细的描述可以阅读udev的man文档。下面通过一个具体的例子来说明,看如下的规则:

 

# PCI device 0x8086:0x1096 (e1000e)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:19:21:ff:cc:7c", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

 

这个规则中的“匹配”部分有四项,分别是SUBSYSTEM,ACTION,DRIVERS,KERNEL。而"赋值"部分有一项,是NAME。这个规则就是说,当系统中出现的新硬件属于net子系统范畴,系统对该硬件采取的动作是加入这个硬件,且这个硬件在DRIVERS信息中的address="00:19:21:ff:cc:7c",dev_id="0x0",内核的命名为eth*时,udev会在建立新的网络设备,并命名为eth0。udev规则文件的编写可以参考man手册。

参考材料

http://blog.chinaunix.net/u2/82278/showart_1951386.html

http://www.ibm.com/developerworks/cn/linux/l-cn-udev/index.html?ca=drs-cn-0304

http://www.reactivated.net/writing_udev_rules.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值