GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist der Zweck des Linux-Home-Partitionscodes 8302?

Es gibt keinen Zweck, nur Bequemlichkeit, und Sie können jeden beliebigen Code verwenden.

Ich zitiere unten eine großartige Antwort von Rod Smith, dem Autor von GPT fdisk, die das ganze Thema erklärt:

Die Antwort von kyodake ist richtig, aber auch eher MBR-zentriert. Unter GPT gelten die gleichen Prinzipien – das heißt, ein Partitionstypcode identifiziert den beabsichtigten Zweck einer Partition. Der Unterschied besteht darin, dass Codes vom GPT-Typ 128-Bit-GUIDs sind, im Gegensatz zu den 8-Bit-Codes, die unter MBR verwendet werden. Die Natur von GUIDs bedeutet, dass es nicht notwendig ist, Codes bei einer zentralen Autorität zu registrieren, um Kollisionen zu vermeiden; Es ist statistisch sehr unwahrscheinlich, dass zwei GUIDs versehentlich identisch sind.

AFAIK, es gibt kein offizielles Repository von GPT-Typcodes, aber sie sind auf der Wikipedia-Seite über GPT dokumentiert. Ein Nachteil von GPT-Typcodes ist, dass sie als GUIDs lang und umständlich sind – zum Beispiel 0FC63DAF-8483-4772-8E79 -3D69D8477DE4 für Linux-Dateisystemdaten gegenüber 0x83 für das MBR-Äquivalent. Daher verwenden die meisten Tools zum Partitionieren von GPT-Datenträgern eine Art „Kurzschrift“ oder „natürliche Sprachübersetzung“ in ihren Benutzeroberflächen. Ich bin der Autor von GPT fdisk, und mein Ziel beim Schreiben war es, etwas zu schaffen, das (MBR) fdisk ähnlich ist wie möglich habe ich den Ansatz gewählt, MBR-Codes als Basis zu verwenden; Da die Entsprechung zwischen GPT- und MBR-Typcodes jedoch nicht 1:1 ist, habe ich die MBR-Typcodes mit 0x100 multipliziert, um die GPT-Äquivalente zu erhalten. So wurde aus 0x83 des MBR 8300. Dies ermöglicht auch verwandte Folgecodes, die im MBR nicht vorhanden sind, wie 8301, 8302 usw. Diese Codes sind für Personen, die bereits mit den MBR-Äquivalenten vertraut sind, einfach zu verwenden, aber zugegebenermaßen willkürlich für Leute, die die MBR-Codes nicht kennen. Intern übersetzt GPT fdisk diese Codes in GUIDs. Sie können die tatsächlichen GUIDs sehen, indem Sie detaillierte Partitionsinformationen anzeigen (über die i Option in gdisk , zum Beispiel). Sie können auch eine beliebige GUID eingeben, anstatt die vierstelligen GPT-fdisk-Codes zu verwenden, wenn Sie möchten oder wenn Sie einen Code verwenden müssen, der von GPT fdisk nicht unterstützt wird.

Andere Tools verwenden andere Ansätze. Die Bibliothek libparted (und damit parted , GParted und andere Tools, die auf libparted basieren) übersetzt einige Typcodes zu "Flags" und blendet andere Codes vollständig aus. Dies hilft einigen Benutzern, die Dinge zu vereinfachen, macht aber einige Aufgaben unmöglich – zum Beispiel können Sie keinen beliebigen Typcode mit irgendetwas setzen, das auf libparted basiert. Das Festplattendienstprogramm von OS X übersetzt bekannte GUIDs in Klartextbeschreibungen. (IIRC, wenn Sie eine Partition erstellen, legt es einen geeigneten Typcode basierend auf dem in der Partition erstellten Dateisystem fest, ähnlich wie es GParted tut.)

Zum größten Teil verwendet Linux weder für MBR noch für GPT Typcodes. Das heißt, Sie können Ihr Standard-Linux-Dateisystem auf eine (GPTfdisk) 8300-Partition legen oder 0700 verwenden (wie es in der Vergangenheit üblich war) oder Ihre eigene zufällige GUID zuweisen. Ähnliche Kommentare gelten für RAID, LVM, Swap und andere Partitionstypen. Es gibt jedoch einige Ausnahmen von dieser Regel. Zum einen betrachten und setzen Installationsprogramme von Distributionen häufig Typcodes, sodass Sie möglicherweise den richtigen Typcode auf einer Partition benötigen, bevor er ordnungsgemäß verwendet wird. Eine weitere Ausnahme ist, dass Systemd damit beginnt, Typcodes als Fallback zu verwenden, wenn /etc/fstab ist nicht richtig konfiguriert. (Dort stammen die meisten 830x-Codes von GPT fdisk – sie sind Teil der Discoverable Partitions Specification, einer Freedesktop/systemd-Initiative.) Derzeit verwendet Ubuntu nur den Typcode des Haupt-Linux-Dateisystems (8300 in GPT fdisk) für Dateisysteme, plus die entsprechende Codes für LVM, RAID, Swap usw. Eine große Ausnahme von den Regeln „Linux verwendet keine Typcodes“ ist der BIOSBoot-Partitionscode (21686148-6449-6E6F-744E-656564454649; ef02 in GPTfdisk oder der bios_grub Flagge in libparted). Dieser Typcode identifiziert eine Partition, die von GRUB verwendet wird, und wenn Sie grub-install ausführen , installiert GRUB einen Teil von sich selbst auf dieser Partition. Wenn Sie GRUB auf einem BIOS-bootenden System mit einer GPT-Festplatte installieren, muss normalerweise eine BIOS-Bootpartition vorhanden sein. (Es gibt jedoch Möglichkeiten, diese Regel zu umgehen.) Wichtiger noch:Wenn Sie diesen Typcode versehentlich auf die falsche Partition setzen, wird diese Partition beschädigt, wenn Sie GRUB installieren! Ich habe viele Leute in verschiedenen Onlineforen gesehen, die diesen Fehler gemacht haben.

