Die Volume-ID von FAT32 wird im ersten Sektor bei Offset 67 (0x43) gespeichert, bei FAT16 bei 39 (0x27). Man kann den dd
verwenden Befehl zum Lesen (ersetzen Sie /dev/sdc1
mit Ihrer realen Partition):
dd bs=1 skip=67 count=4 if=/dev/sdc1 2>/dev/null \
| xxd -plain -u \
| sed -r 's/(..)(..)(..)(..)/\4\3-\2\1/'
Und natürlich kann man auch eine neue UUID hinterlegen (1234-ABCD
ersetzen mit Ihrem gewünschten Wert):
UUID="1234-ABCD"
printf "\x${UUID:7:2}\x${UUID:5:2}\x${UUID:2:2}\x${UUID:0:2}" \
| dd bs=1 seek=67 count=4 conv=notrunc of=/dev/sdc1
Referenz:Physikalische Struktur von FAT (Volume Serial Number offset):https://technet.microsoft.com/en-us/library/cc776720(v=ws.10).aspx#w2k3tr_fat_how_gkxz
Es kann hilfreich sein zu wissen, warum Sie dies tun möchten. Ich kenne kein Tool, mit dem Sie das tun können, was Sie möchten, aber es gibt möglicherweise andere Optionen ....
Technisch gesehen haben FAT-Partitionen keine UUIDs; sie haben Seriennummern, die mehrere Linux-Tools und -Dateien (wie mount
und /etc/fstab
) kann anstelle von UUIDs verwendet werden. Auf GPT-Datenträgern haben die Partitionen, die FAT-Dateisysteme enthalten, GUIDs, die (bei recht aktuellen Linux-Distributionen) als PARTUUIDs in mount
bezeichnet werden können und /etc/fstab
. Beide FAT-Dateisysteme und (auf GPT-Festplatten) die Partitionen, die sie enthalten, können auch Namen haben, die auch von mount
verwendet werden können oder in /etc/fstab
. Jede dieser Funktionen kann anstelle der FAT-Seriennummer verwendet werden.
Obwohl ich kein Tool kenne, um die Seriennummern von FAT-Partitionen zu ändern, können sie gesetzt werden, wenn das Dateisystem über den -i
erstellt wird Option zu mkdosfs
, wie in:
mkdosfs -i ABCD1234 /dev/sdc1
Dieses Beispiel setzt die Seriennummer von /dev/sdc1
zu ABCD-1234. Wenn das Dateisystem klein genug ist, können Sie es sichern, ein neues Dateisystem mit der gewünschten Seriennummer erstellen und es wiederherstellen. Wenn Sie versuchen, die Seriennummer als Teil eines Datenträger- oder Installations-Setup-Skripts festzulegen, legen Sie sie über mkdosfs
fest könnte alles sein, was Sie brauchen.
Sie können die GUID der Partition mit gdisk
ändern oder sgdisk
. Mit letzterem würden Sie den Job über -u
erledigen Option, wie in:
sgdisk -u 1:BC87D91A-02F3-4C52-87CD-536A3DF2A074 /dev/sdc
Dieses Beispiel legt die GUID von /dev/sdc1
fest bis BC87D91A-02F3-4C52-87CD-536A3DF2A074. (Beachten Sie, dass -u
akzeptiert einen durch Doppelpunkte getrennten Satz von Optionen, von denen die erste die Partitionsnummer und die zweite der GUID-Wert ist. Der Gerätedateiname für das Whole-Disk-Gerät [nicht the partition] ist die letzte Option.)
Abhängig von Ihren Anforderungen kann einer dieser Ansätze funktionieren. Wenn Sie weiter weg gehen, können Sie das Label des Dateisystems mit dem dosfslabel
festlegen Werkzeug; oder Sie können den Namen einer GPT-Partition mit sgdisk
ändern ist -c
Option, die ähnlich wie -u
funktioniert , nimmt aber eher einen Namen als eine GUID.
Oft möchte man eine neue zufällige UUID für eine vfat-Partition setzen (anstatt eine bestimmte zu setzen), um beispielsweise Konflikte nach dem Duplizieren einer Partition mit dd
zu vermeiden . In diesem Fall ist eine einfache Lösung die Verwendung von gparted
:Rechtsklick auf die Partition, dann "Neue UUID".
@tarabyte schlägt vor, dass die meisten Leute auf diese Seite kommen und nach einer Möglichkeit ohne GUI (z. B. Befehlszeile) suchen, um dies auf einem Headless-Server zu tun. Wenn das der Fall ist, gparted
zeigt, dass der Befehl, der unter der Haube ausgeführt wird, wenn Sie das obige tun, ungefähr so ist:
sudo mlabel -s -n :: -i /dev/nvme0n1p6