Linux入门之内核管理番外篇(4)udev入门(1)
前言
在上篇中的内核模块管理讲解中,最后或多或少会留下一些疑问,那么这些疑问就是内核模块的参数是怎么和对应的硬件所匹配上的,而硬件又是怎么被内核识别,并且一个个都映射成实际存在的文件,而这些文件之间的关系及作用。当然在最后了解到,这些硬件设备的探测信息是通过一个叫udev的工具来实现的,通过udev中配置的规则可以很有效的识别每一个硬件,并配合sysfs文件系统,将每个探测到的硬件信息导入到/sys目录中,那么与/proc目录对与内核系统信息的映射悄悄互补,/sys目录中则专门存放于硬件相关的数据。
使用管理和探测设备属性信息的命令:udevadm
udevadm 命令
udev - Dynamic device management #动态设备管理工具
提示:一般情况下要设置udev命令规则会使用到udevadm命令来获取规则中需要设置的键的对应值,也就是设备的完整数据,而udev配置中恰好需要这,当然,下面介绍udevadm管理工具的一些基本常见用户,本篇主要以讲解udev内部的配置为主。
基本用法例子:
#先来查看当前系统识别了多少个磁盘
[root@mzf test]# fdisk -l | grep -o '^Disk /dev/[sh]d[a-z]\>' Disk /dev/sdb Disk /dev/sda
说明:一般情况下从CentOS6版本以后,无论IDE接口还是SCSI接口的都会被识别为sd*开头的设备名称。这里显示目录系统上有两块磁盘。
当然如果需要再次插入一块磁盘,可能会识别为sdc,当然这也不一定。因为这要取决于udev中默认配置。那么就查看第一个磁盘/dev/sda 的信息吧。
设备信相关信息的查看
#显示/dev/sda磁盘路径硬件点
[root@mzf test]# udevadm info -q path -n /dev/sda /devices/pci0000:00/0000:00:/host2/target2:0:0/2:0:0:0/block/sda
说明:/dev/sda难道不是本身的路径吗?一般需要挂载的时候常用的磁盘设备基本都是块设备文件,因为linux内核对文件进行了分类,而这些块设备文件为了便于识别,每个快设备都会有相应的主设备号、次设备号,因此对其操作直接指定对应的块设备文件路径。而设备只是提供访问,输出信息当然不行。
#显示于设备相关的完整信息,包括其父级parent device设备
[root@mzf myusb]# udevadm info -a -p $(udevadm info -q path -n /dev/sda)
解析:这里会显示所有与磁盘相关的信息,比如磁盘本身的属性,磁盘的设备类型等,在下面会列出所有parent device列表属性,这些都是此磁盘的父级或上级设备,比如磁盘的接口点,磁盘的标记,磁盘接口的主板插槽等,关于设备的上下级下面会讲。
提示:当然如果不知道设备本身的设备数据存放路径,也可以通过-name或-n选项来指设备命令进行特定的设备属性查询,入下:
#只显示设备本身的完整信息
[root@localhost ~]# udevadm info --query=property --name=/dev/sda
解析:这里/dev/sda作为一个标准的块设备,其主设备号、此设备号等信息完整显示,而且在下面显示其属性的连接路径。这里可以发现其为块设备,那么其对其的块设备等信息都是按照设备的设备号去建立的连接路径,而不是完全安装设备名。
列出设备的具体属性
udevadm info -a -p [device name] #这里的device name表示目前识别的规则NAME
例如:查看video设备,注意这里的路径是已经指定的数据存放目录
udevadm info -a -p /sys/class/backlight/acpi_video0
加载新规则前测试规则
udevadm test $(udevadm info -q path -n [device name]) 2>&1
例如:主要检查配置的语法以及匹配对应检测硬件
udevadm test /sys/class/bakcklight/acpi_video0/
加载udev新规则
方法1:规则自动重载识别
udevadm control --reload
方法2:自动重载可能失败,入股失败可以手工强制触发规则
udevadm tigger
检查新的eSATA (磁盘)设备
#如果在平时插入的磁盘而没有被内核识别,那么可以使用下面里的命名:
echo 0 0 0 | tee /sys/class/scsi_host/host*/scan echo “- - -” > /sys/class/csci_host/host*/scan
解析:host目录名一般根数字,一般为host[0-9]这里显示为scsi接口下的热存储设备,每个磁盘都会在一个热存储口下。
#也可以通过安装scsiaddAUR(本身,此工具为专门解决新磁盘设备重新检查)并尝试命令
scsiadd -s
#希望你设