Wo Typcodes wichtiger werden, ist der Umgang mit anderen Betriebssystemen. Windows und OS X neigen beispielsweise dazu, Partitionen mit Typencodes, die sie nicht erkennen, nicht anzufassen. Ihre Liste der Typcodes schließt gängige Linux-spezifische Typcodes aus, sodass die Verwendung eines Linux-spezifischen Typcodes dazu beiträgt, das Risiko zu verringern, dass Windows oder OS X Ihre Ubuntu-Installation zerstören. Diese Betriebssysteme kümmern sich jedoch nicht darum, ob Sie den GPT-Code fdisk8300 oder fd00 verwenden. Es können Probleme auftreten, wenn Sie Codes verwenden, die von diesen anderen Betriebssystemen erkannt werden. Beispielsweise existierte die Linux-Dateisystemtyp-GUID (0FC63DAF-8483-4772-8E79-3D69D8477DE4) einmal nicht. Ich habe es erstellt und sowohl in meine eigene GPT fdisk als auch in meine libparted geschoben, weil die gängige Praxis, den Typcode „Microsoft BasicData“ (EBD0A0A2-B9E5-4433-87C0-68B6B72699C7) zu verwenden, Probleme in Dual-Boot-Setups verursachte. Bestimmte Windows-Tools würden insbesondere davon ausgehen, dass die Linux-Partition eine beschädigte oder nicht initialisierte Windows-Partition ist, und anbieten, sie vorzubereiten. Ein Benutzerfehler an dieser Eingabeaufforderung wäre katastrophal. Weitere Informationen zu diesem Thema finden Sie auf dieser Seite von mir.


Der Zweck der in der Spezifikation für erkennbare Partitionen definierten Linux-Partitionstypcodes besteht darin, das Schreiben von /etc/fstab zu ermöglichen für die meisten Systeme obsolet. Es ist ein Fall von Konvention über Konfiguration.

Systemd hat systemd-gpt-auto-generator hinzugefügt zurück im Jahr 2014 in Version 211. Dieser Generator erstellt .mount Einheiten von GPT-Partitionen auf dem Startlaufwerk.

Sie können diese Codes also heute auf Ihrem GPT-partitionierten Laufwerk verwenden, berühren Sie nicht /etc/fstab überhaupt (es kann völlig leer sein) und immer noch separate Partitionen für /home haben , /srv , /var , /var/tmp die automatisch erkannt und gemountet werden. Diese Partitionen können jedes unterstützte Dateisystem haben. Sie können auch LUKS-verschlüsselt sein. Swap-Partitionen werden ebenfalls automatisch erkannt.

Der Einfachheit halber hängt der Generator auch die EFI-Systempartition unter /boot ein in den meisten Fällen.

Theoretisch können Sie auch die / entdecken lassen (Root-)Partition, aber das ist etwas komplizierter. Ich würde vermuten, dass in den meisten Situationen immer noch ein initramfs erforderlich ist. Ansonsten die root=/dev/whatever Kernel-Parameter ist immer noch erforderlich.


Die Notwendigkeit eines Codes für /home und andere Partitionen wird hier von Rod Smith angegeben, der den Code von gpt fdisk erstellt hat und bis heute (2020) dazu beigetragen hat. Das ist von ihm im Jahr 2011:

Ich habe kürzlich festgestellt, dass, wenn Windows eine GPT-Festplatte mit Linux-Partitionen darauf liest, diese Partitionen Laufwerksbuchstaben erhalten und als unformatiert angezeigt werden. Diese Situation kann bei Wechseldatenträgern oder beim Dual-Boot von Linux und Windows auf einem UEFI-basierten Computer auftreten. Da UEFI immer häufiger verwendet wird, tritt auch diese Situation häufiger auf. Dies erscheint mir wie eine Katastrophe, die darauf wartet, passiert zu werden; Früher oder später wird jemand eine Linux-Installation ruinieren, indem er sich dafür entscheidet, eine Linux-Partition in Windows zu formatieren.

