Oprava bootování na EFI systému

Windows od verze 6 (Vista a novější, tedy i Windows 10) podporují tzv. EFI systém bootování, který se liší od starého BIOS bootování. Pokud se EFI poškodí, je možno ho opravit z příkazové řádky. Tento návod můžete také použít pro přesun bootovacího svazku nebo pro opravu bootování po zkopírování disku na jiný (např. větší nebo SSD).

Poškozený disk můžete buď připojit k jinému počítači, kde spustíte cmd jako správce nebo použít instalační DVD nebo USB a kliknout na Opravit tento počítač a následně zvolit Příkazový řádek (Command prompt).

Pokud se vám nedaří zobrazit nouzovou obrazovku, podívejte se do staršího článku, kde je uveden podrobný popis.

Nejprve musíte zjistit, jaká písmena mají svazky na poškozeném disku. Zadejte tedy příkaz diskpart a následně list volume, čímž se vypíše seznam všech svazků. Instalace Windows může mít buď jeden disk (který je typicky C:) nebo je rozložen na 2 a více svazků, kde svazek označený jako „system“ obsahuje bootovací (EFI) soubory (a je skrytý a bez písmene) a další svazek pak obsahuje složku Windows (tzv. instalační disk, který má písmeno C:). Program diskpart ukončíte příkazem exit.

Pokud máte disk s 2 a více svazky (další svazky mohou být označeny jako „recovery“ nebo „obnova“ – obvykle je to u notebooků nebo předinstalovaných PC), budete potřebovat přiřadit písmenu skrytému systémovému disku. To provedete tak, že spustíte diskpart a zadáte list volume a zjistíte číslo systémového svazku. Následně zadáte select volume X, kde X je číslo daného systémového svazku, a pak zadáte assign, čímž zvolenému svazku přiřadíte první volné písmenu. Následně znovu zadejte list volume a vypíše se nově přiřazené písmeno. Písmeno opět odeberete příkazem remove. Diskpart ukončete příkazem exit.

Zadejte příkaz bcdedit a stane se jedna ze dvou věcí. Za prvé může příkaz vypsat chybu „Nenalezeno zařízení“ („Cannot find file„), což znamená, že nejprve musíte najít místo, kde je BCD uloženo, nebo za druhé vypíše dlouhý seznam, což znamená, že je BCD uloženo správně. Pro druhý případ rovnou skočte na odstavec Oprava BCD. Pokud příkaz vypsal „Přístup zamítnut“ („Access denied“), znamená to, že musíte příkazový řádek spustit Jako správce (což se stane jen při spuštění z Windows – z instalačního disku se vždy spouští jako správce).

Nalezení BCD

Pokud příkaz BCD zdánlivě nefunguje, je to pravděpodobně proto, že jste nabootovali z instalačního media a BCD je nastaven jinak (ale může to být způsobeno i jinými důvody).

Zadejte příkaz dir X: /a:hs, kde jako X zadáte nejprve písmenu systémového disku (pokud existuje) a následně písmeno instalačního disku (C:). Disk, na kterém se zobrazí složky Boot, EFI a soubor bootmgr je ten, na kterém je EFI uloženo. Na některých systémech může chybět složka EFI a disk tak obsahuje jen složku Boot a soubor bootmgr.

Pokud je přítomna složka EFI, měl by být BCD uložen v \EFI\Microsoft\Boot\BCD. V opačném případě je BCD v \Boot\BCD. Podle toho příslušně upravte dále uvedené příkazy!

Pokud není EFI uloženo ani na jednom disku, můžete ho vytvořit pomocí příkazu bcdboot C:\Windows /s X:, kde C: je písmeno instalačního disku (se složkou Windows) a X: je písmeno systémového disku, kam se uloží EFI soubory. V případě, že máte jen jeden svazek pak bude příkaz bcdboot C:\Windows /s C:. Následně by příkaz dir X: /a:hs již měl vypsat uvedené složky.

Nyní, když víte, na kterém disku je EFI uloženo, můžete použít příkaz bcdedit /store X:\EFI\Microsoft\Boot\BCD nebo bcdedit /store X:\Boot\BCD, což vypíše obsah daného BCD souboru (tedy totéž, co by vypsal samotný příkaz bcdedit, pokud by byl systém správně nakonfigurován).

