[[Diskussion(154999,[neuer Artikel] UUID)]] [[InArbeit(~,Pumbaa80)]] [[Getestet(general)]] {{{#!Wissen * [1]: [:Terminal: Ein Terminal öffnen] }}} [[TableOfContents(1)]] '''UUID''' steht für '''U'''niversally '''U'''nique '''Id'''entifier und bezeichnet nach einem bestimmten Standard formatierte Identifikationsnummern. Diese sehen etwa so aus: `6a12a4d5-e9e6-4568-afcc-34c70b24a668` UUIDs werden üblicherweise mit Verfahren erzeugt, die darauf ausgelegt sind, dass ein solcher Identifikator eindeutig ist. Die Wahrscheinlichkeit, dass zwei generierte UUIDs gleich sind, ist also verschwindend gering. Jedes Linux-Dateisystem besitzt einen UUID, über den es identifiziert werden kann. Zwar kann man das auch über die Device-Dateien `/dev/sdaX` tun, aber die Numerierung kann sich hier ändern - z.B. beim Vertauschen von Kabeln. Andere Eigenschaften wie [:Labels:Label] oder Größe des Dateisystems garantieren keine Eindeutigkeit. Vergleichen kann man den UUID also mit einer Personalausweisnummer: zwei Personen können den gleichen Namen tragen, sie haben aber trotzdem verschiedene Ausweisnummern. Seit [:Feisty Fawn:] werden die im System vorhandenen Dateisysteme (inklusive SWAP) in der [:fstab:] und in der [:menu.lst:] standardmäßig mittels UUID angesprochen. Die Windows-Dateisysteme FAT und NTFS verwenden keine UUIDs, sondern die "Volume Serial Number". Unter Linux wird diese vom Dateisystemtreiber als UUID-Ersatz verwendet. Die Volume Serial Number ist deutlich kürzer als ein UUID, und garantiert daher keine Eindeutigkeit: ||<-4 rowclass="titel">Vergleich verschiedener Identifikatoren|| || Typ||UUID||Serial Number (NTFS)||Serial Number (FAT)|| ||Format||xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx||xxxxxxxxxxxxxxxx||xxxx-xxxx|| ||Länge||16 Bytes||8 Bytes||4 Bytes|| ||Anzahl der möglichen Identifikatoren||2^8·16^=3.4·10^38^||2^8·8^=18·10^18^||2^8·4^=4.3·10^9^|| [[Anchor(anzeigen)]] = UUIDs anzeigen = Mit dem Befehl [1] {{{#!Befehl sudo vol_id /dev/sda1 }}} erhält man den UUID (und weitere Details) des Dateisystems auf `/dev/sda1`. Alle UUIDs der eingehängten Dateisysteme liefert {{{#!Befehl blkid }}} oder {{{#!Befehl ls -Al /dev/disk/by-uuid }}} [[Anchor(aendern)]] = UUIDs verändern = [[Fortgeschritten]] Der UUID wird beim Formatieren eines Laufwerks automatisch generiert und muss normalerweise nicht geändert werden. In gewissen Fällen kann dies aber sinnvoll sein, z.B. nach einer Festplattenspiegelung, bei der der UUID mitkopiert wurde. Je nach verwendetem Dateisystem sind hierfür unterschiedliche Befehle erforderlich. Generell sollte man jedoch unbedingt ein [:Backup:] anlegen, und das Dateisystem [:mount#umount:aushängen]. {{{#!Hinweis Im folgenden muss `/dev/sdaX` jeweils durch die Bezeichung der zu ändernden Partition ersetzt werden. Unter Umständen benötigt man [:sudo:Root-Rechte]. }}} == Ext2/3 == {{{#!Befehl tune2fs -U NEUER_UUID /dev/sdaX }}} Hierbei kann `NEUER_UUID` entweder ein (z.B. mit `uuidgen`) selbst erstellter UUID sein, oder eines dieser Schlüsselworte: * `random` - setzt einen zufälligen UUID * `time` - setzt einen aus der aktuellen Uhrzeit generierten UUID * `clear` - entfernt den UUID == Reiserfs == {{{#!Befehl reiserfstune -u NEUER_UUID /dev/sdaX }}} `NEUER_UUID` muss ein gültiger UUID sein. Um automatisch mit `uuidgen` einen zufälligen UUID zu erzeugen, kann man diesen Befehl verwenden: {{{#!Befehl reiserfstune -u $(uuidgen) /dev/sdaX }}} == SWAP == Derzeit ist es nicht ohne weiteres möglich, den UUID der SWAP-Partition zu ändern. Eine Beta-Version eines Programms für diese Aufgabe findet man [https://bugs.launchpad.net/util-linux/+bug/186274 bei launchpad.net] {en} == FAT / NTFS == Wie bereits erwähnt, kommt bei den Windows-Dateisystemen kein UUID zum Einsatz, sondern eine Seriennummer. Um diese zu bearbeiten, benötigt man Handarbeit: Zunächst extrahiert man die aktuelle Serial mit {{{#!Befehl sudo dd if=/dev/sdaX of=/tmp/serial bs=1 skip=POS count=SIZE }}} Die Werte für `POS` und `SIZE` sind gemäß dieser Tabelle zu wählen: || ||FAT16||FAT32||NTFS|| ||POS||<)>39||<)>65||<)>72|| ||SIZE||<)>4||<)>4||<)>8|| Nun kann man die Datei '''/tmp/serial''' mit einem Hex-Editor (z.B. `ghex2` oder `khexedit`) öffnen und bearbeiten. Sie sollte nichts weiter als die Seriennummer im [http://de.wikipedia.org/wiki/Byte-Reihenfolge Little Endian-Format] {de} (also "rückwärts") enthalten. Jetzt nimmt man die gewünschten Änderungen mit dem Hex-Editor vor und speichert die Datei ab. Schließlich schreibt man mit {{{#!Befehl sudo dd if=/tmp/serial of=/dev/sdaX bs=1 seek=POS count=SIZE }}} die neue Seriennummer zurück. Die Werte für POS und SIZE müssen wieder wie oben gesetzt werden. {{{#!Hinweis Beim Auslesen der Seriennummer verwendet man den Parameter `skip=`, beim Schreiben `seek=` }}} = Links = * [http://de.wikipedia.org/wiki/Universally_Unique_Identifier Wikipedia-Artikel "UUID"] {de} * [http://technet2.microsoft.com/WindowsServer/en/library/50cd4ffc-1389-423d-9d02-1a898b2eb39f1033.mspx Technische Spezifikation FAT] {en} * [http://technet2.microsoft.com/WindowsServer/en/library/8cc5891d-bf8e-4164-862d-dac5418c59481033.mspx Technische Spezifikation NTFS] {en} ---- * [:Kategorie/Hardware:] * [:Kategorie/System:] ## vim:filetype=moin