Linux中的存储命名

最近在做使用U盘和SD卡对设备进行系统升级时遇到了一些问题。不同的SD卡插入设备后挂载的目录名称不一致,并且在SD卡拔出后还存在挂载的目录。以及U盘插入后有时在/dev/目录下生成的是sda、有时还存在sda1,有时便为sdb等之类的。这里记录下来以便后续开发少经历些坑。在Linux系统中,平时插入U盘有时在/dev/目录中会显示sda、sda1、 sda2、 sdb、 sdc等之类的设备文件,那么这些文件有什么差别呢?要是系统使用了udev或者是mdev动态设备文件管理,那么在系统上电、设备热插拔、安装驱动的时候,内核会把相应的事件发送给用户空间的udev或者是mdev。udev会查找/sys目录中相关的文件,用来生成/dev/目录下的设备文件,最后还会根据用户指定的rules进行相关的操作(如自动挂载、建立连接、对设备文件重命名等)。
首先需要弄清楚一些相关的概念,如sda、sda1。在Linux中有如下命名规则:
在这里插入图片描述
而SD/MMC卡在Linux系统/dev目录下的命名为mmcblk< 0 - 9 > < p [ 0-9] >,由于SD卡延续了MMC的驱动,所以名称都使用mmc。而blk指的是块设备(block),后面的p则指的是partition。所以mmcblk1为第二张SD卡,mmcblk1p1则指的是第二张SD卡中的第一个分区。
上图来源于Linux中设备命名一文。
在Linux中U盘也属于硬盘的,所以sda表示第一个硬盘、sdb表示第二个硬盘、sdn表示第n个硬盘。而每个硬盘都可以分区,所以sda1表示的是第一个硬盘的第一个分区,同样sda2表示的是第一个硬盘的第二个分区
这里为了方便讲解,下面都是以U盘为例子,SD卡和U盘都是一样的。
/sys/为虚拟文件系统,里面存放着系统运行时产生的一些信息。在设备插入的时候(U盘),会在/sys/block/中创建和U盘相关的目录,比如sda。进入sda后有时会发现里面还存在sda1目录。每个目录中的dev文件是用来指定生成/dev目录中设备文件的主次设备号,而uevent则是记录一些相关属性。
在这里插入图片描述
在这里插入图片描述
查看dev文件会发现里面记录的东西很简单,只有主次设备号,使用:分隔开。发现sda的设备号为8:0,而sda1的设备号为8:1
在这里插入图片描述在这里插入图片描述
而在uevent文件中则记录了更为详细的信息,除了有主次设备号,还有设备文件的名字以及类型。在sda中name为sda,类型为disk,即为磁盘。而在sda1目录中的uevent文件中,name为sda1,type却为partition。从这里可以看出,sda1为sda的分区。如果U盘没有分区,则sda目录下面不会存在sda1,要是U盘有多个分区,则在sda目录中会存在相应的sda1、sda2…等目录
在这里插入图片描述
在这里插入图片描述
从上面也可以看到udev或mdev的工作部分流程,==在热插拔或者是驱动安装时,内核探测到某些设备后,会在/sys/目录中记录下来,block子目录记录与块设备相关的一些信息。在这里有dev文件描述设备文件的主次设备号、uevent则是更为详细的描述。==应用空间的udev便是从这里获取信息来动态生成设备文件。而执行的rules会在相关的文章的描述,不属于这部分。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值