讨论:如何解决系统启动盘符飘逸的问题

简介:

在内核调试的过程中,可以通过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

现在确实已经发生 了盘符的改变,但是不知道是否是在内核启动的时候改变的,
还是


     本文转自fengyuzaitu 51CTO博客,原文链接:http://blog.51cto.com/fengyuzaitu/1612007,如需转载请自行联系原作者






相关文章
|
Linux
【杂七杂八】简单粗暴处理linux下.nsf导致的目录无法删除
【杂七杂八】简单粗暴处理linux下.nsf导致的目录无法删除
250 0
|
3月前
|
移动开发 Linux Perl
创建文件系统实战篇
文章详细介绍了如何使用mkfs和mke2fs工具创建EXT系列文件系统,并通过tune2fs和dumpe2fs工具进行文件系统参数调整和管理。
44 0
|
4月前
|
安全 Linux
在Linux中,发现⼀个病毒文件删了又自动创建如何解决?
在Linux中,发现⼀个病毒文件删了又自动创建如何解决?
|
安全 Linux
Linux常见维护报错,修复MBR引导/修复grub2菜单/内核文件丢失
Linux常见维护报错,修复MBR引导/修复grub2菜单/内核文件丢失
152 0
Linux常见维护报错,修复MBR引导/修复grub2菜单/内核文件丢失
经验分享:u盘文件或者目录损坏无法读取、无法正常打开,如何解决?
u盘突然无法正常打开,显示目录损坏。。。 找寻了网上众多方法。以下是解决方案 win+R 打开后输入cmd之后输入:chkdsk +你要修复的u盘+/F
经验分享:u盘文件或者目录损坏无法读取、无法正常打开,如何解决?
|
安全 Linux Shell
Linux操作系统引导过程
Linux操作系统引导过程
Linux操作系统引导过程
磁盘管理与文件系统(步骤非常完整喔~)(下)
1 磁盘基础 1.1 硬盘的物理结构 盘片:硬盘有多个盘片,每盘片2面(正反两面)。 磁头:每面一个磁头。(并不是只有一个磁头)
194 0
|
存储 缓存 固态存储
磁盘管理与文件系统(步骤非常完整喔~)(上)
1 磁盘基础 1.1 硬盘的物理结构 盘片:硬盘有多个盘片,每盘片2面(正反两面)。 磁头:每面一个磁头。(并不是只有一个磁头)
258 0
|
安全 Linux 调度
Linux操作系统引导过程(爱那么简单,在一起却难)
Linux操作系统引导过程(爱那么简单,在一起却难)
202 0
Linux操作系统引导过程(爱那么简单,在一起却难)
|
Linux
教训:LINUX复制文件到U盘丢失
教训:LINUX复制文件到U盘丢失
380 0