L'ID volume di FAT32 è memorizzato nel primo settore all'offset 67 (0x43), per FAT16 è a 39 (0x27). Si può usare il dd
comando per leggerlo (sostituisci /dev/sdc1
con la tua vera partizione):
dd bs=1 skip=67 count=4 if=/dev/sdc1 2>/dev/null \
| xxd -plain -u \
| sed -r 's/(..)(..)(..)(..)/\4\3-\2\1/'
E, naturalmente, si può anche memorizzare un nuovo UUID (sostituire 1234-ABCD
con il valore desiderato):
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
Riferimento:struttura fisica FAT (offset del numero di serie del volume):https://technet.microsoft.com/en-us/library/cc776720(v=ws.10).aspx#w2k3tr_fat_how_gkxz
Potrebbe essere utile sapere perché vuoi farlo. Non conosco uno strumento per fare quello che vuoi, ma potrebbero esserci altre opzioni....
Tecnicamente, le partizioni FAT non hanno UUID; hanno numeri di serie, che diversi strumenti e file Linux (come mount
e /etc/fstab
) può essere utilizzato al posto degli UUID. Sui dischi GPT, le partizioni che contengono filesystem FAT hanno GUID, che (su distribuzioni Linux abbastanza recenti) possono essere indicati come PARTUUID in mount
e /etc/fstab
. Sia i filesystem FAT che (sui dischi GPT) le partizioni che li contengono possono avere anche dei nomi, che possono essere usati anche da mount
o in /etc/fstab
. Ognuna di queste funzionalità potrebbe essere utilizzabile al posto del numero di serie FAT.
Anche se non conosco uno strumento per modificare i numeri di serie delle partizioni FAT, possono essere impostati quando il filesystem viene creato tramite -i
opzione a mkdosfs
, come in:
mkdosfs -i ABCD1234 /dev/sdc1
Questo esempio imposta il numero di serie di /dev/sdc1
all'ABCD-1234. Se il filesystem è abbastanza piccolo, è possibile eseguirne il backup, creare un nuovo filesystem con il numero di serie desiderato e ripristinarlo. Se stai tentando di impostare il numero di serie come parte di uno script di configurazione del disco o dell'installazione, impostalo tramite mkdosfs
potrebbe essere tutto ciò di cui hai bisogno.
Puoi cambiare il GUID della partizione con gdisk
o sgdisk
. Usando quest'ultimo, faresti il lavoro tramite -u
opzione, come in:
sgdisk -u 1:BC87D91A-02F3-4C52-87CD-536A3DF2A074 /dev/sdc
Questo esempio imposta il GUID di /dev/sdc1
a BC87D91A-02F3-4C52-87CD-536A3DF2A074. (Notare che -u
accetta una serie di opzioni delimitate da due punti, la prima delle quali è il numero di partizione e la seconda è il valore GUID. Il nome file del dispositivo per il dispositivo a disco intero [not la partizione] è l'ultima opzione.)
A seconda delle tue esigenze, uno di questi approcci potrebbe funzionare. Andando più in là, puoi impostare l'etichetta del filesystem con dosfslabel
attrezzo; oppure puoi cambiare il nome di una partizione GPT con sgdisk
è -c
opzione, che funziona in modo molto simile a -u
, ma accetta un nome anziché un GUID.
Spesso si potrebbe voler impostare un nuovo UUID casuale per una partizione vfat (piuttosto che impostarne uno specifico), ad esempio per evitare conflitti dopo aver duplicato una partizione con dd
. In questo caso, una soluzione semplice è usare gparted
:clic destro sulla partizione, quindi "Nuovo UUID".
@tarabyte suggerisce che la maggior parte delle persone viene su questa pagina alla ricerca di un modo senza GUI (ad esempio riga di comando) per farlo su un server headless. Se è così, gparted
mostra che il comando che sta eseguendo sotto il cofano quando si esegue quanto sopra è qualcosa del tipo:
sudo mlabel -s -n :: -i /dev/nvme0n1p6