-
Avvia il tuo computer con un live-USB/CD in modalità UEFI . Avevo due opzioni di avvio
<flash_drive>
eUEFI: <flash_drive>
, il secondo è necessario per esporre le variabili efi in/sys/firmware/efi/
in modo cheefibootmgr
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 ilY
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? )