Všechny následující příkazy teď budete psát ve tvaru bcdedit /store X:\EFI\Microsoft\Boot\BCD /příkaz a budete tak editovat BCD na daném disku. Například bcdedit /store X:\EFI\Microsoft\Boot\BCD /set {current} /d "Windows 10" změní jméno systému na disku X: na „Windows 10“. Nyní se můžete pustit do samotné opravy BCD.

Nejprve se ale – na PC, kam disk patří – podívejte do UEFI (náhrada BIOSu na systému, který podporuje EFI) tím, že během spouštění PC budete mačkat DEL nebo F2. Najděte položku BOOT a jako první zvolte „Windows Boot Manager“. Pokud je uveden vícekrát, znamená to, že máte soubor BCD uložen na více svazcích a musíte vybrat ten správný (což teď nemusí být poznat – až BCD opravíte, zkuste zde zvolit různé manažery a zjistit, který nabootuje).

Oprava BCD

Příkaz bcdedit by měl vypsat minimálně 2 položky: Windows Boot Manager a Windows Boot Loader. Pokud ne, podívejte se níže na Vytvoření nového BCD.

Co vás zajímá, jsou položky device a u loaderu ještě path a osdevice. Pokud je device označeno písmenem (např. C:), zkontrolujte, že je to správné písmeno. Pokud ne (např. je uvedeno písmeno D:, ale vy máte systémový disk E: a instalační C:), podívejte se níže, jak ho změnit.

Pokud je device uvedeno ve tvaru \Device\HardDiskVolumeX, znamená to, že daný svazek nemá přiřazené písmeno. Podívejte se výše, jak přiřadit písmeno svazku X. Následně postup opakujte a zkontrolujte, jestli uvedené písmeno odpovídá systémovému a instalačnímu disku.

Hodnota device pod Windows Boot Manager musí být nastavena na disk, na kterém se nalézá soubor BCD. Pokud je nastaven jiný disk, zadejte příkaz bcdedit /set {bootmgr} device partition=E: (nezapomeňte přidat /store, pokud je BCD uložen jinde), kde E: je písmeno disku obsahujícího BCD soubor (viz výše Nalezení BCD). Pokud je místo písmene uvedeno „Neznámý“, odkazuje na disk, který již není připojen k počítači. Pomocí předchozího příkazu tedy nastavte správné písmeno.

Hodnota device pod Windows Boot Loader musí být nastavena na disk, na kterém se nalézá složka \Windows, hodnota osdevice musí být nastavena na totéž písmeno a path musí odkazovat na soubor \WINDOWS\system32\winload.efi nebo \WINDOWS\system32\winload.exe (nebo podobný – může se lišit podle verze Windows). Pokud je nastaven jiný disk, zadejte příkaz bcdedit /set {guid} device partition=C:, kde C: je písmeno disku se složkou Windows a {guid} je hodnota, kterou bcdedit uvádí pod identifier (může to být {current}, {default} nebo nějaký náhodný guid jako třeba {4ab0a9ca-72c3-11e6-868b-82ae9943e95d}).

Pokud se liší osdevice, zadejte bcdedit /set {guid} osdevice partition=C:, kde opět změňte C: a {guid}. A pokud path odkazuje na neexistující soubor, můžete to opravit zadáním bcdedit /set {guid} path "\Windows\system32\winload.efi", kde cestu můžete ověřit příkazem dir C:\Windows\system32\*.efi (soubor není skrytý ani systémový, takže se normálně zobrazí).

Vytvoření nového BCD

Pokud jste na disku sice našli soubor \EFI\Microsoft\Boot\BCD nebo \Boot\BCD, ale soubor je příliš malý (měl by mít alespoň 20kB) nebo prostě nefunguje (příkaz bcdedit /store X:\EFI\Microsoft\Boot\BCD vypíše chybu), můžete se ho pokusit opravit nebo vytvořit nový.

Zkuste příkaz dir X:\EFI\Microsoft\Boot\ /a:hs nebo dir X:\Boot\ /a:hs (příp. bez /a:hs) a podívejte se, jestli nejsou v seznamu nějaké záložní soubory (např. BCD.backup.001 nebo BCD.bak). Pokud ano, použijte příkaz bcdedit /import X:\EFI\Microsoft\Boot\BCD.backup.001, čímž soubor BCD přepíšete zálohou. Pokud je záloh více, zkuste je postupně všechny a zjistěte, která funguje.

