-
Spusťte počítač pomocí živého USB/CD v režimu UEFI . Měl jsem dvě možnosti spouštění
<flash_drive>
aUEFI: <flash_drive>
, druhý je potřebný k odhalení proměnných efi v/sys/firmware/efi/
takžeefibootmgr
neselhat později. Bootování s první možností mi dává následující chybu:Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables. Try 'modprobe efivars' as root.
modprobe efivars
nefungovalo mi to. -
chroot do poškozeného systému (podobně jako nápověda ubuntu grub2, ale s efi specifiky):
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
-
V závislosti na vaší linuxové distribuci nyní děláte různé věci.
-
Pro Ubuntu/Debian :
apt-get install --reinstall grub-efi-amd64
nebo alternativně:
apt-get install --reinstall grub-efi update-grub
měl by vám výše uvedený grub, ale ne bootovatelný
-
Pro Fedora (až 16, může fungovat pro ostatní):
yum reinstall grub-efi
V následujícím příkazu musíte nahradit sdX zařízením, které má oddíl EFI, ze kterého chcete zavést systém. V
--part Y
musíte nahraditY
s číslem oddílu EFI (jako v/dev/sdXY
).efibootmgr -c --disk /dev/sdX --part Y efibootmgr -v # verify a new record called Linux is there
-
-
Nyní zadejte Ctrl+D pro ukončení chrootu vše odpojte a restartujte:
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
Možná to budete muset přizpůsobit svým potřebám (jiná tabulka oddílů, samostatný oddíl /boot atd.) a nemusí to být jediná možnost, ale pro mě to fungovalo dobře.
Vhodný live-systém pro opravu věcí je grml. Existuje také rozsáhlý průvodce, jak nastavit zaváděcí USB zařízení, z nichž nejužitečnější je ve skutečnosti sekce Mac (stačí vytvořit oddíl FAT32, zkopírovat soubory, restartovat, hotovo).
Jako potenciální zjednodušení první metody je možné přímo zavést systém na pevném disku, pouze pomocí grub z živého CD. Testováno na xubuntu 13.10 s xubuntu 13.10 live CD.
Ujistěte se, že je v BIOSu zakázáno Secure Boot. Vložte živé CD a spusťte jej přes UEFI. Zobrazí se nabídka GRUB disku CD. stisknutím "c" se dostanete na příkazový řádek.
configfile (hd0,gpt1)/EFI/ubuntu/grub.cfg
Pokud máte jiný systémový oddíl EFI, upravte výše uvedený příkaz grub.
Po zavedení systému z pevného disku by mělo stačit znovu nainstalovat grub na systémový oddíl EFI a zaregistrovat jej do firmwaru pomocí grub-install.
sudo grub-install
Stejně jako u Maxine jsem zjistil, že se moje nastavení UEFI v BIOSu poškodilo a můj počítač se nespustil.
V mém případě je to Lenovo ThinkServer RD430 s Linux Mint Debian a vypadalo to jakékoli Udělal bych update-grub nebo výměna jakýchkoli pevných disků na serveru by způsobila, že se nespustí. OS je v mém případě linuxmint-201403-mate-dvd-64bit nainstalovaný přes USB. (úplný popis událostí, které by způsobily nefunkčnost UEFI, naleznete níže)
Absolvování přesně stejných kroků na Think Server TS140 nevedlo k tomu, že by UEFI ztratilo rozum ani jednou. Podíval jsem se na stránku ovladače RD430 a můj bios je starý dvě verze. Nikdy předtím jsem nemusel aktualizovat bios na základní desce, takže nejsem z těch, kteří se automaticky aktualizují, když jsou k dispozici nové verze. Po aktualizaci biosu výše uvedená odpověď Maxine fungovala, jen se zvrtnutím...
# 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 / #
efibootmgr -c
příkaz přidal dvě položky 0000
a 0002
!
Boot0002* Linux HD
záznam jako první v pořadí spouštění není správný .
0000
záznam je správný.
Abych to otestoval, zkusil jsem bootovat bez jakéhokoli přerušení, což je 0002
vstup. Podle očekávání to nevyšlo. Takže jsem restartoval server, zmáčkl F12 a zvolil linuxmint
. Jak jsem doufal, nabootoval do mé instalace LMDE.
Způsob, jak odstranit nežádoucí položky pomocí efibootmgr, je:
# efibootmgr -b 2 -B
Tento příkaz jsem použil k odstranění položek 0001
a 0002
. Možnost 0001
byl z posledního z mnoha mých pokusů obnovit OS.
Poznámky UEFI
Pokud toto čtete a jste stejně frustrovaní UEFI jako já/byl jsem, zde jsou některé poznámky a zdroje:
» Zavedení do prostředí UEFI Shell je podobné použití prostředí DOS.
» Intel vytvořil referenční příručku ve formátu PDF pro příkazy shellu efi.
» Dokument UEFI_on_TS430 od Lenova je jediný zdroj, který jsem viděl vysvětlující použití efi shellu.
» Další odkaz na shell uefi z Příručky správce nPartition .
» Můžete zkusit zavést systém z efi shellu tak, že přejdete do zavaděče a spustíte jej.
» UEFI chce, aby měl disk tabulku oddílů GPT, nikoli tabulku částí msdos.
» UEFI chce, aby byl první oddíl na vašem disku naformátován jako fat32 nebo vfat.
» Pro "obecné" bootování musí existovat /EFI/boot
adresář v kořenovém adresáři s bootx64.efi
v něm.
» Někteří lidé zkopírují své grubx64.efi
odkud byl nainstalován na /EFI/boot/bootx64.efi
a tento cheat se jim osvědčil.
» Kdykoli provedete změny grub, použijte efibootmgr -v
před a po, abyste se ujistili, že restartování je v pořádku.
Moje zkušenost s RD430
Za poslední týden jsem OS 10+krát přeinstaloval a snažil jsem se to vyřešit a nastavit server. Moje konfigurace je SSD na tomto řadiči RAID ve slotu PCIe 2.0 s nainstalovaným LMDE. Řadič RAID AOC-S3008L-L8i (přeflashovaný do režimu IT) ve 2. slotu PCIe 3.0 s 6x 3TB disky. RAM:12 GB ECC (3 x 4 GB).
Zde jsou změny, které bych provedl, které způsobily, že se můj systém nespustí:
» Vyměňte S3008L-L8i pci sloty (ponechte SSD+kartu samotnou).
» Deaktivujte výzvu LSi softwarového raid bios pro palubní řadič.
» Přidejte mou starou kartu HighPoint RocketRaid do otevřeného slotu PCIe.
» Proveďte změnu na /etc/default/grub
a poté spusťte update-grub
.
(možná grub-install
musí být také spuštěn? )