Lösung 1:
Ein weiterer Befehl, der möglicherweise verfügbar ist und auch recht gut funktioniert, ist „blkid“. Es ist Teil des e2fsprogs-Pakets. Anwendungsbeispiele:
Suchen Sie Daten auf /dev/sda1:
[email protected]:~$ sudo blkid /dev/sda1
/dev/sda1: UUID="727cac18-044b-4504-87f1-a5aefa774bda" TYPE="ext3"
UUID-Daten für alle Partitionen anzeigen:
[email protected]:~$ sudo blkid
/dev/sda1: UUID="727cac18-044b-4504-87f1-a5aefa774bda" TYPE="ext3"
/dev/sdb: UUID="467c4aa9-963d-4467-8cd0-d58caaacaff4" TYPE="ext3"
UUID-Daten für alle Partitionen in einem leichter lesbaren Format anzeigen:(Hinweis:in neueren Versionen blkid -L
hat eine andere Bedeutung und blkid -o list
sollte stattdessen verwendet werden)
[email protected]:~$ sudo blkid -L
device fs_type label mount point UUID
-------------------------------------------------------------------------------
/dev/sda1 ext3 / 727cac18-044b-4504-87f1-a5aefa774bda
/dev/sdc ext3 /home 467c4aa9-963d-4467-8cd0-d58caaacaff4
Zeige nur die UUID für /dev/sda1 und sonst nichts:
[email protected]:~$ sudo blkid -s UUID -o value /dev/sda1
727cac18-044b-4504-87f1-a5aefa774bda
Lösung 2:
Nur für GPT-partitionierte Festplatten
Auf einer GPT-formatierten Festplatte wird jeder Partition eine GUID zugewiesen, die eine Form der UUID ist, obwohl sie sich wahrscheinlich nicht auf das ursprüngliche Poster bezog. Daher ist diese Antwort für den ursprünglichen Fragesteller wahrscheinlich weniger hilfreich. Trotzdem glaube ich, dass es einen wichtigen Unterschied zu beachten gilt.
So erhalten Sie die GUID von Partition 1 auf der GPT-formatierten Festplatte /dev/sda, sowie ihre Partitionsbezeichnung und so weiter:
sudo sgdisk -i 1 /dev/sda
oder alle mit:
ls -l /dev/disk/by-partuuid
Um mit dem Stammverzeichnis des Dateisystems zu booten, das sich auf einer bestimmten Partition befindet, würden Sie die Parametersyntax des Linux-Kernels verwenden:
root=PARTUUID=87654321-4321-4321-abcd-123456789012
In diesem Fall können Sie nur den Anfang der UUID angeben – genug, um eindeutig zu sein. Dieser Parameter ist primitiver und kann vom Kernel früher in seinem Boot-Prozess verstanden werden.
Es gibt einen Unterschied in der Semantik zwischen diesen:
Eine Festplatte enthält Partitionen, eine Partition enthält ein Dateisystem, ein Dateisystem enthält Verzeichnisse und Dateien. Für einige Setups und Betriebssysteme gibt es mehrere Schichten.
Die GUID UUID und die zugehörige Bezeichnung beziehen sich auf eine Partition, aber nicht auf den Inhalt der Partition. Eine neue Partition auf derselben Festplatte oder eine Partition auf einer neuen Festplatte hat eine neue GUID UUID. Dieselbe Partition könnte an einem Tag ein Dateisystem und an einem anderen Tag ein anderes enthalten. Es existiert nur für GPT-formatierte Festplatten, aber nicht für ältere partitionierte Festplatten. Hier gibt es normalerweise nicht mehr Nutzen als die Angabe von root=/dev/sda1
oder root=8:1
.
Die anderen aktuellen Antworten beziehen sich auf die UUID eines Dateisystems in einer enthaltenden Partition. Wenn das Dateisystem als Ganzes auf eine andere Partition oder Festplatte kopiert wird, bleibt dieser Wert gleich. Diese UUID ist nützlich, um ein verschobenes Dateisystem zu finden. Daher ist dies wahrscheinlich für die meisten Menschen relevanter. Linux-Kernel-Parameter root=UUID=87654321-4321-4321-a567-123456789012
bezieht sich darauf.
Ich glaube root=LABEL=
und root=UUID=
werden von einem frühen Userspace implementiert, der Init-Code, den ich neulich auf meinem System gesehen habe, hat diese Parameter in /dev/disk/by-uuid und /dev/disk/by-label übersetzt (Links, von denen ich glaube, dass sie von udev im Userspace auf meinem erstellt werden System).
[1] http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/init/do_mounts.c#n183
Lösung 3:
Der script-saubere Weg, dies auf jedem Dateisystemtyp zu tun, ist:
lsblk -no UUID <device-containing-FS>
Oder, wenn der Einhängepunkt (oder eine Datei darin) gegeben ist:
lsblk -no UUID $(df -P <file> | awk 'END{print $1}')
Die Ausgabe ist die UUID, die gesamte UUID und nichts als die UUID.
Lösung 4:
Der einfachste Weg, dies für ext2/ext3/ext4 zu tun, ist:
/sbin/tune2fs -l /dev/sda1
Lösung 5:
Der empfohlene Weg, dies zu tun, ist
sudo vol_id -u /dev/sda2
Weitere Informationen zur Verwendung von UUIDs finden Sie in diesem Artikel (aus der Ubuntu-Hilfe, sollte aber für jede Linux-Distribution funktionieren, die UUIDs verwendet).
Wie in den Kommentaren zu dieser Frage erwähnt, befindet sich vol_id möglicherweise nicht in Ihrem Pfad. Unter Ubuntu befindet es sich in /sbin, sodass das obige funktioniert. Für Fedora scheint es
zu benötigensudo /lib/udev/vol_id -u /dev/sda2
Wenn andere Distributionen vol_id an anderen Stellen haben, posten Sie einen Kommentar und ich werde ihn dieser Antwort hinzufügen.