Pokud žádnou zálohu nemáte, nebo žádná nefunguje, budete muset vytvořit nový soubor BCD. Pozor, následující příkazy uvádějte pouze s uvedenými parametry. Nepřidávejte /store tam, kde to není výslovně uvedeno. Samozřejmě písmeno disku a cestu změňte podle potřeby (X:\EFI\Microsoft\Boot\ nebo X:\Boot\ – pro přehlednost budu používat tu kratší cestu).

Pokud soubor BCD existuje, nejprve ho zbavte jeho atributů attrib -h -s E:\Boot\BCD a následně ho smažte del E:\Boot\BCD. Pokud neexistoval, nic se neděje a pokračujte dál.

Nyní vytvoříme dočasný soubor, se kterým budeme pracovat bcdedit /createstore E:\Boot\BCD.tmp, a vytvoříme v něm nový Boot manažer bcdedit /store E:\Boot\BCD.tmp /create {bootmgr} /d "Windows Boot Manager" (popis neměňte!).

Teď můžete nový manažer naimportovat bcdedit /import E:\Boot\BCD.tmp (pokud nefunguje, zkuste bcdedit /store E:\Boot\BCD /import E:\Boot\BCD.tmp podle cesty k souboru, který jste smazali) a dočasný soubor smazat del E:\Boot\BCD.tmp. Následně postupujte podle výše uvedené kapitoly Oprava BCD a nastavte device příkazem bcdedit /set {bootmgr} device partition=E:.

Teď musíte do manažeru přidat instalaci Windows. To můžete udělat buď příkazem bootrec /rebuildbcd, který automaticky najde všechny složky Windows a přidá je do seznamu (stiskněte A a pak Enter), nebo ručně pomocí bcdboot C:\Windows. První příkaz je dostupný jen z instalačního média.

Třetí možnost je vytvořit všechny položky ručně, postupně pomocí příkazů:

bcdedit.exe /create /d "Windows" /application osloader
bcdedit.exe /set {guid} device partition=C:
bcdedit.exe /set {guid} osdevice partition=C:
bcdedit.exe /set {guid} path \Windows\system32\winload.efi
bcdedit.exe /set {guid} systemroot \Windows
bcdedit.exe /displayorder {guid}

Místo {guid} uveďte GUID, který vrátí první příkaz /create a místo C: a \Windows uveďte správné písmeno a cestu.

Vytvoření EFI partition (ESP oddílu)

Pokud se disk poškodil na tolik, že jste přišli o (skrytý) oddíl obsahující BCD soubor potřebný pro načtení EFI, můžete ho vytvořit pomocí nástroje diskpart, který je součástí Windows 10 a nebo jejich instalačního disku (DVD či USB). Zkratka ESP znamená „EFI System Partition“.

Spusťte příkazový řádek jako Správce (nebo nabootujte z instalačního disku) a zadejte příkaz diskpart. Ten spustí vlastní příkazový řádek.

Zadejte příkaz list disk a zobrazí se seznam všech disků v počítači. Vyberte ten, na kterém chcete vytvořit EFI oddíl a na začátku řádku uvidíte jeho číslo. Zadejte tedy příkaz select disk X, kde X je číslo zvoleného disku.

Pokud jsou na disku nějaké staré oddíly a chcete je smazat, zadejte příkaz clean. POZOR NA TO, ŽE TENTO PŘÍKAZ ZNIČÍ VŠECHNA DATA NA DISKU!

Pokud jsou na disku jiné oddíly, které chcete zachovat, přesvědčte se, že je na něm alespoň 500MB volného nepřiřazeného místa. S tím vám může pomoci příkaz shrink desired=500.

Následně zadejte příkaz create partition efi size=500, čímž vytvoříte 500MB oddíl (automaticky ve volném místě na disku).

Pokud je disk prázdný a chcete na něm vytvořit další oddíl pro systém nebo data, můžete to provést příkazem create partition primary, který automaticky vyplní disk dalším oddílem. Následně můžete příkazem list part zobrazit oddíly na disku, příkazem select part X vybrat zvolený disk a příkazem format recommended ho zformátovat. Do příkazu format můžete přidat ještě parametry quick (rychlé formátování) a compress (aktivuje kompresi dat pro úsporu místa).

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..