Was ist der Unterschied zwischen UUID und PARTUUID?

14

Ich habe die Prozedur in den Himbeer-Pi-Foren befolgt , um meinen Himbeer-Pi 3 dazu zu bringen, einen USB-Stick anstelle der SD-Karte als Root-Dateisystem zu verwenden, in der Hoffnung, dass er robuster gegen Stromausfall ist.

Der Prozess hat funktioniert, aber ich habe Zeit verloren, weil ich UUID und PARTUUID für die Partition verwechselt habe (verwenden Sie blkid und sehen Sie, wie sie unterschiedlich sein können). Was ist der Zweck von beiden? Es war einfacher, meine Verwirrung durch die Verwendung von UUID anstelle von PARTUUID überall zu beheben, aber das schlug fehl, ich musste PARTUUID verwenden (ich denke, es wäre möglich gewesen, eine Mischung zu verwenden, aber ich habe nicht versucht, nach einer zu suchen).

Beachten Sie, dass die angeführte Seite darauf hinweist, dass die UUID für das Laufwerk PARTUUID für die Partition ist, aber dann würde ich erwarten, dass die UUID für alle Partitionen eines Laufwerks gleich ist. Dies ist nicht der Fall.

Ein Programmierer
quelle
1
Hallo AProgrammer, und willkommen beim Raspberry Pi Stack Exchange. Ich denke, Sie sollten bedenken, dass dies keine Frage zu Raspberry Pi ist! Mehr Leute würden diese Frage sehen (sowohl um sie zu beantworten als auch um von den angebotenen Antworten zu profitieren), wenn sie vielleicht im Hauptforum von Linux wäre.
Tai Viinikka
@TaiViinikka, ich gebe zu, dass ich zwischen this und unix.se gezögert habe, aber in Anbetracht dessen, dass ich das Problem mit einem Himbeer-Pi getroffen habe und dass ich das Problem nie getroffen habe, nachdem ich 23 Jahre lang mit Debian und von Debian abgeleiteten Distributionen auf x86 gearbeitet habe, einschließlich UUID ohne Als ich es traf - meine Reflexe waren Teil der Ursache meines Problems -, dachte ich, dass es eine Beziehung zu Himbeer-Pi geben könnte.
AProgrammer
Das ist ziemlich verständlich und ich bin froh, dass Sie eine Antwort bekommen haben. Meine [viel kürzeren] Erfahrungen waren anders als deine; Auf jeder meiner Partitionen stimmen UUID und PARTUUID nicht überein: root @ herald: ~ # cat / proc / cpuinfo vendor_id: GenuineIntel-Modellname: Intel (R) Atom (TM) -CPU D2550 @ 1,86 GHz root @ herald: ~ # blkid / dev / sda1: LABEL = "Boot" UUID = "e92827af-6c5d-4438-b22a-8f9b3b4dc4f0" TYPE = "ext4" PARTUUID = "44e5688f-01" Und so kam ich zu dem gegenteiligen Ergebnis.
Tai Viinikka

Antworten:

13

Ein Unterschied zwischen UUID und PARTUUID

Sie können einige Hinweise zum Unterschied zwischen UUIDund erhalten, PARTUUIDindem Sie die -pOption angeben.

blkid -p /dev/sda1

oder welches Gerät / Partition Sie suchen. Möglicherweise haben Sie festgestellt, dass bei mehreren Partitionen auf demselben UUIDGerät PARTUUIDdie Partition mit der angehängten Partitionsnummer meistens identisch ist.

A UUIDist garantiert einzigartig. Soweit ich weiß, werden Kollisionen nicht zu Lebzeiten des Universums auftreten. Sie werden jedoch feststellen, dass das PARTUUIDviel kürzer ist. Diese sollen "lokal" eindeutig sein, und Kollisionen treten höchstwahrscheinlich zwischen allen bekannten auf PARTUUIDs.

Auf UUIDs

Eine UUID ist einfach eine eindeutige Kennung. Sie werden für viele verschiedene Zwecke verwendet. Sie können sie mit der uuidgenFunktion erzeugen .

Weitere Informationen zu UUIDs:

$man uuidgen 

Oder Internet:

manpage für uuidgen

Einige weitere UUID verwenden Beispiele

$cat /etc/fstab

Bei neueren GNU / Linux-Systemen erhalten Sie eine Liste aller Partitionen und ihrer UUIDs. Für jede neue Partition wird eine neue UUID generiert. Wenn Sie also ein bestimmtes Laufwerk neu partitionieren, ändern sich alle blkid-UUIDs für dieses Laufwerk.

UUIDs werden unter anderem als Bezeichner für Partitionen und Laufwerke verwendet, um Bezeichner auch dann beizubehalten, wenn Laufwerke in einer anderen Reihenfolge hinzugefügt oder bereitgestellt werden. Früher hatten die fstabBezeichner wie /dev/sda1... Dies hatte den Nachteil, dass es sda1sich möglicherweise um ein physikalisch anderes Laufwerk oder eine andere Partition handelte, wenn die Mount-Reihenfolge geändert wurde.

Auf PARTUUIDs

