在内核调试的过程中,可以通过ls /dev/sd*查看相关的信息
SYMLINK是符号链接,但NAME是我们定义在/dev里边生成的,难道这个也叫符号链接
http://blog.itpub.net/10752019/viewspace-941275/
http://bbs.chinaunix.net/thread-1961452-1-1.html
我增加了一个硬盘,内核将其命名为sdb,我尝试写了一条规则将NAME=sdc,并用LAST_RULE将后续的匹配终止,用udevtrigger将其生效了(也重启过),在用fdisk -l的时候是看不到sdc的,也只有sdb,但在dev下边存在sdc,并可以分区,用fdisk可以产生sdc1,同时也产生sdb1了,但无法对sdc1进行mkfs,提示磁盘明显不存在,
问题
1,为什么仍有/dev/sdb的命名?规则中已经LAST_RULE了,50规则找到sdb也不该来匹配他,
2,格式化sdc1为什么不生效,难道是因为sdb是内核的命名,而udev定义的别名是用户模式?内核无法识别?
但udev的用法不就是建立在可以给内核所识设备来定义别名的基础上吗?
3,利用udevinfo可以查看磁盘的detail来定义rule,NAME定义的是我们自己要在/dev下看到的名字,但内核的名字也出现在/dev下边,内核的命名是必须在/dev下生效的呢?还是否需要重新写一套完整的规则来替代50规则?
KERNEL=="sda"是否内核已经指定(可能是sysfs),所以其实重新分配名字
也只是重新建立一个设备节点而已,
为了能够自定义生成相应的设备名称,需要比默认的系统配置50提前描述
编写文件如下错误:
将 2:0:0 上的设备 igb0 设置透传后,它就不会被附着
驱动程序了。2:0:1 上的设备的名称就会由 igb1 变为
igb0。这不正好就能由 pciconf -l 准确地反映出来吗?
这样,就可以根据 pciconf -l 的结果,将 2:0:1 上的设备
确定地重命名为 net1,将 2:0:2 上的设备重命名为 net2,
如此等等。
是不是有问题
DEVPATH=="/devices/pci0000:00/0000:00:10.0/host2/target2:0:1/2:0:1:0/block/sdb"
研究的议题:如何通过pci插槽绑定设备名称但是udev扫描插槽的时候,并不知道插槽的具体
命名方式,并且不同机器的插槽是否一样的命名,如果只是通过size,是否可行。
操作步骤1:
ID=="host2",SUBSYSTEM="block",NAME="mydisk"
invalid SUBSYSTEM operation
由于SUBSYSTEM的编写规则出现错误,必须是==
正确如下:
ID=="host2",SUBSYSTEM=="block",NAME="mydisk"
ID_PATH=="pci-0000:00:10.0-scsi-0:0:1:0", SUBSYSTEM=="block",NAME="mydisk"
pciconf -l 是用来查看当前 PCI 的 总线:插槽:功能
与设备名的对应关系。
unknown key 'ID_PATH' in /etc/udev/rules,d/50-persistent-storage.rules
由于出现如上的错误,导致无法正常进入系统,这个时候采用的系统只能够通过
重新挂载根文件系统变成可读写的方可以进入系统
mount -o remount,rw /dev/sda2 /
操作步骤2:
尝试修改内核指定的盘符,取消原有的设备标识
kernel=="sdb",NAME="MYDISK"
出现如下的麻烦:
1)fdisk -l 无法识别设备,但是能够正常的挂载,结果发现设备分区MYDISK2和MYDISK1根本不存在,而且不能够挂载,是否需要重新部署这个设备名称,发现这个方法没有任何的意义。
摘自:http://blog.csdn.net/ericzhong83/article/details/4739987
udev介绍:
1.udev规则文件:
/etc/udev/rules.d/ # 用户自定义的规则文件一般放在这 /lib/udev/rules.d/
2.udev主配置文件:
/etc/udev/udev.conf
3.(文件名中的)50为默认值;数值越小越先被解析。
4.udev工具包括udevadm、udevcontrol、udevinfo、udevmonitor、udevsettle、udevtest、 udevtrigger,都被集成到了udevadm中。
如下是猜测:
你想要的效果不是udev的工作,udev只是根据sysfs中的信息来生成/dev下的设备节点,你的驱动程序中必须进行相应的操作向sysfs文件系统注册设备才行。
下面是一个在sysfs中注册adc设备信息,之后udev会自动在/dev下生成设备adc的部分代码:
。。。。。。
/* creating adc class */
adc_class = class_create(THIS_MODULE, "adc");
if (IS_ERR(adc_class))
{
printk(KERN_ERR "failed in creating class!\n");
goto fail;
}
/* register adc device in sysfs,
* and this will cause mdev to create corresponding device node
*/
device_create(adc_class, NULL, devno, "adc");
。。。。。
要带达到你说的效果,修改驱动程序是可以的。
ATTR{UDISKS_PARTITION_SIZE}=="337204224"
SYSFS{size}=="337204224"
172730880
现在确实已经发生 了盘符的改变,但是不知道是否是在内核启动的时候改变的,
还是