Ich verwende Ubuntu und möchte das UUID
eines bestimmten Dateisystems (nicht einer Partition) herausfinden . Ich weiß, dass ich e2label /dev/sda1
das Dateisystem-Label mit herausfinden kann, aber es scheint keinen ähnlichen Weg zu geben, das zu finden UUID
.
linux
command-line-interface
partition
Brad Gilbert
quelle
quelle
Antworten:
Ein weiterer Befehl, der verfügbar sein könnte und auch recht gut funktioniert, ist 'blkid'. Es ist Teil des e2fsprogs-Pakets. Beispiele für die Verwendung:
Daten in / dev / sda1 nachschlagen:
Zeigen Sie die UUID-Daten für alle Partitionen an:
Zeigen Sie die UUID-Daten für alle Partitionen in einem besser lesbaren Format an: (Hinweis: In neueren Versionen
blkid -L
hat sie eine andere Bedeutung undblkid -o list
sollte stattdessen verwendet werden.)Zeige nur die UUID für / dev / sda1 und sonst nichts:
quelle
blkid
Ich habe nur getippt und genau das bekommen, was ich wollte, aber nicht genau das, wonach ich gefragt habe. (Ich akzeptiere es trotzdem, weil ich sicher bin, dass ich es oft verwenden werde)blkid -L
jetztblkid -o list
; Die-L
Option wurde geändert,-L label
um ein Gerät zu suchen, das die angegebene Bezeichnung verwendet.blkid
. Danke, dass du es erwähnt hast.blkid
; Ich habe es immer gerade gemachtls -l /dev/disk/by-uuid
. Auf Gentooblkid
ist insys-apps/util-linux
Nur für GPT-partitionierte Festplatten
Auf einem mit GPT formatierten Datenträger wird jeder Partition eine GUID zugewiesen. Dies ist eine Form der UUID, obwohl dies wahrscheinlich nicht der Fall ist, auf den sich 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 gibt, der beachtet werden muss.
So rufen Sie die GUID von Partition 1 auf dem mit GPT formatierten Datenträger / dev / sda sowie die Partitionsbezeichnung usw. ab:
oder alle mit:
Um mit dem Stammverzeichnis des Dateisystems zu booten, das sich auf einer bestimmten Partition befindet, verwenden Sie die Linux-Kernel-Parametersyntax von:
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 zu einem früheren Zeitpunkt des Startvorgangs 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 Ebenen.
Die GUID-UUID und die zugehörige Bezeichnung beziehen sich auf eine Partition, nicht jedoch 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 kann ein Dateisystem an einem Tag und ein anderes an einem anderen Tag enthalten. Es ist nur für GPT-formatierte Datenträger verfügbar, nicht jedoch für ältere partitionierte Datenträger. Normalerweise gibt es hier keinen größeren Nutzen als die Angabe von
root=/dev/sda1
oderroot=8:1
.Die anderen aktuellen Antworten beziehen sich auf die UUID eines Dateisystems in einer enthaltenen 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 für die meisten Menschen wahrscheinlich relevanter. Der Linux-Kernel-Parameter
root=UUID=87654321-4321-4321-a567-123456789012
verweist darauf.Ich glaube , dass der Init-Code, den ich neulich auf meinem System gesehen habe, diese Parameter in / dev / disk / by-uuid und / dev / disk / by-label übersetzt hat
root=LABEL=
undroot=UUID=
von frühen Anwendern implementiert wurde (Links, von denen ich glaube, dass sie von udev in erstellt wurden) Userspace auf meinem System).[1] http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/init/do_mounts.c#n183
quelle
-i1
oder-i 1
im Gegensatz zu-i:1
sgdisk 1.0.1 zu sein.Die skriptbereinigte Methode, die auf jedem Dateisystem funktioniert, ist:
Oder geben Sie den Einhängepunkt (oder eine beliebige Datei darin) an:
Die Ausgabe ist die UUID, die gesamte UUID und nichts anderes als die UUID.
quelle
blkid
in der Antwort von @ christopher-cashell, weil Sie nicht root werden müssen. Für einen Mount - Punkt oder eine Datei besser machen:lsblk -no UUID $(findmnt -n -o SOURCE --target <file>)
.findmnt -n -o SOURCE --target ~
gibt:/dev/mapper/vg_svelte-home[/@home]
lsblk -no UUID $(findmnt -n -o SOURCE --target <file> | cut -d[ -f1)
sollte das Subvolume loswerden, wenn es vorhanden ist.Der einfachste Weg, dies für ext2 / ext3 / ext4 zu tun, ist:
quelle
Couldn't find valid filesystem superblock.
Der empfohlene Weg, dies zu tun, ist zu tun
Weitere Informationen zur Verwendung von UUIDs finden Sie in diesem Artikel (in der Ubuntu-Hilfe, sollte aber für jede Linux-Distribution mit UUIDs funktionieren).
Wie in den Kommentaren zu dieser Frage erwähnt, befindet sich vol_id möglicherweise nicht in Ihrem Pfad. Auf Ubuntu ist es in / sbin, so dass das oben beschriebene funktioniert. Für Fedora scheint es zu brauchen
Wenn andere Distributionen vol_id an anderen Stellen haben, posten Sie einen Kommentar und ich werde ihn zu dieser Antwort hinzufügen.
quelle
/sbin/vol_id
zu/lib/udev/vol_id
Das scheint bei mir zu funktionieren:
quelle
Angenommen, Sie möchten die UUID für sda1, können Sie Folgendes versuchen:
Passen Sie sda1 entsprechend an. Um die UUIDs für alle Partitionen zu erhalten, lassen Sie die Greps and Cuts wie folgt fallen:
Beispielausgabe für sda1 auf meinem Desktop:
Edit: Bitte beachten Sie, dass diese Lösung, während mehr gekünstelt als die udev-> vol_id ein, ist nicht Root - Rechte benötigen, funktioniert auf jedem Post 2005 oder so Kern, und stützt sich auf Werkzeuge , die in jeder Linux - Distribution, die standardmäßig in der Pfad für jeden Benutzer.
quelle
Sie können dies auch verwenden, um alle UUIDs zu drucken:
oder dieser wohl einfachere Befehl, der
sda1
durch das Gerät ersetzt wird, nach dem Sie suchen möchten:eine Anpassung der zweiten Methode zum Drucken aller UUIDs:
quelle
Das Obige scheint auf den meisten (alles was ich gefunden habe) Linux-Systemen über viele Jahre zu funktionieren. Es kann Fehler haben, ich weiß es nicht. Ich würde es vorziehen, die Seriennummer zu bekommen, aber ... das ist die UUID des Root-Dateisystems.
Wenn jemand eine Möglichkeit hat, die Seriennummer abzurufen, ohne root sein zu müssen (wie meine) und keine "ungewöhnlichen" Pakete zu installieren, die in verschiedenen Versionen von Unix unterschiedlich sind, würde ich es begrüßen - kann immer etwas lernen. Und ich bin mir bewusst, dass ich Dinge mische - das ist die UUID des Root-Dateisystems, keine Festplatte.
Der Zweck besteht übrigens darin, eine eindeutige Nummer pro Computer zu generieren, die nicht geändert werden kann (wie eine Festplatten-Seriennummer und wie MAC-Adressen vor langer Zeit).
Es wird zum Codieren von Software auf einem einzelnen Computer verwendet. Die MAC-Adresse war in Ordnung, bis sie es erlaubten, virtuell zu sein ... einige dürftige Kunden haben einfach ihre MAC-Adresse auf eine Konstante gesetzt (in verschiedenen Netzwerken natürlich) und mich nicht bezahlt.
In AIX gibt es einen einzigen Aufruf, um eine Nummer zu erhalten, die die Maschine identifiziert. Es ist mir egal, ob die Hardware- oder Software-Änderungen vorgenommen werden, daher habe ich keine Ahnung, wie sie vorgenommen werden. Wenn sich das Motherboard ändert, ändert sich die Anzahl. Und das ist mehr als selten.
quelle
Sie können Folgendes verwenden, um die UUID für ein bestimmtes Laufwerk abzurufen:
Oder Sie können dies verwenden, um alle UUIDs für die angehängten Medien aufzulisten.
quelle