BCDBoot w akcji. Czyli jak przywrócić pliki rozruchowe Windows.

Czy zdarzyło się kiedyś wam utracić możliwość uruchomienia systemu Windows na skutek uszkodzenia lub niechcianej modyfikacji partycji rozruchowej EFI? W przypadku instalacji pojedynczej to są rzadkie przypadki. Natomiast w konfiguracjach multiboot, czyli gdy mamy wiele systemów operacyjnych tego typu przypadki zdarzają się częściej. I w tym momencie wkracza do akcji narzędzie BCDBoot.

BCDBoot to narzędzie wiersza poleceń (CLI) służące do konfiguracji plików rozruchowych w celu uruchomienia systemu operacyjnego Windows. Krótko mówiąc, tym narzędziem sprawimy, że ponownie będziemy mogli uruchomić system Windows po jakiejkolwiek niechcianej zmianie na partycji rozruchowej (systemowej).

W momencie, gdy utracimy kontakt z systemem Windows, po narzędzie BCDBoot możemy sięgnąć za pomocą trybu odzyskiwania z nośnika instalacyjnego Windows. Polecam też narzędzie WinPE 10-8 Sergei Strelec.

Tryb odzyskiwania systemu Windows.

Gdy już znamy przeznaczenie BCDBoot przejdźmy do zapoznania się z jego obsługą. Ja postaram się także wytłumaczyć obsługę tego narzędzia na mojej przykładowej konfiguracji.

W teorii

Podstawowa składnia wygląda następująco:

BCDBOOT <source> [/l <locale>] [/s <volume-letter> [/f <firmware type>]] [/v] [/m [{OS Loader GUID}]] [/addlast or /p] [/d] [/c]
OpcjeOpis
<źródło>Opcja jest wymagana. Określamy lokalizację katalogu Windows, z którego będą skopiowane pliki środowiska rozruchowego.
/l <locale>Opcja jest niewymagana. Określamy, w jaki języku mają być wyświetlane komunikaty podczas uruchamiania systemu.
/s <volume-letter> /f <firmware type>Opcja niewymagana. Określamy literę woluminu partycji rozruchowej (EFI, systemowej), oraz podajemy typ oprogramowania układowego, BIOS lub UEFI.
/vTryb w którym będą wypisywane informacje o postępie.
/addlastOpcja niewymagana. Określa, że wpis oprogramowania układowego Menedżera rozruchu systemu Windows powinien zostać dodany na końcu. Opcji nie można używać równocześnie z /p.
/pNiewymagana. Określa, że istniejący wpis w Windows Boot Manager (menedżer rozruchu Windows) powinien zostać na dotychczasowej pozycji uruchamiania w UEFI.
/dNiewymagana. Zachowuje istniejący domyślny wpis systemu operacyjnego w obiekcie {bootmgr} w menedżerze rozruchu Windows.
/cNiewymagana. Określa, że wszelkie istniejące elementy BCD nie powinny być migrowane.

W tym momencie powyższy opis może być dla Ciebie zbyt techniczny i niezrozumiały, ale postaram się jeszcze przedstawić działanie BCDBoot na konkretnym przykładzie i wtedy powinno już się wszystko wyjaśnić.

W praktyce

Zacznę od ustalenia, jaką mamy konfigurację partycji. Do tego celu użyję narzędzia graficznego, jednak w realnym przypadku posłuże się diskpart (list disk, list volume).

Rozkład partycji na dysku.

Według powyższej ilustracji mam partycje EFI (rozruchową), kolejne dwie to partycje systemu Linuks. Na czwartej znajduje się Windows 7 oraz na ostatniej jakieś dane. Ja chcę skonfigurować, dodać wpis do menedżera rozruchu dla systemu Windows 7. W takim wypadku w terminalu uruchamiam następujące polecenie:

bcdboot C:\ Windows /l pl-pl

Zakładam hipotetycznie, że czwarta partycja z etykietą SYSTEM7 (czyli na której znajduje się Windows 7) ma nadaną literę dysku C. W takim wypadku powyższe polecenie kopiuje pliki rozruchowe z lokalizacji, w której znajduje się Windows 7 (C:\Windows) na partycje rozruchową (EFI, automatycznie jest wykrywana). Natomiast dzięki opcji /l pl-pl będą wyświetlane komunikaty podczas uruchamiania, zamykania systemu w języku polskim. Kolejny przykład to:

bcdboot C:\ Windows /l pl-pl /s Z: /f UEFI

W tym przykładzie doszły dwie opcje. Pierwsza (/s Z:) określa gdzie znajduje się partycja rozruchowa EFI, w tym przypadku jest na woluminie Z. Druga (/f UEFI) określa, jaki mamy typ oprogramowania układowego, BIOS lub UEFI.

