作者:缘来是你2502855331 | 来源:互联网 | 2017-10-31 19:59
我常常见到的一个问题,不知大家有没有常常发现这种问题,就是 Linux 系统中原来有一个 SCSI 的硬盘,系统分配是 /dev/sda ,后来维护又加了一个新的硬盘,接上后,新的硬盘变成了 /dev/sda ,原来的老的硬盘变成了 /dev/sdb 。是否有法子固定下来啦?
这个问题在过去一直无解,直到 udev 出来,这个能完美的解决这个问题。
Linux 里都是以设备文件的形式存在。在早期的 Linux 版本中,/dev目录包含了所有可能出现的设备的设备文件。但因为这样 Linux 用户很难在这些大量的设备文件中找到匹配条件的设备文件。现在 udev 只为那些连接到 Linux 操作系统的设备产生设备文件。并且 udev 能通过定义一个 udev 规则 (rule) 来产生匹配设备属性的设备文件,这些设备属性可以是内核设备名称、总线路径、厂商名称、型号、序列号或者磁盘大小等等。
动态自动管理设备信息:当有设备添加 / 删除时,udev 的守护进程侦听到来自内核的 uevent 的事件,用来添加或者删除 /dev下的设备文件,所以 udev 可以只为已经连接的设备产生设备文件,而不会象 2.4 内核一样在 /dev下产生大量设备文件。另外可以使用这个功能 ,当有设备加入时运行外部的程序,比如鼠标加入时自动禁用触摸板之类
使用自定义命名和管理设备:使用 Udev 规则文件,udev 在 /dev/ 里为所有的设备定义了内核设备名称,比如 /dev /sda、/dev/hda、/dev/fd等等。由于 udev 是在用户空间 (user space) 运行,Linux 用户可以接下来对这些信息进行操作,比如可以通过自定义的规则文件,生成人性的设备标识,比如 /dev/my_disk、/dev/nameusb 等,还能对设置进行参数成员用户组权限之类的修改。
开始之类需要了解
? sysfs:sysfs是 Linux 2.6 内核里的一个虚拟文件系统 (/sys)。它把设备和驱动的信息从内核的设备模块导出到用户空间 (userspace)。从该文件系统中,Linux 用户可以获取很多设备的属性。
? devpath:本文的 devpath是指一个设备在 sysfs文件系统 (/sys)下的相对路径,该路径包含了该设备的属性文件。udev 里的多数命令都是针对 devpath操作的。例如:sda的 devpath是 /block/sda,sda2 的 devpath是 /block/sda/sda2。
? 内核设备名称:设备在 sysfs里的名称,是 udev 默认使用的设备文件名。
udev 主配置文件
主要的udev 主配置文件是 /etc/udev/udev.conf。这个文件通常很短,他可能只是包含几行#开头的注释,然后有几行选项:
udev_root="/dev/" # 设置的绝对路径,相当于创建 chroot 的根。
udev_rules="/etc/udev/rules.d/" #规则的存放地址
udev_log="err" # 日志的输入级别
udev 的规则配置文件实例
[1] [2] [3] [4] 下一页