分区的主编号和次编号

分区的主编号和次编号
$ stat  new
  File: ‘new’
  Size: 928         Blocks: 8          IO Block: 4096   regular file
Device: 804h/2052d  Inode: 28188755    Links: 1
Access: (0622/-rw--w--w-)  Uid: ( 1000/       t)   Gid: ( 1000/       t)
Access: 2015-12-19 06:33:07.842559147 -0500
Modify: 2013-06-11 12:54:44.944836000 -0400
Change: 2015-03-25 11:15:20.778708140 -0400
 Birth: -

的联机帮助页statDevice是十六进制或十进制格式的“设备号”。

沙杜尔 说:

A设备id 是标识特定块设备的主设备号和次设备号的组合。在您的情况下,“804”标识了第四的分区第一的根据 BIOS 定位的类似 SCSI 的驱动器。按照传统术语,这将是 /dev/sda4。

看起来Device确实是文件所在分区的主号和次号的组合new

$ ls -l /dev/sda4
brw-rw---- 1 root disk 8, 4 Oct 12 15:44 /dev/sda4

如果我是正确的,主设备号8标识分区的驱动程序,次设备号4标识分区的设备。

但我怎么知道Device: 804h 识别第四的分区第一的类似scsi的驱动器?

答案1

嗯,十六进制 804 实际上是两个字节,通常写为0x0804.第一个字节是0x08(“主要”数字),第二个字节是0x04(“次要”数字)。将它们转换为十进制,这就是来源8, 4

您可以从 中了解 8 的含义/proc/devices,其中块设备 8 为sd,即 SCSI 磁盘。这是那里的第一个,这就是你知道它是第一个的方式。 8,0 是 sda,8,1 是 sda1,8,2 是 sda2,等等。

如果你查看内核文档——Documentation/devices.txt——原来sd驱动实际上只允许15个分区; 8,16 是/dev/sdb(8,17 是/dev/sdb1,8、32 是/dev/sdc 等)。如果超过该限制,则会动态分配额外的号码。

实际上,/dev条目名称由 决定udev,并由 udev 配置控制(尽管内核建议使用默认值,并且几乎每个人都使用它。)设备号的静态分配主要是一个历史奇怪的现象 - 在运行的系统上并不真正需要它udev 除了少数启动关键设备之外。

相关内容