Come risolvere l'errore di avvio di Linux nell'errore del BIOS

Pubblicato: 2022-09-28
Laptop su sfondo blu che mostra un prompt dei comandi di Linux.
fatmawati achmad zaenuri/Shutterstock.com

È noto che gli aggiornamenti di GRUB comportano l'avvio dei computer Linux nelle impostazioni BIOS o UEFI. La soluzione per questo sfrutta un utile trucco di ripristino del sistema che dovresti davvero conoscere.

Un caso di studio: GRUB 2:2.06.r322

Un aggiornamento di sistema per le distribuzioni Linux basate su Arch e Arch nell'estate 2022 includeva una nuova versione di GRUB. GRUB sta per gr e un unificato bootloader .

Un bootloader è un'applicazione che avvia il processo di avvio quando il computer è acceso. È necessario avviare diversi strumenti software e utilità, dalla partizione corretta e nell'ordine corretto, per ottenere un sistema operativo operativo e accessibile. GRUB dà il via a quella cascata di eventi.

Se sul tuo computer è installato più di un sistema operativo, GRUB fornisce un menu in cui puoi selezionare quale sistema operativo utilizzare. Una delle modifiche al codice in GRUB 2:2.06.r322 ha aggiunto il supporto per una nuova opzione di GRUB, --is-supported . L'opzione viene utilizzata per indicare se è presente o meno una funzionalità di avvio del firmware. In tal caso, GRUB aggiunge una voce al menu di avvio per consentire l'avvio nelle impostazioni EUFI.

La nuova opzione è stata referenziata in uno script chiamato "30_uefi-firmware.in". Il diff per questo file mostra che un'istruzione if è stata rimossa e sono state aggiunte due righe.

Una delle nuove righe era una dichiarazione if sostitutiva. L'altra nuova riga contiene fwsetup --is-supported . Il "fw" in "fwsetup" sta per firmware. Ma poiché quella riga è al di sopra della nuova istruzione if , verrà sempre eseguita. Se fosse all'interno del corpo dell'istruzione if , verrebbe eseguito solo quando il test nell'istruzione if si risolveva in true.

Che cos'è UEFI e in che cosa differisce dal BIOS?
CORRELATI Che cos'è UEFI e in che cosa differisce dal BIOS?

Ciò ha causato problemi su molti computer UEFI, ma non su tutti. Dipendeva dal fatto che la versione di GRUB che avevi già installato supportasse questo comando. Le macchine interessate farebbero una delle due cose. Sarebbero entrati in un ciclo di avvio in cui il processo di avvio non veniva mai completato ma riavviato continuamente, oppure il computer si avviava direttamente nelle impostazioni del firmware UEFI. Ad ogni modo, non c'era modo di forzare l'avvio del computer in Linux.

Quando ti trovi di fronte a situazioni come questa c'è sempre l'opzione nucleare di eseguire una reinstallazione completa. Funzionerà, ma a seconda di come è stato partizionato il disco rigido, senza un backup recente potresti perdere dati.

Il metodo a basso impatto utilizza chroot e un Live USB o un Live CD/DVD. Questa è una buona tecnica per capire e avere la manica per tutti i tipi di errori di sistema quando non puoi avviare o accedere al tuo computer Linux.

La tecnica che useremo

Per utilizzare questa tecnica è necessario disporre di un USB avviabile o di un CD/DVD con una distribuzione Linux su di esso, che si avvia in un'istanza Linux live. In genere questi sono chiamati Live USB o Live CD/DVD. Tutte le principali distribuzioni supportano questa funzione.

Come creare un'unità USB Ubuntu live con archiviazione persistente
CORRELATO Come creare un'unità USB Ubuntu live con archiviazione persistente

Non installeremo nulla, quindi il live media non deve essere la stessa distribuzione che hai installato sul tuo computer. Ad esempio, potresti usare una USB Ubuntu per riparare un computer EndeavourOS. Se non hai accesso a nessun supporto live, dovrai utilizzare un altro computer per scaricare un'immagine e scriverla su una chiavetta USB o su un CD/DVD.

Quando esegui l'avvio dal supporto live, sarai in grado di montare e accedere al tuo file system esistente. Il file system installato apparirà come parte del file system di Linux che è stato avviato dal live media. È fantastico. Se possiamo accedervi, abbiamo la possibilità di ripararlo. Ma solleva un problema.

Come utilizzare il comando chroot su Linux
CORRELATI Come utilizzare il comando chroot su Linux