W przypadku gdy nie mamy przypisaną literę dysku do partycji rozruchowej (EFI), to musimy najpierw ją przypisać. W tym wypadku wystarczy uruchomić poniższe polecenia.

Diskpart
DISKPART> list volume         //wyświetlenie listy woluminów 
DISKPART> select volume 1     //wybranie woluminu z partycją EFI
DISKPART> assign letter=Z     //przypisanie litery

Podsumowanie

Mam nadzieję, że udało mi się przekazać wiedzę w sposób zrozumiały a wszystkich, którzy jeszcze mają poczucie niedosytu odsyłam do dokumentacji, w której ten aspekt jest wyczerpany do końca. Jak zawsze, w szczególności zapraszam wszystkich do wspólnej dyskusji.

Linki

9 komentarzy do “BCDBoot w akcji. Czyli jak przywrócić pliki rozruchowe Windows.”

  1. Wielkie dzięki za ten opis. Uratowałeś mnie przed formatem. Miałem dwa dyski z dwoma różnymi windowsami (do różnych celów) i po aktualizacji windowsa zniknął mi ten drugi. Dałem „napraw” przy bootowaniu i wyleciał w kosmos drugi. Znalazłem kilka tutoriali ale twój jest bez błędów i dokładnie wyjaśnia co robić. THX.

    Odpowiedz
      • Również dziękuję. Przydał się artykuł, abym mógł zrozumieć czym jest bcdboot i do czego może się przydać.

        Artykuł pozwolił mi odkryć to narzędzie i kilka innych za pomocą których mogłem świadomie pobawić się WBM (Windows Boot Manager) i Grubem (Linux) – jedną z fajnych rzeczy jakie daje bcdboot jest możliwość zmiany języka WBM – bez konieczności przeprowadzania ponownej instalacji systemu Windows.

        Pozdrawiam serdecznie!

        Odpowiedz
  2. Geniusz! Dzięki – taka ciekawostka – wywaliło mi „windows boot manager” podczas restartu przy podłączonym dysku pod USB… nie wiem czy – ale wydaje się mieć związek wykrycie dysku przez system i pomieszanie liter – windowsowy dysk dostał literę e!. Szukałem rozwiązania przeszło 3 godziny… wszelkie bootrec itp…wypróbowałem i tutaj znalazłem wreszczie! Jeszcze raz dzięki!

    Odpowiedz
  3. Dzień dobry, dziękuję, że prowadzi Pan taki fajny blog i proszę o pomoc. Windows 10 zainstalował mi się na odpowiednim dysku fizycznym, na partycji C, ale partycja rozruchowa zrobiła mi się na innym dysku na partycji E. Jak należy skonstruować polecenie BCDBoot, żeby dane rozruchowe przeniosły mi się na C, żebym mógł sformatować E?

    Odpowiedz
    • Dzień dobry, W twoim przypadku będzie trzeba wykonać kilka operacji na dyskach. Po pierwsze musisz utworzyć nową partycję EFI na prawidłowym dysku. Czyli partycję o rozmiarze, powiedzmy, niech to będzie 200 MB. Następnie trzeba sformatować ją do systemu plików FAT32 oraz ustawić dwie flagi boot oraz esp. Teraz możemy usunąć partycje E i uruchomić komputer z trybem wiersza poleceń. Można do tego celu użyć nośnika z instalatorem systemu Windows lub dowolnego z zawartością narzędzi diagnostycznych mający wiersz poleceń. Dopiero teraz tworzymy odpowiednią zawartość nowej partycji EFI poleceniem z artykułu powyżej, czyli:

      bcdboot C:\ Windows /l pl-pl

      Odpowiedz
      • Dziękuję za odpowiedź, ale zapomniałem napisać, że zainstalowałem windowsa 10 w trybie BIOS, a nie UEFI. Początkowo myślałem, że nie jest prawidłowe polecenie:
        bcdboot c:\windows /s c:
        bo nadal było bootowanie z E, ale wystarczyło odłączyć dysk E i po restarcie partycja C zrobiła się partycją rozruchową.

        Odpowiedz

Dołącz do rozmowy

Witaj na moim blogu, gdzie elektronika i oprogramowanie to główne tematy. Jako osoba za sterami tego miejsca, dążę do dostarczania wartościowych treści. Twoje komentarze stanowią dla mnie napęd do ciągłego doskonalenia. Ciekawią mnie Twoje myśli, pytania i osobiste doświadczenia związane z tym fascynującym światem. Przeglądając wpisy, na pewno masz wiele pomysłów i opinii. Nie krępuj się, podziel się nimi poniżej. Każdy komentarz to nie tylko opinia zwrotna, ale także początek inspirującej dyskusji.