/dev/disk/by-uuid 下的短 uuid 和长 uuid

/dev/disk/by-uuid 下的短 uuid 和长 uuid

我的系统上有多个硬盘分区(Linux josDeb 4.9.0-8-amd64 #1 SMP Debian 4.9.144-3.1 (2019-02-19) x86_64 GNU/Linux)。它正在与:

bejo@josDeb:~$ ls -l /dev/disk/by-uuid

产量:

total 0
lrwxrwxrwx 1 root root 10 Apr 13 16:20 00FB-604A -> ../../sdb1
lrwxrwxrwx 1 root root 10 Apr 13 16:19 4425-7572 -> ../../sda1
lrwxrwxrwx 1 root root 10 Apr 13 16:19 8dc07aba-5729-4525-883f-09c32d1a9e98 -> ../../sda2
lrwxrwxrwx 1 root root 10 Apr 13 16:19 95a8efff-92d2-4e31-8632-bf7a640e100f -> ../../sda3
lrwxrwxrwx 1 root root 10 Apr 13 16:19 f5a05b5e-c3ed-4227-bb62-fe4576b72643 -> ../../sda4

有些分区 uuid 很长,有些很短。我想了解为什么。我想,uuid 总是有 16 个字节。为什么我有不同大小的 uuid?

答案1

实际的通用唯一标识符s 应该是 128 位长并且是唯一的。在此之前,各种系统提供了各种不同大小的序列号以供区分。因此,Linux 只会获取它能找到的任何序列并将它们粘贴到/dev/by-uuid/目录中,即使它们与 UUID 定义不匹配。情况就是如此FAT32 卷 ID:

Sector offset   FAT32 EBPB offset   Length (bytes)  Contents 
0x043           0x38                4               Cf. 0x027 for FAT12/FAT16 (Volume ID) 

历史描述:

卷 ID(序列号)

通常,序列号“xxxx-xxxx”是通过 INT 21h/AH=2Ah(获取系统日期)[nb 7] 和 INT 21h/AH=2Ch(获取系统时间)返回的 DX 值的 16 位相加创建的[nb 7] 用于序列号的高位字,两个 CX 值的另一个 16 位加法用于序列号的低位字。或者,某些 DR-DOS 磁盘实用程序提供 /# 选项,用于根据月、日、小时和分钟的 BCD 编码 8 位值(而不是序列号)生成人类可读的时间戳“mmdd-hhmm”。

这是一个 32 位值,例如可以显示为 4425-7572。这两个分区很可能是 EFI 系统分区,因为它们必须是 FAT32。

您可以获得更好的信息(可能来自解析多个/dev/disks/by-*/条目)blkid命令改为:

# blkid

或仅限于那些简短的条目:

# blkid /dev/sda1 /dev/sdb1

说明书建议使用lsblk相反,它不需要root。因此,有了正确的选择,那就是lsblk -o +UUID,FSTYPE /dev/sda1 /dev/sdb1

例如这里:

$ lsblk -o +UUID,FSTYPE /dev/sda1 /dev/sdb1
NAME MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT UUID                                 FSTYPE
sda1   8:1    0  200M  0 part /boot/efi  1234-5678                            vfat
sdb1   8:17   1  200M  0 part            9ABC-DEF0                            vfat

相关内容