La radice di questo file system ibrido è la radice del file system live media, non la radice del file system installato. Per fare in modo che i percorsi dei file configurati nel tuo sistema Linux facciano riferimento alle loro posizioni di destinazione corrette, da qualche parte all'interno del tuo file system e non da qualche parte rispetto alla radice di Linux live, dobbiamo usare chroot per impostare una nuova radice che punti alla radice di il file system installato . In altre parole, i percorsi che iniziano con "/" utilizzeranno la radice del file system come punto di partenza.

Il computer di prova che abbiamo utilizzato per questo utilizza il file system ext4 , ma puoi usare questa tecnica anche su altri file system. Devi solo identificare quali partizioni o volumi devi montare e dove montarli. I principi sono gli stessi.

Mettendolo in pratica

Abbiamo creato un'unità USB avviabile e da essa abbiamo avviato il nostro computer danneggiato. La distribuzione che abbiamo utilizzato era EndeavourOS. Il supporto live di EndeavourOS si avvia nell'ambiente desktop XFCE 4.

Il supporto live EndeavourOS è stato avviato nell'ambiente desktop XFCE

Per identificare quali partizioni contengono la radice del tuo file system e quale è la partizione di avvio, apri una finestra del terminale e usa il comando fdisk . Stiamo usando l'opzione -l (list partition). Dovrai usare anche sudo .

 sudo fdisk -l 

Utilizzo del comando sudo fdisk -l per elencare partizioni e dispositivi

Scorri l'output fino a visualizzare le voci etichettate "Sistema EFI" e "Filesystem Linux".

L'output del comando sudo fdisk -l con le partizioni di avvio e root evidenziate

Su questo computer, sono entrambi sul disco rigido sda . Sono nelle partizioni uno e due, come indicato dalle etichette delle partizioni /dev/sda1 e /dev/sda2 .

Sul tuo computer, potrebbero trovarsi su dischi rigidi e partizioni diverse. Prendi nota delle partizioni su cui si trovano, dovremo usarle nei prossimi comandi.

Abbiamo bisogno di montare i file system su queste partizioni allegandoli al file system live. Il comando mount lo farà per noi. Ricorda, è probabile che le tue etichette di partizione siano diverse, quindi assicurati di utilizzare quelle dai risultati del tuo comando fdisk .

 sudo mount /dev/sda2 /mnt
 sudo mount /dev/sda1 /mnt/boot/efi 

Montaggio dei file system radice di avvio e del file system

Per fare in modo che la radice effettiva del file system inizi dalla radice del file system installato effettivo, utilizzeremo chroot per impostare la radice in modo che sia il punto di montaggio "/mnt". È qui che la radice del file system installato viene innestata nel file system live.

 sudo chroot /mnt 

Usando il comando chroot per creare una nuova radice efficace

Nota che il prompt dei comandi cambia per mostrare che ora sei effettivamente connesso come root e ti trovi nella directory principale "/" del file system del tuo computer.

Possiamo facilmente verificarlo, cambiando nella directory "/home" e controllando quali directory esistono al suo interno.

 cd/casa
 ls 

Utilizzo di ls per elencare gli account utente

Dovresti vedere una directory per ogni utente configurato sul tuo computer, inclusa una per il tuo account utente. Questo computer ha un unico utente, chiamato "dave". Se avessimo usato cd /home prima di usare il comando chroot , saremmo entrati nella directory "/home" del file system live.

Giusto per essere chiari, ora stai accedendo al tuo vero file system come utente root , quindi fai attenzione.

Per risolvere il problema con GRUB 2:2.06.r322, tutto ciò che dovevamo fare era eseguire il comando grub-install .

 grub-install 

Eseguire il comando grub-install per correggere l'errore di avvio di GRUB nel BIOS

L'esecuzione grub-install cieca in questo modo di solito non è consigliata. In questo caso, è ciò che era richiesto.

Riparare o sostituire

Se stai cercando di risolvere un problema diverso, dovrai controllare i forum per la tua distribuzione per la soluzione appropriata per il tuo problema. Se si tratta di un reclamo diffuso, troverai presto una soluzione.

Per lo meno, ora che puoi accedere al tuo file system, puoi copiare i tuoi dati su alcuni supporti rimovibili. Se decidi di eseguire una reinstallazione completa, non perderai dati.

CORRELATI: Come copiare file usando il comando "installa" su Linux