El ID de volumen de FAT32 se almacena en el primer sector en el desplazamiento 67 (0x43), para FAT16 está en 39 (0x27). Uno puede usar el dd
comando para leerlo (reemplace /dev/sdc1
con tu partición real):
dd bs=1 skip=67 count=4 if=/dev/sdc1 2>/dev/null \
| xxd -plain -u \
| sed -r 's/(..)(..)(..)(..)/\4\3-\2\1/'
Y, por supuesto, también se puede almacenar un nuevo UUID (reemplazar 1234-ABCD
con su valor deseado):
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
Referencia:estructura física FAT (compensación del número de serie del volumen):https://technet.microsoft.com/en-us/library/cc776720(v=ws.10).aspx#w2k3tr_fat_how_gkxz
Puede ser útil saber por qué desea hacer esto. No conozco una herramienta para hacer lo que quieres, pero puede haber otras opciones....
Técnicamente, las particiones FAT no tienen UUID; tienen números de serie, que varias herramientas y archivos de Linux (como mount
y /etc/fstab
) puede usar en lugar de UUID. En los discos GPT, las particiones que contienen sistemas de archivos FAT tienen GUID, que (en distribuciones de Linux lo suficientemente recientes) pueden denominarse PARTUUID en mount
y /etc/fstab
. Tanto los sistemas de archivos FAT como (en los discos GPT) las particiones que los contienen también pueden tener nombres, que también pueden ser utilizados por mount
o en /etc/fstab
. Cualquiera de estas características podría usarse en lugar del número de serie FAT.
Aunque no conozco una herramienta para cambiar los números de serie de las particiones FAT, se pueden configurar cuando se crea el sistema de archivos a través del -i
opción a mkdosfs
, como en:
mkdosfs -i ABCD1234 /dev/sdc1
Este ejemplo establece el número de serie de /dev/sdc1
a ABCD-1234. Si el sistema de archivos es lo suficientemente pequeño, puede hacer una copia de seguridad, crear un nuevo sistema de archivos con el número de serie deseado y restaurarlo. Si está intentando establecer el número de serie como parte de un disco o un script de configuración de instalación, configúrelo a través de mkdosfs
podría ser todo lo que necesitas.
Puede cambiar el GUID de la partición con gdisk
o sgdisk
. Usando este último, haría el trabajo a través del -u
opción, como en:
sgdisk -u 1:BC87D91A-02F3-4C52-87CD-536A3DF2A074 /dev/sdc
Este ejemplo establece el GUID de /dev/sdc1
a BC87D91A-02F3-4C52-87CD-536A3DF2A074. (Tenga en cuenta que -u
toma un conjunto de opciones delimitadas por dos puntos, la primera de las cuales es el número de partición y la segunda es el valor GUID. El nombre de archivo del dispositivo para el dispositivo de disco completo [no la partición] es la opción final.)
Dependiendo de sus necesidades, uno de estos enfoques puede funcionar. Moviéndose más lejos, puede establecer la etiqueta del sistema de archivos con el dosfslabel
herramienta; o puede cambiar el nombre de una partición GPT con sgdisk
de -c
opción, que funciona como -u
, pero toma un nombre en lugar de un GUID.
A menudo, es posible que desee establecer un nuevo UUID aleatorio para una partición vfat (en lugar de establecer uno específico), por ejemplo, para evitar conflictos después de duplicar una partición con dd
. En este caso, una solución simple es usar gparted
:haga clic derecho en la partición, luego "Nuevo UUID".
@tarabyte sugiere que la mayoría de las personas vengan a esta página buscando una forma sin GUI (por ejemplo, línea de comandos) de hacer esto en un servidor sin cabeza. Si ese es el caso, gparted
muestra que el comando que se ejecuta debajo del capó cuando se hace lo anterior es algo así como:
sudo mlabel -s -n :: -i /dev/nvme0n1p6