PARTUUIDs sind eine Komponente der GUID-Partitionstabellen (GPT), die die MBR-bezogene Festplattenpartitionierung (Master Boot Record) ersetzen.

Weitere Informationen finden Sie unter Linux.com - Verwenden der neuen GUID-Partitionstabelle unter Linux

Linux.com sagt:

Die GPT-GUIDs (Globally Unique Identifiers) und unsere bekannten Linux-UUIDs (Universally Unique Identifiers) sind nicht dasselbe, obwohl sie demselben nützlichen Zweck dienen: eindeutigen Namen für Blockgeräte. Linux-UUIDs sind eine Funktion von Dateisystemen und werden beim Erstellen des Dateisystems erstellt. Um Linux-UUIDs anzuzeigen, rufen Sie einfach den Befehl blkid auf. Notieren Sie sich den Partitions-GUID-Code und die Angabe "Microsoft-Basisdaten". Ja, ole Microsoft stürzt immer ab, weil dies eine EXT4-Partition ist, so dass Windows sie nicht lesen kann, sondern als unformatierte Partition ansieht. Dies wird bei aktuellen Versionen von gdisk nicht angezeigt, da es bis 2011 keine GUIDs für Linux-Dateisysteme gab. Wenn Sie also kein altes Linux wie das meine (Mint 13) verwenden,

Die eindeutige GUID der Partition wird in fstab folgendermaßen verwendet:

PARTUUID = 8C208C30-4E8F-4096-ACF9-858959BABBAA / data ext4 Benutzer, Standard 0 0

Stempel
quelle
Das Geheimnis vertieft sich. Bei mehreren Blockgeräten gibt es eine Geräte-PTUUID und eine UUID und eine PARTUUID pro Partition. Abhängig von der Festplatte und wahrscheinlich dem Tool, das sie formatiert und partitioniert hat, wird die PARTUUID von der Festplatten-PTUUID abgeleitet oder nicht. Meine Frage betraf die Partitions-UUID, mit der Sie mit der PARTUUID auskommen können blkid.
AProgrammer
@AProgrammer: Einige Informationen zu meiner Antwort hinzugefügt.
RubberStamp
1
Ok, zusammenfassend gibt es eine Festplatten-UUID, mit blkid -pder Sie die PTUUID aufrufen können, es gibt eine Partitions-UUID, blkiddie PARTUUID aufruft, und einige Dateisysteme haben eine UUID, die blkid UUID aufruft. Ich bin immer noch unklar, warum ich die PARTUUID anstelle der UUID verwenden musste, zumindest an einigen Stellen, wenn ich das Root-Dateisystem auf einen USB-Stick auf der Himbeere übersetze, wenn mein Linux-System nur auf die UUID verweist, aber ich bin nicht freiwillig um noch ein paar Tests zu machen und zu überprüfen, wo wirklich PARTUUID benötigt wird und wo ich die UUID noch verwenden könnte, wenn ich wollte, aber ich vermute, dass sie nur cmdline.txtbenötigt wird.
Programmierer
Ich habe zwei Partitionen auf zwei verschiedenen Festplatten mit der gleichen UUID. Soviel zum " Leben des Universums " ...
étale-cohomology
3

So wie ich es verstehe.

Der Begriff UUID bezieht sich im Allgemeinen auf eine "universell eindeutige Kennung", die in der Windows-Welt als GUID bezeichnet wird. Es gibt ein paar verschiedene Schemata, aber die meisten modernen UUIDs / GUIDs bestehen im Wesentlichen aus einer großen Zufallszahl oder einem Hash und einigen Flag-Bits.

Im speziellen Fall des Einbindens von Dateisystemen unter Linux bezieht sich "UUID" auf eine eindeutige Kennung, die Teil der im Dateisystem gespeicherten Metadaten ist. "PARTUUID" bezieht sich auf eine eindeutige Kennung für eine Partition, die in der Partitionstabelle gespeichert oder von dieser abgeleitet ist.

Diese eindeutigen Bezeichner können tatsächliche UUIDs sein oder nicht. Soweit ich sagen kann.

  • Bei GPT-Partitionstabellen ist die "PARTUUID" die GUID aus der GPT-Partitionstabelle.
  • Bei MBR-Partitionstabellen wird die "PARTUUID" durch Verketten der Plattenkennung mit der Partitionsnummer gebildet
  • Für EXT4, Linux-Swap, BTRFS und möglicherweise andere linux-native Dateisystemtypen ist die "UUID" eine UUID, die in den Metadaten des Dateisystems gespeichert ist.
  • Für FAT und NTFS scheint die "UUID" die Seriennummer des Volumes zu sein, 32 Bit für FAT und 64 Bit für NTFS.

Beachten Sie, dass die Unterstützung für das Mounten des Root-Dateisystems nach "UUID" und "PARTUUID" unterschiedlich ist. IIRC Der Kernel, der ohne eine initrd läuft, kann über "PARTUUID", aber nicht über "UUID" gemountet werden. Ältere Versionen von initramfs-tools können mit "UUID", aber nicht mit "PARTUUID" gemountet werden, die neueren initramfs-tools unterstützen beides.

Peter Green
quelle