L'ID de volume de FAT32 est stocké dans le premier secteur au décalage 67 (0x43), pour FAT16, il est à 39 (0x27). On peut utiliser le dd
commande pour le lire (remplace /dev/sdc1
avec votre vraie partition) :
dd bs=1 skip=67 count=4 if=/dev/sdc1 2>/dev/null \
| xxd -plain -u \
| sed -r 's/(..)(..)(..)(..)/\4\3-\2\1/'
Et, bien sûr, on peut aussi stocker un nouvel UUID (remplace 1234-ABCD
avec la valeur souhaitée) :
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
Référence :structure physique FAT (décalage du numéro de série du volume) :https://technet.microsoft.com/en-us/library/cc776720(v=ws.10).aspx#w2k3tr_fat_how_gkxz
Il pourrait être utile de savoir pourquoi vous voulez faire cela. Je ne connais pas d'outil pour faire ce que vous voulez, mais il peut y avoir d'autres options....
Techniquement, les partitions FAT n'ont pas d'UUID; ils ont des numéros de série, que plusieurs outils et fichiers Linux (tels que mount
et /etc/fstab
) peuvent être utilisés à la place des UUID. Sur les disques GPT, les partitions qui contiennent les systèmes de fichiers FAT ont des GUID, qui (sur les distributions Linux assez récentes) peuvent être appelés PARTUUID dans mount
et /etc/fstab
. Les systèmes de fichiers FAT et (sur les disques GPT) les partitions qui les contiennent peuvent également avoir des noms, qui peuvent également être utilisés par mount
ou en /etc/fstab
. Chacune de ces fonctionnalités peut être utilisable à la place du numéro de série FAT.
Bien que je ne connaisse pas d'outil pour modifier les numéros de série des partitions FAT, ils peuvent être définis lors de la création du système de fichiers via le -i
option à mkdosfs
, comme dans :
mkdosfs -i ABCD1234 /dev/sdc1
Cet exemple définit le numéro de série de /dev/sdc1
à ABCD-1234. Si le système de fichiers est suffisamment petit, vous pouvez le sauvegarder, créer un nouveau système de fichiers avec le numéro de série souhaité et le restaurer. Si vous essayez de définir le numéro de série dans le cadre d'un disque ou d'un script de configuration d'installation, définissez-le via mkdosfs
pourrait être tout ce dont vous avez besoin.
Vous pouvez changer le GUID de la partition avec gdisk
ou sgdisk
. En utilisant ce dernier, vous feriez le travail via le -u
option, comme dans :
sgdisk -u 1:BC87D91A-02F3-4C52-87CD-536A3DF2A074 /dev/sdc
Cet exemple définit le GUID de /dev/sdc1
à BC87D91A-02F3-4C52-87CD-536A3DF2A074. (Notez que -u
prend un ensemble d'options délimitées par deux-points, dont la première est le numéro de partition et la seconde est la valeur GUID. Le nom de fichier de périphérique pour le périphérique de disque entier [pas la partition] est la dernière option.)
Selon vos besoins, l'une de ces approches peut fonctionner. En allant plus loin, vous pouvez définir l'étiquette du système de fichiers avec le dosfslabel
outil; ou vous pouvez changer le nom d'une partition GPT avec sgdisk
est -c
option, qui fonctionne un peu comme -u
, mais prend un nom plutôt qu'un GUID.
Souvent, on peut vouloir définir un nouvel UUID aléatoire pour une partition vfat (plutôt que d'en définir un spécifique), par exemple pour éviter les conflits après la duplication d'une partition avec dd
. Dans ce cas, une solution simple consiste à utiliser gparted
:clic droit sur la partition, puis "Nouvel UUID".
@tarabyte suggère que la plupart des gens viennent sur cette page à la recherche d'un moyen sans interface graphique (par exemple, en ligne de commande) de le faire sur un serveur sans tête. Si tel est le cas, gparted
montre que la commande qu'il exécute sous le capot lorsque vous faites ce qui précède ressemble à :
sudo mlabel -s -n :: -i /dev/nvme0n1p6