Co dokładnie sprawia, że BIOS decyduje, czy dysk można uruchomić?
BIOS decyduje, czy napęd rozruchowy oparty na płycie działowej 16 bajtów, obecne po obszarze MBR (utrzymywany w tabeli zaczynając od 446 p bajtów). Pierwszy bajt w każdym rekordzie partycji reprezentuje stan rozruchowy dysku (i jest ustawiony na 0x80
rozruchowy lub 0x00
jeśli nie). Niektóre BIOS-y mogą sprawdzać inne części MBR (np. Typy partycji, sumy kontrolne), ale podstawowym wymaganiem jest flaga startowa.
W jaki sposób sekwencja rozruchowa przeskakuje z dysku nr 1 i kontynuuje próbę rozruchu z dysku nr 2, jeśli w systemie jest zainstalowany więcej niż jeden dysk?
Jest to zależne od implementacji i dlatego musisz odpowiednio wybrać kolejność rozruchu. W większości przypadków BIOS przejrzy każdy nośnik pamięci w ustalonej kolejności i określi, czy można go uruchomić z tego urządzenia (za pomocą danych MBR). Jeśli to możliwe, robi to - jeśli nie, kontynuuje zapętlanie innych urządzeń (ponownie, w wybranej kolejności).
Po tym, jak BIOS przeniósł kontrolę do bootloadera na dysku nr 1, który akurat nie miał partycji „bootowalnych” - jak dokładnie jest wywoływany bootloader na drugim dysku?
Po znalezieniu prawidłowego urządzenia rozruchowego (tj. Ustawieniu flagi rozruchowej i pozytywnym przejściu innych kontroli) BIOS kopiuje sektor MBR do pamięci RAM. BIOS następnie przenosi wskaźnik instrukcji na początek tej lokalizacji (za pomocą JUMP
instrukcji), gdzie znajduje się segment kodu MBR, a następnie komputer się uruchamia.
Jeśli system BIOS obsługuje specyfikację rozruchu systemu BIOS , kod MBR może przywrócić kontrolę do systemu BIOS za pomocą określonej instrukcji, sygnalizując awarię rozruchu i monitując o wypróbowanie następnego urządzenia. Starsze BIOS-y po prostu drukują komunikat o błędzie. Dobrze powiedzieć, czy BIOS obsługuje to, czy można uruchomić z USB.
Rozumiem, że jedyną rzeczą, którą BIOS zwykle sprawdza w MBR, jest jego podpis na samym końcu 512-bajtowego sektora, a następnie po prostu przenosi kontrolę do początkowego programu ładującego znajdującego się w pierwszych 446 bajtach sektora rozruchowego.
Jest to poprawne, chociaż należy zauważyć, że większość współczesnych BIOS-ów będzie również szukać tabeli partycji GUID, a także starszej, tradycyjnej tabeli w stylu MBR.
Czy to oznacza, że pierwsze 446 bajtów sektora rozruchowego MUSI zawierać jakiś znaczący kod programu ładującego, nawet jeśli dysku nie można uruchomić?
Nie , ale dysk musi mieć prawidłową tablicę partycji MBR lub GUID - w przeciwnym razie komputer nie wykryje go. Podczas gdy część kodowa MBR może być rzeczywiście pusta, pierwszy sektor dysku musi mieć dobrze uformowany MBR / GPT.
fdisk
będzie obsługiwać te przypadki, choć pierwotna wersja zrobił flag nieprawidłowe nagłówki MBR). Poradziłem OP, aby opublikował surowy nagłówek MBR, ale może także chcieć „włączyć” / wyłączyć flagę rozruchową (aby ręcznie ustawić / zresetować flagę).