GNU/Linux >> Linux Esercitazione >  >> Linux

Come reinstallare GRUB2 EFI?

  • Avvia il tuo computer con un live-USB/CD in modalità UEFI . Avevo due opzioni di avvio <flash_drive> e UEFI: <flash_drive> , il secondo è necessario per esporre le variabili efi in /sys/firmware/efi/ in modo che efibootmgr non fallire più tardi. L'avvio con la prima opzione mi dà il seguente errore:

    Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
    Try 'modprobe efivars' as root.
    

    modprobe efivars non ha funzionato per me.

  • chroot nel sistema danneggiato (simile all'ubuntu grub2 help ma con specificità efi):

    sudo mount /dev/sda2 /mnt #sda2 is the root partition
    sudo mount /dev/sda1 /mnt/boot/efi #sda1 is the efi partition
    for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt$i; done
    sudo cp /etc/resolv.conf /mnt/etc/ #makes the network available after chrooting
    modprobe efivars # make sure this is loaded
    sudo chroot /mnt
    
  • A seconda della tua distribuzione Linux, ora fai cose diverse.

    • Per Ubuntu/Debian :

      apt-get install --reinstall grub-efi-amd64
      

      o in alternativa:

      apt-get install --reinstall grub-efi
      update-grub
      

      dovrebbe darti un grub, ma non avviabile

    • Per Fedora (fino a 16 anni, può lavorare per altri):

      yum reinstall grub-efi
      

      Nel seguente comando, devi sostituire sdX con il dispositivo che ha la partizione EFI da cui vuoi eseguire l'avvio. In --part Y devi sostituire il Y con il numero della partizione EFI (come in /dev/sdXY ).

      efibootmgr -c --disk /dev/sdX --part Y
      efibootmgr -v # verify a new record called Linux is there
      
  • Ora digita Ctrl+D per uscire da chroot, smonta tutto e riavvia:

    for i in /sys /proc /dev/pts /dev; do sudo umount /mnt$i; done
    sudo umount /mnt/boot/efi #please do this. Corrupted efi partitions are not nice
    sudo umount /mnt
    sudo reboot
    

Potrebbe essere necessario adattarlo alle proprie esigenze (tabella delle partizioni diversa, partizione /boot separata, ecc.) e potrebbe non essere l'unica opzione, ma per me ha funzionato bene.

Un sistema live adatto per sistemare le cose è grml. C'è anche un'ampia guida su come configurare un dispositivo USB avviabile, di cui la sezione Mac è la più utile in realtà (basta creare una partizione FAT32, copiare i file, riavviare, fatto).


Come potenziale semplificazione del primo metodo, è possibile avviare direttamente il sistema sul disco rigido, utilizzando solo grub del live CD. Testato su xubuntu 13.10 con il live CD di xubuntu 13.10.

Assicurati che Secure Boot sia disabilitato nel tuo BIOS. Inserisci il CD live e avvialo tramite UEFI. Verrà visualizzato il menu di GRUB del CD. il Premere "c" per accedere alla riga di comando.

configfile (hd0,gpt1)/EFI/ubuntu/grub.cfg

Adatta il comando grub sopra se hai una partizione di sistema EFI diversa.

Dopo che il tuo sistema si è avviato dal disco rigido, dovrebbe essere sufficiente reinstallare grub sulla partizione di sistema EFI e registrarlo con il firmware tramite grub-install.

sudo grub-install

Come con Maxine, ho riscontrato che le mie impostazioni UEFI nel BIOS erano danneggiate e la mia macchina non si avviava.

Nel mio caso, è un Lenovo ThinkServer RD430 con Linux Mint Debian e sembrava qualsiasi cosa Farei su update-grub o la modifica di eventuali dischi rigidi nel server causerebbe il mancato avvio. Il sistema operativo nel mio caso è linuxmint-201403-mate-dvd-64bit installato tramite USB. (vedi sotto per una descrizione completa degli eventi che causerebbero il mancato funzionamento di UEFI)

Eseguire esattamente gli stessi passaggi su un ThinkServer TS140 non ha fatto perdere la testa a UEFI nemmeno una volta. Ho guardato la pagina del driver RD430 e il mio bios è vecchio di due versioni. Non ho mai dovuto aggiornare il bios su una scheda madre prima, quindi non sono uno che si aggiorna automaticamente quando sono disponibili nuove versioni. Dopo aver aggiornato il bios, la risposta di Maxine sopra ha funzionato, solo con una svolta...

# efibootmgr -c --disk /dev/sdX --part Y
# efibootmgr -v
BootCurrent: 0004
Timeout: 1 seconds
BootOrder: 0002,0000,0003,0001,0004
Boot0000* linuxmint HD(1,800,1f4000,829f6cc9-5b17-479c-b3ea-61e43faecbf7)File(\EFI\linuxmint\grubx64.efi)
Boot0001* LMDE Linux Mint Debian    HD(1,800,15d505800,934c598c-fe3c-fd43-84a1-fa38e4f72552)File(\EFI\linuxmint\grubx64.efi)
Boot0002* Linux HD(1,800,1f4000,829f6cc9-5b17-479c-b3ea-61e43faecbf7)File(\elilo.efi)
Boot0003* UEFI: Built-in EFI Shell  Vendor(5023b95c-db26-429b-a648-bd47664c8012,)AMBO
Boot0004* UEFI: VerbatimSTORE N GO 1.00 ACPI(a0341d0,0)PCI(1a,0)USB(1,0)USB(4,0)HD(1,80,1d70780,00000000)AMBO
mint / # 

L'efibootmgr -c Il comando ha aggiunto due voci 0000 e 0002 !
Il Boot0002* Linux HD la prima voce nell'ordine di avvio non è corretta .
Il 0000 la voce è corretta.

Per verificarlo, ho provato l'avvio senza alcuna interruzione, che è il 0002 iscrizione. Come previsto, non ha funzionato. Quindi ho riavviato il server, ho premuto F12 e ho scelto linuxmint . Come sperato, ha avviato la mia installazione di LMDE.

Il modo per rimuovere voci indesiderate tramite efibootmgr è:

# efibootmgr -b 2 -B

Ho usato questo comando per rimuovere le voci 0001 e 0002 . Opzione 0001 era dall'ultimo dei miei numerosi tentativi di ripristinare il sistema operativo.

Note UEFI

Se stai leggendo questo e sei frustrato dall'UEFI quanto lo sono/ero io, ecco alcune note e risorse:
» L'avvio da UEFI Shell è simile all'utilizzo di una shell DOS.
» Intel ha creato un manuale di riferimento in formato PDF per i comandi della shell efi.
» Il documento UEFI_on_TS430 di Lenovo è l'unica risorsa che ho visto che spiega l'utilizzo della shell efi.
» Un altro riferimento alla shell uefi da nPartition Administrator's Guide .
» Puoi provare ad avviare una partizione dalla shell efi accedendo al caricatore ed eseguendolo.
» UEFI vuole che il disco abbia una tabella delle partizioni GPT, non una tabella delle parti msdos.
» UEFI vuole che la prima partizione sul disco sia formattata fat32 o vfat.
» Per un boot "generico" ci deve essere un /EFI/boot directory alla radice con bootx64.efi dentro.
» Alcune persone copiano il loro grubx64.efi da dove è stato installato a /EFI/boot/bootx64.efi e questo trucco ha funzionato per loro.
» Ogni volta che apporti modifiche a grub, usa efibootmgr -v prima e dopo per assicurarti che il riavvio sia corretto.

La mia esperienza con RD430

Ho reinstallato il sistema operativo più di 10 volte nell'ultima settimana cercando di risolvere il problema e configurare il server. La mia configurazione è un SSD su questo controller RAID nello slot PCIe 2.0 con LMDE installato su di esso. Controller RAID AOC-S3008L-L8i (reflash in modalità IT) nel 2° slot PCIe 3.0 con 6 unità da 3 TB. RAM:12 GB ECC (3x 4 GB).

Ecco le modifiche che vorrei apportare che hanno impedito l'avvio del mio sistema:
» Modificare gli slot pci S3008L-L8i (lasciando solo la scheda SSD+).
» Disabilita il prompt del bios raid del software LSi per il controller di bordo.
»Aggiungo la mia vecchia scheda HighPoint RocketRaid a uno slot PCIe aperto.
» Apporta una modifica a /etc/default/grub e poi esegui update-grub .
(forse grub-install deve essere eseguito anche tu? )


Linux
  1. Come installare Vagrant su Linux

  2. Come configurare vHost in Apache

  3. Come eseguire il downgrade a Subversion 1.6?

  4. Come reinstallare i driver grafici predefiniti?

  5. Come installare MongoDB su Debian 11

Come reinstallare Ubuntu

Come eseguire l'aggiornamento ad AlmaLinux 8.5

Come installare Vai su Debian 11

COME INSTALLARE NEXTCLOUD SU UBUNTU?

Come installare Asterisk in Ubuntu 20.04

Come installare Sendmail su Ubuntu 22.04