私のシステムにはいくつかのハードディスクパーティションがあります(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 [〜#〜] sは128ビット長であると想定されており、一意であることが意図されています。これ以前は、さまざまなシステムが、区別できるようにさまざまなサイズのさまざまなシリアル番号を提供していました。したがって、Linuxは、見つけたシリアルをすべて取得し、UUID定義と一致していなくても、/dev/by-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として表示できます。これらの2つのパーティションはFAT32である必要があるため、おそらくEFIシステムパーティションです。
代わりに blkid
コマンドを使用すると、より良い情報を取得できます(おそらく、いくつかの/dev/disks/by-*/
エントリを解析することで得られます)。
# 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