No hay ningún propósito, solo conveniencia, y puede usar cualquier código que desee.
Cito a continuación una gran respuesta de Rod Smith, el autor de GPT fdisk, que explica todo el tema:
La respuesta de kyodake es correcta, pero también está bastante centrada en MBR. Bajo GPT, se aplican los mismos principios, es decir, un código de tipo de partición identifica el propósito previsto de una partición. La diferencia es que los códigos de tipo GPT son GUID de 128 bits, frente a los códigos de 8 bits utilizados en MBR. La naturaleza de los GUID significa que no es necesario registrar códigos con una autoridad central para evitar colisiones; estadísticamente, es muy poco probable que dos GUID sean idénticos por accidente.
AFAIK, no hay un repositorio oficial de códigos de tipo GPT, pero están documentados en la página de Wikipedia sobre GPT. Una desventaja de los códigos de tipo GPT es que, como GUID, son largos e incómodos, por ejemplo, 0FC63DAF-8483-4772-8E79 -3D69D8477DE4 para datos del sistema de archivos de Linux, frente a 0x83 para el equivalente de MBR. Por lo tanto, la mayoría de las herramientas para particionar discos GPT utilizan alguna forma de "taquigrafía" o "traducción de lenguaje natural" en sus interfaces de usuario. Soy el autor de GPT fdisk, y mi objetivo al escribirlo era crear algo similar a (MBR) fdisk
en la medida de lo posible, tomé el enfoque de usar códigos MBR como base; sin embargo, debido a que la correspondencia entre los códigos de tipo GPT y MBR no es 1:1, multipliqué los códigos de tipo MBR por 0x100 para obtener los equivalentes de GPT. Por lo tanto, MBR's0x83 se convirtió en 8300. Esto también habilita códigos de seguimiento relacionados que no existen en MBR, como 8301, 8302, etc. Estos códigos son fáciles de usar para personas que ya están familiarizadas con los equivalentes de MBR, pero readmitidamente arbitrario para las personas que no conocen los códigos MBR. Internamente, GPT fdisk traduce estos códigos a GUID. Puede ver los GUID reales consultando la información detallada de la partición (a través del i
opción en gdisk
, por ejemplo). También puede ingresar un GUID arbitrario en lugar de usar los códigos de cuatro caracteres de GPT fdisk, si lo desea o si necesita usar un código que GPT fdisk no admite.
Otras herramientas utilizan otros enfoques. La biblioteca libparted (y por lo tanto parted
, GParted y otras herramientas basadas en libparted) traducealgunos escriba códigos a "banderas" y oculta completamente otros códigos. Esto ayuda a simplificar las cosas para algunos usuarios, pero hace que algunas tareas sean imposibles; por ejemplo, no puede establecer un código de tipo arbitrario con nada basado en libparted. La Utilidad de disco de OS X traduce los GUID conocidos en descripciones de texto sin formato. (IIRC, cuando crea una partición, establece un código de tipo apropiado basado en el sistema de archivos creado en la partición, similar a lo que hace GParted).
En su mayor parte, Linux no utiliza códigos de tipo, ni para MBR ni para GPT. Es decir, puede colocar su sistema de archivos Linux estándar en una partición (GPTfdisk) 8300, o usar 0700 (como era común en el pasado), o asignar su propio GUID aleatorio. Se aplican comentarios similares a RAID, LVM, intercambio y otros tipos de partición. Sin embargo, hay algunas excepciones a esta regla. Por un lado, los instaladores de distribución a menudo miran y establecen códigos de tipo, por lo que es posible que necesite el código de tipo correcto en una partición antes de que se use correctamente. Otra excepción es que systemd está comenzando a utilizar códigos de tipo como respaldo si /etc/fstab
no está configurado correctamente. (Ahí es donde se originan la mayoría de los códigos 830x de GPT fdisk; son parte de la especificación de particiones detectables, que es una iniciativa de Freedesktop/systemd). Actualmente, Ubuntu solo usa el código de tipo de sistema de archivos principal de Linux (8300 en GPT fdisk) para códigos apropiados para LVM, RAID, intercambio, etc. Una gran excepción a las reglas "Linux no usa códigos de tipo" es el código de partición BIOSBoot (21686148-6449-6E6F-744E-656564454649; ef02 en GPTfdisk o el bios_grub
bandera en libparted). Este tipo de código identifica una partición utilizada por GRUB, y cuando ejecuta grub-install
, GRUB instalará parte de sí mismo en esa partición. Si instala GRUB en un sistema de arranque BIOS con un disco GPT, normalmente debe estar presente una partición de arranque BIOS. (Sin embargo, hay formas de eludir esta regla). Más importante aún, si establece por error este tipo de código en la partición incorrecta, ¡esa partición se dañará cuando instale GRUB! He visto a bastantes personas cometer ese error en varios foros en línea.
Donde los códigos de tipo se vuelven más importantes es cuando se trata de otros sistemas operativos. Windows y OS X, por ejemplo, tienden a no tocar particiones con códigos de tipo que no reconocen. Su lista de códigos de tipo excluye los códigos de tipo comunes específicos de Linux, por lo que usar un código de tipo específico de Linux ayuda a reducir el riesgo de que Windows u OS X destruyan su instalación de Ubuntu. Sin embargo, a estos sistemas operativos no les importa si usa el código GPT fdisk8300 o fd00. Pueden surgir problemas si utiliza códigos que son reconocidos por estos otros sistemas operativos. Por ejemplo, en un momento dado, el tipo de sistema de archivos de Linux GUID (0FC63DAF-8483-4772-8E79-3D69D8477DE4) no existía. Lo creé y lo inserté en mi propio GPT fdisk y libparted porque la práctica común de usar el código de tipo "Microsoft BasicData" (EBD0A0A2-B9E5-4433-87C0-68B6B72699C7) estaba causando problemas en las configuraciones de arranque dual. Específicamente, ciertas herramientas de Windows pensarían que la partición de Linux era una partición de Windows dañada o no inicializada y se ofrecerían a prepararla. El error del usuario en este aviso sería desastroso. Consulte esta página mía para obtener más información sobre este tema.
El propósito de los códigos de tipo de partición de Linux definidos en la Especificación de particiones detectables es hacer que la escritura /etc/fstab
obsoleto para la mayoría de los sistemas. Es un caso de convención sobre configuración.
Systemd agregó systemd-gpt-auto-generator
en 2014 en la versión 211. Este generador crea .mount
unidades de particiones GPT en la unidad de arranque.
Por lo tanto, puede usar estos códigos en su unidad con particiones GPT hoy, sin tocar /etc/fstab
en absoluto (puede estar totalmente vacío), y todavía tener particiones separadas para /home
, /srv
, /var
, /var/tmp
que será descubierto y montado automáticamente. Estas particiones pueden tener cualquier sistema de archivos compatible. También pueden estar encriptados con LUKS. Las particiones de intercambio también se descubren automáticamente.
Para mayor comodidad, el generador también monta la partición del sistema EFI en /boot
en la mayoría de los casos.
En teoría, también puede hacer que descubra el /
partición (raíz), pero eso es un poco más complicado. Supongo que todavía requiere un initramfs en la mayoría de las situaciones. De lo contrario, el root=/dev/whatever
todavía se requiere el parámetro del kernel.
La necesidad de un código para /home
y otras particiones son declaradas aquí por Rod Smith, quien creó y hasta ahora (2020) contribuye al código de gpt fdisk. Esto es de él en 2011:
Recientemente descubrí que cuando Windows lee un disco GPT con particiones de Linux, esas particiones reciben letras de unidad y se muestran sin formato. Esta situación puede ocurrir con discos extraíbles o cuando Linux y Windows tienen un arranque dual en una computadora basada en UEFI. Debido a que UEFI se está volviendo más común, esta situación también se está volviendo más común. Esto me parece un desastre a punto de ocurrir; tarde o temprano, alguien va a tirar a la basura una instalación de Linux al optar por formatear una partición de Linux en Windows.
Este problema ocurre porque las herramientas de particionamiento de Linux (libparted y mi propio fdisk de GPT) dan a las particiones de Linux el mismo GUID de código de tipo de partición que usa Windows para sus particiones de sistema de archivos (EBD0A0A2-B9E5-4433-87C0-68B6B72699C7). Linux tiene sus propios códigos de tipo GUID para otros tipos de partición, como RAID, LVM y espacio de intercambio.
Por lo tanto, me parece que Linux necesita su propio código GUID de tipo de partición para particiones de sistema de archivos en discos GPT, al igual que tiene su propio código de tipo de partición MBR para sistemas de archivos (0x83 en MBR). Me gustaría implementar tal cambio en mi propio programa, pero no quiero hacerlo unilateralmente. Suponiendo que no haya un protocolo inusual para crear GUID de código de tipo de partición, sugiero que se use lo siguiente:
0FC63DAF-8483-4772-8E79-3D69D8477DE4
Eso es solo un GUID único de partición para una partición que creé en un disco de prueba usando GNU Parted 3.0.
Si echa un vistazo al código de parttypes.cc, notará todos los códigos para Linux y otros.
Lista de códigos de particiones de Linux
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)