GNU/Linux >> Linux Esercitazione >  >> Linux

Qual è lo scopo del codice di partizione home Linux 8302?

Non c'è scopo, solo comodità, e puoi usare qualsiasi codice ti piaccia.

Cito di seguito un'ottima risposta di Rod Smith, l'autore di GPT fdisk, che spiega l'intero argomento:

la risposta di kyodake è corretta, ma è anche piuttosto incentrata sull'MBR. Sotto GPT, si applicano gli stessi principi, ovvero un codice del tipo di partizione identifica lo scopo previsto di una partizione. La differenza è che i codici di tipo GPT sono GUID a 128 bit, rispetto ai codici a 8 bit utilizzati sotto MBR. La natura dei GUID significa che non è necessario registrare i codici con un'autorità centrale per evitare collisioni; statisticamente è molto improbabile che due GUID siano identici per caso.

AFAIK, non esiste un repository ufficiale dei codici di tipo GPT, ma sono documentati nella pagina di Wikipedia su GPT. Uno svantaggio dei codici di tipo GPT è che, come GUID, sono lunghi e scomodi, ad esempio 0FC63DAF-8483-4772-8E79 -3D69D8477DE4 per i dati del filesystem Linux, rispetto a 0x83 per l'equivalente MBR. Pertanto, la maggior parte degli strumenti per il partizionamento dei dischi GPT utilizza una qualche forma di "abbreviazione" o "traduzione in linguaggio naturale" nelle loro interfacce utente. Sono l'autore di GPT fdisk e il mio obiettivo nello scrivere era creare qualcosa che fosse simile a (MBR) fdisk per quanto possibile, ho adottato l'approccio di utilizzare i codici MBR come base; tuttavia, poiché la corrispondenza tra i codici di tipo GPT e MBR non è 1:1, ho moltiplicato i codici di tipo MBR per 0x100 per ottenere gli equivalenti GPT. Pertanto, MBR's0x83 è diventato 8300. Ciò abilita anche codici follow-on correlati che non esistono in MBR, come 8301, 8302, ecc. Questi codici sono facili da usare per le persone che hanno già familiarità con gli equivalenti MBR, ma non riammesso arbitrario per le persone che non conoscono i codici MBR. Internamente, GPT fdisk traduce questi codici in GUID. Puoi vedere i GUID effettivi visualizzando le informazioni dettagliate sulla partizione (tramite il file i opzione in gdisk , per esempio). Puoi anche inserire una GUID arbitraria invece di utilizzare i codici a quattro caratteri di GPT fdisk, se preferisci o se devi utilizzare un codice che GPT fdisk non supporta.

Altri strumenti utilizzano altri approcci. La libreria libparted (e quindi parted , GParted e altri strumenti basati su libparted) ne traducealcuni digita i codici in "flag" e nasconde completamente altri codici. Questo aiuta a semplificare le cose per alcuni utenti, ma rende alcune attività impossibili - per esempio, non puoi impostare un codice di tipo arbitrario con qualsiasi cosa basata su libparted. Utility Disco di OS X traduce i GUID conosciuti in descrizioni di testo normale. (IIRC, quando crei una partizione, imposta un codice di tipo appropriato basato sul filesystem creato in una partizione, simile a ciò che fa GParted.)

Per la maggior parte, Linux non utilizza codici di tipo, né per MBR né per GPT. Cioè, puoi mettere il tuo filesystem Linux standard su una partizione (GPTfdisk) 8300, o usare 0700 (come era comune in passato), o assegnare il tuo GUID casuale. Commenti simili si applicano a RAID, LVM, swap e altri tipi di partizione. Ci sono alcune eccezioni a questa regola, però. Per prima cosa, gli installatori di distribuzione spesso guardano e impostano i codici di tipo, quindi potrebbe essere necessario il codice di tipo giusto su una partizione prima che venga utilizzato correttamente. Un'altra eccezione è che systemd sta iniziando a utilizzare i codici tipo come fallback se /etc/fstab non è configurato correttamente. (È qui che ha origine la maggior parte dei codici 830x di GPT fdisk:fanno parte della specifica delle partizioni rilevabili, che è un'iniziativa di Freedesktop/systemd.) codici appropriati per LVM, RAID, swap, ecc. Una grande eccezione alle regole "Linux non usa codici di tipo" è il codice della partizione BIOSBoot (21686148-6449-6E6F-744E-656564454649; ef02 in GPTfdisk o il bios_grub flag in libparted). Questo tipo di codice identifica una partizione usata da GRUB e quando esegui grub-install , GRUB installerà parte di se stesso in quella partizione. Se installi GRUB su un sistema che avvia il BIOS con un disco GPT, normalmente deve essere presente una partizione di avvio del BIOS. (Ci sono modi per aggirare questa regola, però.) Ancora più importante, se imposti erroneamente questo codice di tipo sulla partizione sbagliata, quella partizione verrà danneggiata quando installi GRUB! Ho visto parecchie persone commettere questo errore in vari forum online.

