- GRUB je obvykle poškozen změnami oddílů, instalací jiných systémů nebo chybami aktualizace, ale téměř vždy je obnovitelný.
- Je možné ručně spustit systém z konzole GRUB, najít správný oddíl a znovu nainstalovat bootloader přímo ze systému.
- S USB diskem Ubuntu Live můžete k přeinstalaci GRUBu a regeneraci jeho konfigurace použít Boot-Repair nebo ruční chroot.
- I na šifrovaných systémech lze proces spouštění obnovit správným připojením oddílů a přeinstalováním balíčků GRUB.
Když GRUB spadne a váš systém GNU/Linux se nepodaří spustit , pocit, že jste o počítač přišli, je docela reálný: černá obrazovka, podivné chyby nebo, co je ještě horší, přímý skok do BIOSu/UEFI. Naštěstí ve většině případů jste o nic nepřišli; co je rozbité, je správce spouštění a ten lze opravit pomocí několika jednoduchých kroků. Pokud potřebujete diagnostikovat časování a úzká hrdla, můžete použít profilování spouštění pomocí systemd-analyze.
V tomto článku se na to podíváme velmi podrobně a co nejjasnějiProbereme, jak opravit GRUB pomocí příkazového řádku a různými metodami s Live CD/USB, včetně automatizovaných nástrojů, jako je Boot-Repair, a manuálních postupů s chrootem. Také si probereme, proč GRUB často selhává a co dělat, když chybí příkazy jako [commands missing]. update-grub nebo dokonce grub-install.
Co je GRUB a proč se může pokazit?
GRUB (GNU GRand Unified Bootloader) je správce spouštění, který používá drtivá většina distribucí GNU/Linuxu . Je to úvodní obrazovka, kde si vyberete operační systém, který chcete spustit, pokud jich máte nainstalováno několik, nebo kde vyberete režim obnovení či jiné jádro.
Pokud je GRUB poškozen nebo zmizí z oddílu MBR nebo EFI , počítač se jednoduše nebude moci spustit a zasekne se na chybové zprávě, v konzoli GRUB nebo přímo v nastavení BIOS/UEFI. To neznamená, že je systém ztracen; znamená to pouze, že počítač neví, odkud má systém spustit.
Nejčastější důvody, proč se GRUB pokazí, jsou obvykle tyto:
- Instalace Windows po GNU/LinuxuSystém Windows často přepisuje oddíl MBR nebo EFI vlastním bootloaderem a odstraňuje odkaz na GRUB. Pokud se vám to stane, může být užitečné řídit se konkrétním návodem na Záchrana GRUBu ve Windows 10.
- Neopatrné dotýkání se oddílů diskuZměna velikosti, odstranění nebo přesunutí oddílů může způsobit, že cesta, kde GRUB očekává nalezení souborů, již neexistuje, nebo se změní její počet. Pro minimalizaci rizik je vhodné naučit se, jak... správa oddílů bez ztráty dat.
- Nějaká zvláštní aktualizaceNení to nejběžnější věc, ale aktualizace systému nebo aktualizace samotného GRUBu může být neúplná nebo špatně nakonfigurovaná a bootování může být nepoužitelné.
- Změny nastavení UEFI/BIOS nebo pořadí spouštěníZakázání zabezpečeného spouštění, změna režimu spouštění (Legacy/UEFI) nebo úprava hlavního disku může způsobit ztrátu položky GRUB; v případě pochybností zkontrolujte, co se stane, když se dotknete zajistit boot.
Dobrou zprávou je, že téměř ve všech těchto případech můžete GRUB znovu sestavit a spustit systém bez nutnosti přeinstalování celého systému, a to buď z nabídky GRUBu, ze záchranného režimu nebo pomocí Live USB.
Oprava GRUBu z vlastního příkazového řádku (bez Live USB)
Pokud po zapnutí počítače stále vidíte nabídku GRUB nebo alespoň konzoli GRUB , můžete zkusit ručně spustit systém odtud a poté znovu nainstalovat správce spouštění, abyste vše obnovili do předchozího stavu.
Otevřete nabídku GRUB a zastavte odpočítávání
Jakmile se zobrazí nabídka GRUBu, stiskněte klávesy se šipkou nahoru nebo dolů , abyste zastavili časovač, který spouští proces automatického spouštění. Pokud GRUB funguje poměrně dobře, zobrazí se vám nabídka, aniž by se systém spustil.
Pokud je chyba závažnější a GRUB nezobrazí grafické menuJe možné, že se konzole zobrazí přímo se zprávou jako grub> o grub rescue>V tom případě budeme pracovat odtud, aniž bychom procházeli menu.
Pro přístup k pokročilému příkazovému řádku GRUBu z nabídky jednoduše stiskněte klávesu 'c' . Tím se dostanete na příkazový řádek GRUBu, kde můžete zadat příkazy, které budeme používat dále.
Seznam disků a oddílů pomocí GRUBu
Prvním krokem je zjistit, které disky a oddíly GRUB vidí . V konzoli GRUBu zadejte:
ls
Příkaz ls GRUB zobrazuje disky jako (hd0), (hd1), Etc.a jeho oddíly jako (hd0,1), (hd0,msdos1), (hd0,gpt2) a podobné kombinace v závislosti na tom, zda je tabulka oddílů MBR nebo GPT.
Jednoduchým příkladem by bylo, že se zobrazí pouze jeden disk: (hd0) s přepážkami jako (hd0,msdos1) y (hd0,msdos5)Na počítačích s více disky se může zobrazit něco podobného:
(hd0) (hd0,1) (hd1) (hd1,1) (hd1,5) (hd2) (hd2,1) (hd3) (hd3,1)
Každý z těchto prvků je kandidátem na hostování vašeho systému a adresáře. /bootcož je to, co teď musíme identifikovat.
Vyhledejte složku /boot a adresář GRUB
Dalším krokem je zjistit, na kterém oddílu je nainstalován GNU/Linux. a kde je v něm adresář, kam GRUB obvykle ukládá své soubory /boot/grub.
Pro prozkoumání každého oddílu použijte znovu ls ale se zadáním disku a oddíluvždy končící šikmou čárou na konci:
ls (hd0,1)/
V konzoli GRUB je obvykle používáno americké rozložení klávesnice.Takže otevírací a uzavírací závorky jsou obvykle na klávesách 9 a 0 a lomítko / Může to být místo, kde se obvykle píše pomlčka. - na španělské klávesnici.
Pokud vidíte typické adresáře GNU/Linuxu, jako například bin, etc, home, usr, Etc.Díváte se na systémový oddíl. Uvnitř byste měli najít adresář boot:
ls (hd0,1)/boot/
Pokud se v dané cestě objeví podobné soubory vmlinuz-... e initrd.img-... a adresář grubJiž jste našli oddíl, který potřebujeme k tomu, abychom GRUBu sdělili, kde má hledat jádro.
Definujte cestu GRUB a kořenový adresář systému
Jakmile je identifikován správný oddíl, je třeba GRUBu sdělit, kde se jeho adresář nachází a jaký je kořenový adresář systému.Předpokládejme, že je to (hd0,1)V konzoli GRUB spusťte:
set prefix=(hd0,1)/boot/grub
Na některých klávesnicích může klávesa, kde se obvykle nachází otazník, způsobit znaménko rovnosti. =Pokud tedy zaznamenáte zvláštní chování, vyzkoušejte různé klávesy, dokud se neobjeví správný znak.
Dále nastavte kořenový adresář souborového systému, který bude použit pro spuštění :
set root=(hd0,1)
S těmito dvěma příkazy nyní GRUB ví, kde se nachází jeho konfigurace a který oddíl má použít jako referenci pro bootování.
Zobrazit dostupná jádra a jedno načíst ručně
Nyní je čas zkontrolovat, která jádra máme v /boot a jeden z nich načtěteMůžete ho znovu použít. ls podívat se:
ls (hd0,1)/boot/
Měli byste vidět jeden nebo více souborů s názvem podobným vmlinuz-6.1.0-10-amd64a jejich odpovídající initrd obrazy, například initrd.img-6.1.0-10-amd64Pokud potřebujete jádra zkompilovat nebo nainstalovat ručně, viz Jak stáhnout a zkompilovat linuxové jádroVyberte jedno z jader a nahrajte ho pomocí:
linux /boot/vmlinuz-6.1.0-10-amd64 root=/dev/sda1
Cesta ke kořenovému zařízení (root=/dev/sdXn) musí odpovídat oddílu, kde se váš systém nacházíGRUB čísluje disky jako hd0, hd1atd., zatímco v GNU/Linuxu se zobrazují jako /dev/sda, /dev/sdbatd. Typická ekvivalence je:
- hd0 → / dev / sda
- hd1 → / dev / sdb
- hd2 → / dev / sdc
- hd3 → /dev/sdd
Pro snazší zadávání dlouhých cest a názvů v konzoli GRUB můžete použít klávesu TAB k automatickému doplňování názvů souborů i cest k adresářům.
Nezapomeňte také načíst odpovídající initrd obraz , něco jako toto:
initrd /boot/initrd.img-6.1.0-10-amd64
Jakmile definujete jádro a initrd , zbývá už jen spustit proces bootování pomocí:
boot
Pokud vše proběhne dobře, systém by se měl spustit s vybraným jádrem . Pokud narazíte na problémy, můžete postup opakovat s jiným dostupným jádrem, například starším, dokud se systém úspěšně nespustí. Pokud potřebujete jádru předat také dočasné volby, podívejte se, jak přidat spouštěcí parametry do GRUBu.
Znovu nainstalujte GRUB z již spuštěného systému
Jakmile se vám podaří znovu přihlásit do systému, je nezbytné zajistit, aby byl GRUB správně nainstalován , abyste tento ruční proces nemuseli opakovat při každém restartu.
Otevřete terminál s oprávněními superuživatele (buď se přihlásíte jako root nebo pomocí sudo) a spustit:
grub-install /dev/sda
Ujistěte se, že zadáváte pouze celý disk a ne konkrétní oddíl.Ie /dev/sda a ne /dev/sda1Také zkontrolujte, který pevný disk máte hlavní (/dev/sda, /dev/sdbatd.) před spuštěním příkazu.
Poté je vhodné kompletně regenerovat konfiguraci GRUBu a initramfs , aby byly detekovány všechny systémy a jádra:
update-grub2
update-initramfs -u
Poté by měl být GRUB plně funkční , s aktualizovaným menu a připravený k následným restartem.
Oprava GRUBu pomocí Boot-Repair z Ubuntu Live CD/USB

