Disk

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

  • April 13, 2019

我的系統上有幾個硬碟分區(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?

實際的UUID應該是 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(獲取系統日期)返回的兩個 DX 值相加的 16 位相加創建的

$$ nb 7 $$和 INT 21h/AH=2Ch(獲取系統時間)$$ nb 7 $$序列號的高位字和兩個 CX 值的另一個 16 位相加。或者,某些 DR-DOS 磁碟實用程序提供 /# 選項,以生成人類可讀的時間戳“mmdd-hhmm”,該時間戳從 BCD 編碼的 8 位值(月、日、小時和分鐘)而不是序列號生成。

這是一個 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

引用自:https://unix.stackexchange.com/questions/512283