Dove i codici di tipo diventano più importanti è quando si ha a che fare con altri sistemi operativi. Windows e OS X, ad esempio, tendono a non toccare le partizioni con codici tipo che non riconoscono. Il loro elenco di codici di tipo esclude i comuni codici di tipo specifici di Linux, quindi l'utilizzo di un codice di tipo specifico di Linux aiuta a ridurre il rischio che Windows o OS X distruggano l'installazione di Ubuntu. Tuttavia, a questi sistemi operativi non importa se usi il codice GPT fdisk8300 o fd00. Possono sorgere problemi se si utilizzano codici riconosciuti da questi altri sistemi operativi. Ad esempio, un tempo il GUID del tipo di file system Linux (0FC63DAF-8483-4772-8E79-3D69D8477DE4) non esisteva. L'ho creato e inserito sia nel mio fdisk GPT che in libparted perché la pratica comune di utilizzare il codice di tipo "Microsoft BasicData" (EBD0A0A2-B9E5-4433-87C0-68B6B72699C7) stava causando problemi nelle configurazioni dual-boot. In particolare, alcuni strumenti di Windows penserebbero che la partizione Linux fosse una partizione Windows danneggiata o non inizializzata e si offrissero di prepararla. L'errore dell'utente a questo prompt sarebbe disastroso. Vedi questa mia pagina per ulteriori informazioni su questo argomento.


Lo scopo dei codici del tipo di partizione Linux definiti nella specifica delle partizioni rilevabili è di rendere la scrittura /etc/fstab obsoleto per la maggior parte dei sistemi. È un caso di convenzione rispetto alla configurazione.

Systemd ha aggiunto systemd-gpt-auto-generator nel 2014 nella versione 211. Questo generatore crea .mount unità dalle partizioni GPT sull'unità di avvio.

Quindi puoi utilizzare questi codici sulla tua unità partizionata GPT oggi, non toccare /etc/fstab (può essere completamente vuoto) e avere ancora partizioni separate per /home , /srv , /var , /var/tmp che verrà scoperto e montato automaticamente. Queste partizioni possono avere qualsiasi filesystem supportato. Possono anche essere crittografati con LUKS. Anche le partizioni di swap vengono rilevate automaticamente.

Per ulteriore comodità, il generatore monta anche la partizione di sistema EFI a /boot nella maggior parte dei casi.

Teoricamente puoi anche fargli scoprire il / (root), ma è un po' più complicato. Immagino che richieda ancora un initramfs nella maggior parte delle situazioni. Altrimenti, il root=/dev/whatever il parametro kernel è ancora richiesto.


La necessità di un codice per /home e altre partizioni è indicato qui da Rod Smith che ha creato e fino ad ora (2020) contribuisce al codice di gpt fdisk. Questo è da lui nel 2011:

Di recente ho scoperto che quando Windows legge un disco GPT con partizioni Linux su di esso, a quelle partizioni vengono assegnate lettere di unità e vengono visualizzate come non formattate. Questa situazione può verificarsi con dischi rimovibili o quando Linux e Windows eseguono il dual boot su un computer basato su UEFI. Poiché UEFI sta diventando più comune, anche questa situazione sta diventando più comune. Questo mi colpisce come un disastro in attesa di accadere; prima o poi qualcuno distruggerà un'installazione Linux scegliendo di formattare una partizione Linux in Windows.

Questo problema si verifica perché gli strumenti di partizionamento Linux (libparted e il mio fdisk GPT) forniscono alle partizioni Linux lo stesso GUID del codice del tipo di partizione utilizzato da Windows per le partizioni del file system (EBD0A0A2-B9E5-4433-87C0-68B6B72699C7). Linux ha i propri codici di tipo GUID per altri tipi di partizione, come RAID, LVM e spazio di swap.

Pertanto, mi sembra che Linux abbia bisogno del proprio GUID del codice del tipo di partizione per le partizioni del filesystem sui dischi GPT, così come ha il proprio codice del tipo di partizione MBR per i filesystem (0x83 su MBR). Mi piacerebbe implementare un tale cambiamento nel mio programma, ma non voglio farlo unilateralmente. Supponendo che non esista un protocollo insolito per la creazione di GUID del codice del tipo di partizione, suggerisco di utilizzare quanto segue:

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

Questo è solo un GUID univoco della partizione per una partizione che ho creato su un disco di prova utilizzando GNU Parted 3.0.

Se dai un'occhiata al codice di parttypes.cc, noterai tutti i codici per Linux e altri.

Elenco dei codici delle partizioni 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)

Linux
  1. Cosa sono i codici di uscita Bash in Linux

  2. Qual è lo scopo del file .bashrc in Linux

  3. Qual è il modo corretto di installare jdk su Linux

  4. Qual è l'equivalente del comando Linux sudo fdisk -l in MacOS?

  5. Quali dovrebbero essere i permessi ideali della home directory in Linux

Linux vs. Unix:qual è la differenza?

Cos'è il comando Linux Watch + Esempi

Che cos'è la shell in Linux?

Qual è il comando kill in Linux?

Qual è la scheda più semplice compatibile con Linux che potrei realizzare a casa?

Qual è l'ID della partizione/tipo di filesystem per UDF?