Pokud se systém vůbec nespustí, nebo pokud dáváme přednost automatickému řešení , je nástroj Boot-Repair jednou z nejpohodlnějších možností. Funguje primárně z živého prostředí Ubuntu (nebo odvozeného systému) a přeinstaluje a překonfiguruje GRUB téměř bez zásahu uživatele.
Připravte si Live USB/CD
Prvním krokem je vytvoření bootovacího USB disku s Ubuntu v Live režimu . Stáhněte si ISO obraz Ubuntu z oficiálních webových stránek a na jiném počítači vytvořte bootovací USB disk:
- Ve Windows můžete použít Rufus vypálit ISO soubor na USB disk.
- V jiných distribucích GNU/Linuxu můžete použít nástroje jako Startup Disk Creator (součástí Ubuntu) nebo
ddvelmi opatrně.
Jakmile budete mít USB nebo CD připravené , připojte jej k počítači s nefunkčním GRUBem.
Spuštění z USB/CD Ubuntu Live
Zapněte nebo restartujte počítač a vstupte do nabídky rychlého spuštění , což je obvykle jedna z těchto kláves: F12, Esc, F2 nebo F10 (v závislosti na výrobci). Zde vyberte jako spouštěcí zařízení jednotku USB nebo CD. Pokud potřebujete aktualizovat BIOS z důvodu nekompatibility, podívejte se, jak aktualizovat firmware systému BIOS.
Jakmile se zobrazí nabídka Ubuntu, vyberte možnost vyzkoušet systém bez instalace (něco jako „Vyzkoušet Ubuntu bez instalace“ / „Vyzkoušet Ubuntu“). Tím se načte prostředí Live z paměti, aniž by se bylo nutné dotknout jakýchkoli disků.
Instalace Boot-Repair v živém prostředí
Jakmile se nacházíte na ploše Live, otevřete terminál (obvykle z nabídky aplikací nebo pomocí Ctrl+Alt+T ). Odtud budete muset přidat repozitář Boot-Repair a nainstalovat nástroj; postup se v průběhu času liší, ale obecně je to asi takto:
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt update
sudo apt install boot-repair
Tento proces stáhne Boot-Repair a jeho závislosti . Budete potřebovat připojení k internetu, proto před spuštěním zkontrolujte, zda má disk Live přístup k síti (kabelový nebo Wi-Fi).
Spusťte Boot-Repair a použijte doporučený opravný postup.
Po dokončení instalace spusťte nástroj pomocí:
boot-repair
Otevře se grafické okno, které automaticky analyzuje disky a nainstalované systémy . Zobrazí se dvě hlavní možnosti: Doporučeno a Upřesnit. Většině uživatelů stačí kliknout na možnost „Doporučená oprava“.
Boot-Repair přeinstaluje GRUB, regeneruje jeho konfiguraci a upraví bootovací položku na UEFI nebo MBR v závislosti na typu systému. Během procesu se mohou zobrazovat zprávy vysvětlující jeho průběh a v některých případech se může vyžadovat potvrzení určitých kroků.
Po dokončení opravy nástroj obvykle zobrazí zprávu s výsledky a odkaz na protokol (pokud v jeho nastavení neurčíte jinak). Tento protokol se hodí, pokud se něco pokazí a potřebujete požádat o pomoc na fórech nebo v komunitách.
Restartujte počítač a zkontrolujte nabídku GRUB
Jakmile nástroj Boot-Repair dokončí svou práci, zavřete nástroj, vypněte systém Live a vyjměte USB/CD . Poté normálně zapněte počítač.
Pokud vše proběhlo podle plánu, měli byste znovu vidět nabídku GRUB se všemi detekovanými systémy: vaším hlavním systémem GNU/Linux, případnými dalšími distribucemi Linuxu, případnými systémy Windows atd. Vyberte si ten, který chcete, a zkontrolujte, zda se bez problémů spustí.
Pokud se chyby stále vyskytují, můžete proces opravy spouštění zopakovat , ale tentokrát vyzkoušejte pokročilá nastavení: vyberte disk, na který chcete GRUB nainstalovat, vynuťte opravu souborového systému, změňte výchozí spouštěcí systém nebo upravte časový limit nabídky.
Ruční oprava GRUBu pomocí Ubuntu Live CD/USB (chroot)
Když se nechceme spoléhat na Boot-Repair nebo není k dispoziciGRUB z Live USB můžeme opravit manuálnějším způsobem, pomocí klasického triku chroot: připojit systémový oddíl a "vstoupit" do něj, jako bychom ho nabootovali.
Identifikace a připojení oddílu GNU/Linux
Spusťte systém z USB/CD s Ubuntu Live jako předtím a vyberte možnost „Zkusit bez instalace“. Na ploše otevřete terminál.
Začněte tím, že si pomocí nástroje jako vypíšete systémové oddíly lsblk o fdisk:
sudo lsblk
sudo fdisk -l
Najděte oddíl, na kterém je nainstalován váš systém GNU/Linux.Obvykle to bude něco jako /dev/sda1, /dev/sda2, /dev/nvme0n1p2atd. Pokud grafické prostředí disk již automaticky připojilo, můžete jako vodítko použít velikost, typ (souborový systém Linux) nebo bod připojení. Využijte této příležitosti ke kontrole stavu disku a provedení základní údržby pomocí průvodců z údržba pevných disků v Linuxu.
Jakmile to máte jasno, vytvořte přípojný bod a připojte kořenový oddíl. (za předpokladu, že ano) /dev/sda1):
sudo mount /dev/sda1 /mnt
Pokud máte oddíl /boot samostatný nebo nezávislý oddíl EFIBudete je také muset namontovat dovnitř /mnt Aby chroot fungoval správně:
sudo mount /dev/sdaX /mnt/boot # si /boot está separado
sudo mount /dev/sdY /mnt/boot/efi # si hay partición EFI
Připojte potřebné souborové systémy a použijte chroot
Před použitím chroot Některé souborové systémy z Live systému je třeba „vložit“ do připojeného prostředí.s použitím úchytů typu bind. Například:
for i in /dev /dev/pts /proc /sys /run; do sudo mount --bind $i /mnt$i; done
Pokud se při spuštění této smyčky zobrazí zpráva „syntax error near do“ (chyba syntaxe poblíž příkazu do) , pečlivě zkontrolujte, zda jste správně zadali mezery, tečky a středníky. V případě pochybností můžete jednotlivé adresáře připojit jeden po druhém:
sudo mount --bind /dev /mnt/dev
sudo mount --bind /dev/pts /mnt/dev/pts
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo mount --bind /run /mnt/run
Jakmile máte vše nastavené, přihlaste se do nainstalovaného systému pomocí:
sudo chroot /mnt
Od tohoto okamžiku se příkazy, které spustíte, budou chovat, jako byste spustili nainstalovaný systém GNU/Linux , nikoli systém Live. To vám umožní znovu nainstalovat GRUB a regenerovat jeho konfiguraci stejně jako obvykle.
Přeinstalujte a nakonfigurujte GRUB z chrootu
V prostředí chroot je přeinstalace GRUBu stejně jednoduchá jako spuštění (úprava hlavního disku podle vašeho případu):
grub-install /dev/sda
Pokud se při pokusu o přečtení zobrazí zpráva, že grub-install neexistujeBalíček GRUB nemusí být nainstalován nebo může být poškozen. V takovém případě jej zkuste znovu nainstalovat:
apt update
apt install --reinstall grub-pc # para sistemas BIOS/MBR
apt install --reinstall grub-efi-amd64 # para sistemas UEFI x86_64
Jakmile příkaz grub-install být k dispozici a pracovat, regeneruje konfiguraci GRUBu. Pokud nemáte update-grubNezapomeňte, že je to v podstatě „zkratka“ k grub-mkconfigtakže ho můžete použít přímo:
grub-mkconfig -o /boot/grub/grub.cfg
Tento příkaz analyzuje systém, detekuje jádra a další nainstalované operační systémy. a vygeneruje soubor grub.cfg včetně všech potřebných spouštěcích položek. Pokud pracujete v prostředí UEFI a máte problémy s funkcí Secure Boot, podívejte se do průvodce na Narušení zabezpečeného spouštění: Příčiny a řešení.
Ukončete chroot, odpojte a restartujte
Po dokončení přeinstalace GRUBu a regenerace konfigurace ukončete chroot zadáním:
exit
Dále odpojte souborové systémy, které jste připojili (obrácené pořadí je nejčistší):
sudo umount /mnt/run
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/dev/pts
sudo umount /mnt/dev
sudo umount /mnt/boot/efi # si la montaste
sudo umount /mnt/boot # si la montaste
sudo umount /mnt
Nyní můžete restartovat počítač, odpojit USB/CD Live a zkusit normální spuštění . Mělo by se znovu zobrazit menu GRUB a systém by měl fungovat normálně.
Zvláštní případy: šifrované systémy a chybějící nástroje GRUB
V šifrovaných systémech (např. s LUKS) nebo složitějších instalacích se problémy s GRUBem mohou stát poněkud delikátnějšími, zejména pokud kombinujete šifrované oddíly, oddíly EFI a změny jádra.
Typickým scénářem je chtít nabootovat s novým jádrem. (například upgrade z verze 6.4.xa na 6.5.x) a zjištění, že menu GRUB stále odkazuje na staré jádro nebo přímo na jádro, které již neexistuje. Pokud v tu chvíli spustíte update-grub A ukázalo se, že to není nainstalované a ty taháš za nitky grub-mkconfig -o /boot/grub/grub.cfgKonfiguraci můžete ponechat v nekonzistentním stavu. Pokud je problém způsoben chybnou položkou v /etc/fstabPodívejte se na návod, jak Oprava problému se spouštěním pomocí fstab.
V šifrovaných systémech se často stává, že po zadání dešifrovacího hesla místo pokračování v procesu spouštění přejde počítač do konfigurace UEFI nebo se zasekne s minimálními zprávami, což naznačuje, že v GRUBu nebo fázi načítání jádra došlo k vážnému problému.
Pokud se při provádění smyček budete řídit návodem z Live USB a narazíte na syntaktickou chybu for nebo složené příkazyZkontrolujte mezery, uvozovky a interpunkci. Mnoho průvodců kopíruje příkazy s zalomeními řádků nebo neobvyklými znaky, které shell při ručním zadávání neinterpretuje správně.
Kdy grub-install Není to dostupné ani v chrootu. (není to uvnitř) /usr/sbin ani v /usr/bin), znamená, že balíček GRUB není nainstalován nebo že je systém částečně poškozen. V takovém případě zkuste nejprve nástroj obnovit:
apt update
apt install grub-pc grub-efi-amd64
Pokud správce balíčků funguje a stahuje potřebné balíčky, můžete se zotavit grub-install a pokračujte v normální přeinstalaci. Pokud se vám nedaří nainstalovat ani balíčky, můžete zvážit zálohu dat a čistou přeinstalaci, i když se obvykle jedná o poslední možnost.
V každém případě, a to i v šifrovaných konfiguracíchObecná myšlenka zůstává stejná: najít správný oddíl, připojit vše potřebné, provést chroot, znovu nainstalovat GRUB a regenerovat konfiguraci. Nejsložitější je správně identifikovat, které oddíly se podílejí na procesu spouštění (EFI, /boot nešifrované, svazek LUKS, LVM atd.).
Klidným ověřením každého příkazu a zaznamenáním chybových hlášení je zcela možné zachránit systém, který se na první pohled zdá být kvůli GRUBu „mrtvý“, ať už používáte grafické nástroje jako Boot-Repair, nebo to raději provedete ručně pomocí chrootu a tradičních příkazů.
Vášnivý spisovatel o světě bytů a technologií obecně. Rád sdílím své znalosti prostřednictvím psaní, a to je to, co budu dělat v tomto blogu, ukážu vám všechny nejzajímavější věci o gadgetech, softwaru, hardwaru, technologických trendech a dalších. Mým cílem je pomoci vám orientovat se v digitálním světě jednoduchým a zábavným způsobem.
