Jak w systemie podwójnego rozruchu BIOS wybiera, który program ładujący ma zostać uruchomiony?

24

Mam podwójny rozruch systemu Windows i Ubuntu. Po włączeniu komputera system BIOS wykonuje test POST, a następnie uruchamia się program ładujący.

Chcę zrozumieć, w jaki sposób BIOS wybiera, który program rozruchowy ma zostać uruchomiony. Chcę poznać proces zachodzący między systemem BIOS a programem ładującym w komputerze z podwójnym uruchomieniem.

Prashant Singh
źródło

Odpowiedzi:

40

Oprogramowanie układowe BIOS tak naprawdę nie wybiera programu ładującego. Ładuje kod z sektora 0 dysku i wykonuje go. Cokolwiek tam będzie, wykona się. Mam nadzieję, że jest to program ładujący (lub coś, co ładuje program ładujący), ale nie musi tak być. We wczesnych czasach komputerów na dyskietkach istniały gry, które po prostu uruchamiałyby się i działały bez systemu operacyjnego - teraz nazywane są „bootami”.

Oprogramowanie układowe UEFI faktycznie rozpoznaje partycje i systemy plików oraz skanuje dyski w poszukiwaniu typu partycji systemowej UEFI. Ponieważ jest to system plików, można tutaj umieścić wiele programów ładujących. Oprogramowanie układowe UEFI powinno zapewniać menu lub inny sposób wybierania używanego programu ładującego.

Wiele systemów UEFI uruchamia się w „Starszym trybie” - gdzie UEFI ładuje „Moduł usługi zgodności” - coś, co sprawia, że ​​wygląda jak BIOS - i faktycznie działa jak BIOS.

GRUB jest popularnym programem ładującym typu open source, który może uruchamiać Linuksa lub „ładować” (przekazać kontrolę) programowi ładującemu systemu Windows (zwykle winload.exe w folderze Boot partycji Windows). GRUB daje ci możliwość podjęcia decyzji. GRUB może odczytywać pliki konfiguracyjne i wybierać spośród nich domyślny wybór.

Przeczytaj to, jeśli chcesz obfite, krwawe szczegóły.

LawrenceC
źródło
Jest to jeden z powodów, dla których w Ubuntu potrzebujesz sudolub root, aby zapisać cokolwiek na odmontowanym dysku; jeśli program lub złośliwy użytkownik zapisuje złośliwe oprogramowanie na partycji rozruchowej ...
wizzwizz4,
Dzięki, LawrenceC, twoje wyjaśnienie wyjaśniło moje wyjaśnienie. Jeszcze raz dziękuję
Prashant Singh
13

Ten schemat pokazuje, jak kontrola przechodzi z oprogramowania układowego (BIOS lub UEFI) do programu ładującego i od programu ładującego do systemu operacyjnego w systemie Ubuntu.

wprowadź opis zdjęcia tutaj
          BIOS vs. UEFI

Jeśli systemy operacyjne zostały zainstalowane w różnych trybach (BIOS i UEFI), podwójne uruchamianie Windows i Ubuntu nie będzie działać.


Konwersja Ubuntu do trybu UEFI

  1. Uruchom Boot-Repair i wybierz Opcje zaawansowane -> zakładka lokalizacji GRUB .
  2. Jeśli nie widzisz opcji oddzielnej partycji / boot / efi , oznacza to, że twój komputer nie ma żadnej partycji UEFI.
  3. Jeśli zobaczysz opcję oddzielnej partycji / boot / efi , zaznacz pole wyboru w polu wyboru po lewej stronie, a następnie kliknij przycisk Zastosuj w prawym dolnym rogu.

    Konwersja Ubuntu do trybu UEFI

  4. Skonfiguruj system BIOS, aby uruchamiał dysk twardy w trybie UEFI. Sposób dostosowania tego ustawienia zależy od konkretnego modelu komputera, ale ogólnie to ustawienie znajduje się w ustawieniach priorytetu rozruchu na karcie Uruchamianie narzędzia konfiguracji BIOS / UEFI.

Karel
źródło
7

W trybie starszym (rozruch systemu BIOS, a nie UEFI) BIOS kontroluje kolejność dysków. Dawno temu było to kontrolowane przez kable; ale zmiana ustawienia systemu BIOS oznacza szybsze otwieranie pudełka i zmianę kabli.

BIOS ładuje (do pamięci) pierwszy sektor (512 bajtów dysku o nazwie MBR lub główny rekord rozruchowy) pierwszego dysku (lub kolejności dysków kontrolowanej przez BIOS), a następnie przekazuje kontrolę (CPU) do tego „bootloadera”. W ten sposób BIOS zakończył pracę i kod w pierwszym sektorze działa.

guiverc
źródło
SORRY sir ale jestem nieco mylić jak bios dają kontrolę do ładującego i okna i linux mają różne ładującego tak, do których startowego to daje kontrolę .Co bios proces przejść, aby wybrać program rozruchowy
Prashant Singh
2
Twój system może mieć tylko jeden moduł ładujący na dysk (i tylko jeden jest zawsze aktywny). Ogólnie, jeśli masz w systemie dwa systemy operacyjne, drugi zainstalowany jest właścicielem programu ładującego, ponieważ zapisał swój własny kod w MBR. Właśnie dlatego GNU / Linux (Ubuntu) używa GRUB; jest to system wieloetapowy (krok 1 to MBR, kroki 1.5 i 2 znajdują się w katalogu / boot), który wyświetla menu z pytaniem, który system operacyjny chcesz załadować / uruchomić (te, które grub i tak wie o tym, plus cokolwiek masz ISO dodane do niego). Jeśli masz dwa napędy dyskowe; możesz mieć program ładujący na każdym dysku, ale BIOS określi, który zostanie uruchomiony.
guiverc
Więc jeśli mam 2 system operacyjny na moim komputerze, to GRUB musi ustawić menu z pytaniem, które systemy operacyjne chcę załadować, dlaczego nie program ładujący systemu Windows umieścił to menu, ponieważ mam oba systemy operacyjne na moim komputerze.
Prashant Singh
Windows ma również moduł ładujący (w każdym razie do visty); ale nie jest tak mądry jak grub. wersja windoze nie wyszukuje produktów innych niż msft (i nie może czytać ext / reiserfs / xfs / zfs / btrfs / ...), dlatego musisz sam dodać * nix; i następna aktualizacja ..... wersja windoze nie jest warta użycia, ponieważ grub jest o wiele lepszy. Jeśli windoze był na jednym dysku, Ubuntu na drugim można zmienić boot przez BIOS; ale grub jest szybszy / łatwiejszy. (jeśli jestem zadowolony z mojej odpowiedzi; zaakceptuj ją, aby zamknąć pytanie)
guiverc
3
@Prashant Singh: Najbardziej podstawowym powodem, dla którego bootloader Windowsa tego nie robi (lub nie robił tego, kiedy wiedziałem trochę o Windowsie) jest to, że MicroSoft nie zarabia pieniędzy, pozwalając na uruchamianie innych systemów operacyjnych.
jamesqf