Dieses Problem tritt auf, weil Linux-Partitionierungstools (libparted und meine eigene GPT fdisk) Linux-Partitionen dieselbe Partitionstypcode-GUID geben, die von Windows für seine Dateisystempartitionen verwendet wird (EBD0A0A2-B9E5-4433-87C0-68B6B72699C7). Linux hat seine eigenen GUID-Typcodes für andere Partitionstypen wie RAID, LVM und Auslagerungsspeicher.

Daher scheint es mir, dass Linux eine eigene Partitionstypcode-GUID für Dateisystempartitionen auf GPT-Festplatten benötigt, ähnlich wie es einen eigenen MBR-Partitionstypcode für Dateisysteme hat (0x83 auf MBR). Ich würde gerne eine solche Änderung in meinem eigenen Programm implementieren, aber ich möchte dies nicht einseitig tun. Unter der Annahme, dass es kein ungewöhnliches Protokoll zum Erstellen von Code-GUIDs für Partitionstypen gibt, schlage ich vor, Folgendes zu verwenden:

0FC63DAF-8483-4772-8E79-3D69D8477DE4

Das ist nur eine partitionsspezifische GUID für eine Partition, die ich auf einer Testfestplatte mit GNU Parted 3.0 erstellt habe.

Wenn Sie sich den Code von parttypes.cc ansehen, werden Sie alle Codes für Linux und andere bemerken.

Liste der Linux-Partitionscodes

0x8200, "0657FD6D-A4AB-43C4-84E5-0933C84B4F4F", "Linux swap"); // Linux swap (or Solaris on MBR)
0x8300, "0FC63DAF-8483-4772-8E79-3D69D8477DE4", "Linux filesystem"; // Linux native
0x8301, "8DA63339-0007-60C0-C436-083AC8230908", "Linux reserved";
0x8302, "933AC7E1-2EB4-4F13-B844-0E14E2AEF915", "Linux /home"; // Linux /home (auto-mounted by systemd)
0x8303, "44479540-F297-41B2-9AF7-D131D5F0458A", "Linux x86 root (/)"; // Linux / on x86 (auto-mounted by systemd)
0x8304, "4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709", "Linux x86-64 root (/)"; // Linux / on x86-64 (auto-mounted by systemd)
0x8305, "B921B045-1DF0-41C3-AF44-4C6F280D3FAE", "Linux ARM64 root (/)"; // Linux / on 64-bit ARM (auto-mounted by systemd)
0x8306, "3B8F8425-20E0-4F3B-907F-1A25A76F98E8", "Linux /srv"; // Linux /srv (auto-mounted by systemd)
0x8307, "69DAD710-2CE4-4E3C-B16C-21A1D49ABED3", "Linux ARM32 root (/)"; // Linux / on 32-bit ARM (auto-mounted by systemd)
0x8308, "7FFEC5C9-2D00-49B7-8941-3EA10A5586B7", "Linux dm-crypt";
0x8309, "CA7D7CCB-63ED-4C53-861C-1742536059CC", "Linux LUKS";
0x830A, "993D8D3D-F80E-4225-855A-9DAF8ED7EA97", "Linux IA-64 root (/)"; // Linux / on Itanium (auto-mounted by systemd)
0x830B, "D13C5D3B-B5D1-422A-B29F-9454FDC89D76", "Linux x86 root verity";
0x830C, "2C7357ED-EBD2-46D9-AEC1-23D437EC2BF5", "Linux x86-64 root verity";
0x830D, "7386CDF2-203C-47A9-A498-F2ECCE45A2D6", "Linux ARM32 root verity";
0x830E, "DF3300CE-D69F-4C92-978C-9BFB0F38D820", "Linux ARM64 root verity";
0x830F, "86ED10D5-B607-45BB-8957-D350F23D0571", "Linux IA-64 root verity";
0x8310, "4D21B016-B534-45C2-A9FB-5C16E091FD2D", "Linux /var"; // Linux /var (auto-mounted by systemd)
0x8311, "7EC6F557-3BC5-4ACA-B293-16EF5DF639D1", "Linux /var/tmp"; // Linux /var/tmp (auto-mounted by systemd)

Linux
  1. Was Linux zum nachhaltigen Betriebssystem macht

  2. Was macht die Linux-Community besonders?

  3. Linux vs. Unix:Was ist der Unterschied?

  4. Was ist der aktuelle Runlevel des Linux-Systems?

  5. Was ist der Zweck der .bash_profile-Datei im Benutzer-Home-Verzeichnis in Linux

Was ist der Linux-Überwachungsbefehl + Beispiele

Was ist die Shell unter Linux?

Was ist der Kill-Befehl in Linux?

Was ist der richtige Weg, um jdk unter Linux zu installieren?

Was ist das einfachste Linux-fähige Board, das ich zu Hause herstellen könnte?

Was ist die Partitions-ID / der Dateisystemtyp für UDF?