GNU/Linux >> Linux Esercitazione >  >> Linux

Come sapere se il sistema specifico ha bisogno di una partizione di avvio?

Conosco la storia generale del motivo per cui storicamente abbiamo partizioni di avvio separate:

A cosa serve davvero la partizione /boot?

e su un nuovo computer, potrei non preoccuparmene. Tuttavia, sto installando Linux su un sistema di 20 anni, con un BIOS non UEFI (che non può nemmeno avviarsi da USB). Questa non sarà una macchina multi-boot o qualcosa di complicato:nessun LVM, nessuna crittografia del disco, nessun RAID ecc.

Come posso sapere se il mio specifico computer, con il mio specifico HDD, serve una partizione di avvio?

Nota:

  • Nel caso sia importante, la distribuzione che intendevo installare è antiX Linux 19.3 i386. Richiama gparted per consentirti di modificare le partizioni.
  • Il boot loader sarà naturalmente quello che installa la mia distribuzione, che AFAICT è grub2.

Risposta accettata:

Se un sistema risale all'anno 1994 o precedente, il suo BIOS potrebbe non essere in grado di gestire dischi con geometria Clusters/Heads/Sectors maggiore di 1024/16/63, che funziona fino a un limite di 504 MiB (528,4 MB). La ragione di ciò era una scomoda interazione di due insiemi di limiti:

  • la classica funzione BIOS INT 13h non estesa accettava una geometria massima del disco di 1024/255/63
  • l'hardware IDE (PATA) accetterebbe una geometria massima di 65536/16/63
  • Finora, implementazioni banali hanno scelto il limite più piccolo in ogni valore, risultando in un limite di 16/1024/63.

Nel luglio 1994 è stata sviluppata una nuova funzionalità del BIOS "Enhanced Disk Drive Services" (abbreviato in EDD) per aggirare questo limite. Ha spostato i bit tra le parti Cluster e Heads della geometria tra la rappresentazione BIOS e l'interfaccia hardware IDE (chiamata "traduzione della geometria"), come soluzione alternativa per questo limite.

Alcune versioni del BIOS presentavano anche bug nella geometria del disco 4096/16/16 o nella sua forma "tradotta" 1024/64/63.

Alla geometria del disco di 16383/16/63 (o 1024/255/63 in forma tradotta), è stato raggiunto il limite massimo del classico indirizzamento del disco C/H/S:i formati di input dei dati delle funzioni BIOS che gestiscono questo tipo di indirizzamento del disco semplicemente non aveva abbastanza bit per gestire dischi più grandi di questo. Questo limite è stato raggiunto con una dimensione del disco di 7,87 GiB (8,45 GB), ovvero esattamente 16 450 560 blocchi disco.

La specifica IDE (PATA) includeva una funzionalità che poteva aggirare questo problema, ma inizialmente era specificata come funzionalità opzionale e non tutti i BIOS la implementavano. Si chiamava Logical Block Addressing, o LBA in breve. Con l'aumento delle dimensioni dei dischi, la maggior parte dei dischi rilasciati dopo il 1996 circa supportava LBA.

Ma poi è stato scoperto un altro bug del BIOS:alcuni BIOS avevano un'implementazione LBA difettosa che falliva se erano necessari più di 26 bit per rappresentare il numero di blocco del disco. Ciò ha interessato alcune versioni del BIOS rilasciate nell'agosto 1999 o precedenti e ha causato un limite alla dimensione del disco di esattamente 32 GiB (33,8 GB).

La specifica LBA che è stata rilasciata nel 1994 aveva allocato solo 28 bit per il numero di blocco del disco e questo ha causato un altro limite di dimensione del disco esattamente a 128 GiB di dimensione del disco. La specifica ATA-6 rilasciata nell'anno 2003 specificava le versioni a 48 bit delle funzioni di accesso al disco LBA, che è ciò che stiamo attualmente utilizzando con i moderni dischi SATA. Dovrebbe funzionare fino a quando le dimensioni del disco non raggiungono i 128 PiB.

Correlati:come usare "by" e "finché" in questi contesti specifici?

Spesso era possibile aggirare queste limitazioni specificando deliberatamente una geometria del disco errata nel BIOS, dicendogli che il disco era più piccolo del limite offensivo e facendo /boot una partizione che rientra completamente nella falsa geometria.

A volte (dopo l'introduzione del supporto LBA) era sufficiente che il /boot la partizione rientrava nel limite di dimensione appropriato.

Il bootloader userebbe le routine del BIOS per caricare il kernel Linux (e facoltativamente un file initrd) da questa partizione e, una volta avviato il kernel, i suoi driver avrebbero preso il controllo dell'accesso al disco, bypassando del tutto il BIOS e rendendo irrilevanti le sue limitazioni fintanto che il sistema operativo stava correndo. A questo punto, la vera geometria del disco di solito viene rilevata automaticamente dal kernel.

Allora, cosa significa?

  • se il tuo sistema ha una data di rilascio del BIOS nell'anno 2004 o precedente, potrebbe essere necessario creare un /boot partizione che si adatta interamente ai primi 128 GiB del disco, altrimenti il ​​BIOS potrebbe non riuscire ad avviare il sistema operativo. (Questo di solito è un problema solo per il dual-boot e altre configurazioni multi-OS.)
  • se il tuo sistema ha una data di rilascio del BIOS precedente all'anno 2000, potresti voler creare un /boot separato partizione entro i primi 32 GiB del disco, giusto per essere al sicuro dai bug di implementazione LBA.
  • se il sistema è del 1996 o precedente e non menziona "LBA" da nessuna parte nelle impostazioni del BIOS, potrebbe essere necessario specificare una falsa geometria del disco e assicurarsi che il proprio /boot la partizione è sia all'interno della geometria falsa che all'interno dei primi 7,87 GiB del disco.
  • qualcosa di più vecchio di quello:"Appartiene a un museo". 🙂 Ma se proprio devi, vedi sopra per i relativi limiti.

Se la data di rilascio del BIOS di un sistema è solo successiva alla data di un particolare aggiornamento delle specifiche, potrebbe avere o meno la specifica aggiornata:dopo il rilascio di ogni aggiornamento delle specifiche, ci è voluto del tempo prima che le nuove implementazioni diventassero onnipresenti.


Linux
  1. Come funzionano più caricatori di avvio su una partizione di sistema Efi?

  2. Come saltare il menu Grub su un sistema dual-boot??

  3. Come montare automaticamente la partizione di Windows all'avvio?

  4. Come posso sapere se mi trovo su uno schermo?

  5. Ridimensionamento della partizione di avvio

Come partizionare un disco in Linux

Come eliminare la partizione in Linux

Come crittografare la partizione su Linux

Come spostare la partizione Ext4 davanti alla partizione di avvio?

Come sapere quale processo ha una porta specifica aperta su Linux?

Come posso sapere se il server supporta le unità hot-swap?