Home
» LINUX
»
Come rimuovere le voci di avvio GRUB danneggiate su Linux
Come rimuovere le voci di avvio GRUB danneggiate su Linux
Per rimuovere una voce di avvio di GRUB danneggiata, innanzitutto identifica cosa l'ha creata, quindi rigenera il menu di GRUB dai suoi file sorgente. Su Ubuntu e Debian, esegui il comando sudo update-grub; Fedora e Arch utilizzano comandi diversi. Non eliminare una riga direttamente dal file generato grub.cfg: un aggiornamento successivo potrebbe ricrearla e una modifica nel punto sbagliato potrebbe rendere più difficile l'avvio del sistema.
Identificare il tipo di ingresso del bagagliaio
Il menu di GRUB può mostrare i kernel Linux, altri sistemi operativi rilevati, voci personalizzate e un'opzione di configurazione del firmware. Quest'ultima voce, spesso etichettata come " Impostazioni firmware UEFI" , non corrisponde a un sistema operativo danneggiato. Anche i kernel più vecchi e le relative opzioni di ripristino sono diversi da una voce per un sistema operativo disinstallato. Conserva almeno un kernel funzionante e la relativa opzione di ripristino finché non hai verificato che il sistema si avvii correttamente.
Verifica se l'etichetta indesiderata è una voce del sistema operativo o un'opzione separata nelle impostazioni del firmware.
GRUB normalmente crea il suo menu a partire da impostazioni come /etc/default/grube script in /etc/grub.d/. L'output principale grub.cfgè generato. Il manuale di GNU GRUB descrive questo flusso di configurazione generato.
Rigenerare GRUB dopo la rimozione di un sistema operativo
Se hai appena disinstallato un altro sistema operativo o rimosso un pacchetto del kernel, ricostruisci prima il menu. Apri un terminale nell'installazione Linux di cui utilizzi il menu GRUB, quindi esegui il comando per quella distribuzione:
Distribuzione
Rigenera il menu
Ubuntu o Debian
sudo update-grub
Fedora (versioni attuali)
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Arch Linux
sudo grub-mkconfig -o /boot/grub/grub.cfg
Ubuntu e Debian documentano update-grubcome un helper che viene eseguito grub-mkconfigper scrivere il file del menu. Fedora 34 e versioni successive utilizzano /boot/grub2/grub.cfgcome configurazione principale; evitare di sovrascrivere il piccolo file puntatore UEFI in /boot/efi/EFI/fedora/grub.cfg. Arch documenta il /boot/grub/grub.cfgpercorso di output. Per un'altra distribuzione, seguire la documentazione GRUB corrente e utilizzare il percorso di output configurato.
La scansione esatta e i messaggi di stato variano a seconda del sistema; questo comando ricostruisce il menu generato su Ubuntu e Debian.Nelle versioni attuali di Fedora, scrivere la configurazione generata in /boot/grub2/grub.cfg.Arch Linux utilizza grub-mkconfigil /boot/grub/grub.cfgpercorso di output.
Esamina l'output del comando per individuare eventuali errori e riferimenti al sistema operativo rimosso. Riavvia il computer solo dopo che il comando è stato completato correttamente. Se la voce indesiderata è stata rimossa, non è necessario modificare manualmente il menu.
Se la voce torna
Disattiva il rilevamento automatico solo se non ne hai bisogno
GRUB può essere utilizzato os-proberper trovare altri sistemi operativi e aggiungerli al suo menu. Se continua a trovare un'installazione obsoleta, verifica che un'altra partizione connessa o montata non stia ancora presentando tale installazione. Se non vuoi che GRUB elenchi altri sistemi operativi rilevati, esegui un backup di /etc/default/grub, quindi imposta questa opzione in quel file:
Questa impostazione disabilita il rilevamento automatico di altri sistemi operativi, quindi utilizzala solo se non desideri più che tali voci vengano visualizzate.
GRUB_DISABLE_OS_PROBER=true
Salva il file e rigenera GRUB con il comando per la tua distribuzione indicato sopra. Questa impostazione rimuove dal menu tutti i sistemi non più in uso rilevati automaticamente, inclusa un'installazione di Windows che potresti ancora utilizzare. Se hai bisogno di un dual boot, lascia il rilevamento del sistema operativo abilitato e correggi invece la partizione o la sorgente di rilevamento obsolete. La guida di Arch Linux su GRUB spiega come os-proberle partizioni montate influenzano le voci generate.
Rimuovi una voce aggiunta manualmente
Una voce personalizzata può essere memorizzata in /etc/grub.d/40_customo in un file sorgente come /boot/grub/custom.cfg. Esamina questi file per individuare il menuentryblocco obsoleto. Rimuovi solo quel blocco; se modifichi 40_custom, mantieni l'intestazione esistente e le righe dello script eseguibile. Quindi rigenera la configurazione principale. La guida di Arch documenta entrambe le posizioni delle voci personalizzate.
Le voci aggiunte manualmente appartengono al loro file sorgente, come 40_custom, piuttosto che a quello generato grub.cfg.
Per esaminare il menu generato senza modificarlo, cerca le relative righe di voce di menu. Modifica il percorso in base alla tua distribuzione; il file principale di Fedora si trova in /boot/grub2/.
Questo controllo di sola lettura può aiutare ad associare un'etichetta di menu visualizzata alla configurazione generata. Non rimuove le voci.
grep -n 'menuentry' /boot/grub/grub.cfg
Per una voce del kernel obsoleta
Le voci del kernel vengono solitamente create dai kernel ancora installati sul sistema. Rimuovi un kernel non necessario tramite il gestore di pacchetti della tua distribuzione, non eliminando /bootmanualmente testo o file dal menu. Mantieni il kernel in esecuzione e almeno un kernel di fallback funzionante. Quindi rigenera GRUB e controlla nuovamente il menu.
Quando la voce è nel menu di avvio UEFI
Se l'etichetta appare nel selettore di avvio del firmware del computer anziché all'interno di GRUB, si tratta di un record del boot manager UEFI memorizzato separatamente dal menu di GRUB. È possibile esaminare questi record su sudo efibootmgr -vun sistema Linux avviato in UEFI:
I record del firmware UEFI sono separati dalle voci presenti nel menu a schermo di GRUB.
Il manuale di efibootmgr documenta che lo strumento può eliminare i record di avvio UEFI. Non rimuovere una voce solo perché la sua etichetta sembra sconosciuta: prima identifica il suo loader e conferma che non sia il percorso di avvio Linux corrente o l'unico funzionante. Se confermi che un record obsoleto specifico è presente, il comando di eliminazione descritto nel manuale è sudo efibootmgr -b XXXX -B, sostituendo XXXXcon il numero di avvio esadecimale esatto. Questo comando modifica i dati del firmware; non modifica il menu di GRUB.
Verifica il risultato
Dopo aver ricostruito il menu o rimosso una voce di origine personalizzata, riavviare il sistema e verificare che il sistema Linux desiderato si avvii correttamente. Se la voce del sistema operativo obsoleta ricompare, è necessario risalire alla sua origine: rilevamento del sistema operativo, un file di menu personalizzato, un pacchetto del kernel installato o un record del firmware UEFI separato. Evitare di modificare direttamente la configurazione generata; la soluzione definitiva consiste nel correggere l'origine e rigenerarla.