Dlaczego potrzebujemy modułu ładującego?

29

Po uruchomieniu systemu BIOS lub czegoś podobnego, który służy jako oprogramowanie układowe, kontrola jest przekazywana do programu ładującego, o ile wiem.

Dlaczego BIOS nie może bezpośrednio załadować jądra systemu operacyjnego?

Ponadto instrukcja GRUB mówi: krótko : moduł ładujący jest pierwszym programem, który działa podczas uruchamiania komputera . Czy BIOS nie jest pierwszym uruchomionym programem?

aoeui
źródło
2
Powiązany materiał do czytania: superuser.com/questions/395301/why-must-a-computer-have-a-bios
Der Hochstapler

Odpowiedzi:

28

BIOS musiałby wiedzieć, jak załadować jądro, a to nadmiernie skomplikowałoby BIOS: wyobraź sobie BIOS, który musi wiedzieć, jak załadować wiele dostępnych systemów operacyjnych, jak przekazać im parametry jądra itp.

W ten sposób inicjuje tylko sprzęt i przeskakuje do znanego miejsca, w którym przechowywany jest program ładujący; następnie kontrola jest przekazywana do niego.

Z Unixa i podstaw Internetu HOWTO :

Możesz się zastanawiać, dlaczego BIOS nie ładuje jądra bezpośrednio - dlaczego dwustopniowy proces z programem ładującym? Cóż, BIOS nie jest zbyt inteligentny. W rzeczywistości jest to bardzo głupie i Linux nie używa go wcale po uruchomieniu. Został pierwotnie napisany dla prymitywnych komputerów 8-bitowych z małymi dyskami i dosłownie nie ma dostępu do wystarczającej ilości dysku, aby bezpośrednio załadować jądro. Krok modułu ładującego pozwala również uruchomić jeden z kilku systemów operacyjnych z różnych miejsc na dysku, w mało prawdopodobnym przypadku, gdy Unix nie jest dla ciebie wystarczająco dobry.

Jeśli chodzi o BIOS, który jest pierwszym programem, który działa: (z Wikipedii )

Oprogramowanie BIOS jest wbudowane w komputer i jest pierwszym kodem uruchamianym przez komputer po włączeniu („oprogramowanie rozruchowe”).

Ale oprogramowanie układowe to oprogramowanie. Zakładam więc, że instrukcja GRUB jest co najmniej myląca z tej strony; bootloader może być postrzegany jako pierwsze oprogramowanie zdefiniowane przez użytkownika, które działa na komputerze.

Renan
źródło
10

Powodem jest elastyczność. Możesz mieć kilka różnych systemów operacyjnych na jednym dysku twardym (Windows, Linux itp.) Lub możesz mieć kilka różnych wersji tego samego systemu operacyjnego. Dlatego lepiej jest mieć kod niezależny od systemu operacyjnego, który wie, gdzie znajduje się każdy system operacyjny zainstalowany na dysku twardym, jak załadować każdy z nich, który z nich załadować, czy przedstawić menu, czy nie, itd. To jest program ładujący.

System BIOS ładuje i wykonuje kod znajdujący się we wcześniej określonej lokalizacji na dysku twardym (pierwszy sektor). Ten kod nazywamy bootloaderem, ale technicznie rzecz biorąc, jeśli zainstalowałeś system Windows na czystym dysku twardym, ten kod jest również instalowany przez system Windows, więc możesz nazwać go częścią systemu Windows, zwłaszcza, że ​​bootloader systemu Windows nie może załadować żadnego innego systemu operacyjnego poza Windows.

Jeśli chodzi o pierwszy program, który uruchamia się po uruchomieniu komputera: rozróżnienie oprogramowania wewnętrznego / oprogramowania jest dość cienkie, a proces uruchamiania nowoczesnego komputera jest bardzo skomplikowany. BIOS sam w sobie nie jest także programem monolitycznym, lecz połączonymi ze sobą kilkoma odrębnymi etapami. Jednak program ładujący jest pierwszym działającym kodem, który może zmienić użytkownik . Jest to pierwszy fragment kodu, który użytkownik może uszkodzić, usunąć, zainfekować wirusem itp. Przypuszczam, że chociaż technicznie BIOS jest pierwszym oprogramowaniem, które działa, bootloader jest pierwszy w tym sensie, że jeśli komputer nie uruchamia się, użytkownik potrzebuje aby sprawdzić, czy jest w porządku.

haimg
źródło
1
Z doświadczenia użytkownik z pewnością może złamać BIOS.
Przestań krzywdzić Monikę
2

Dlaczego BIOS nie może bezpośrednio załadować jądra systemu operacyjnego?

Trzy powody:

  • BIOS na oryginalnej platformie PC, kiedy został wprowadzony w 1981 roku, miał działać w tej samej roli, co w systemie operacyjnym CP / M - czyli cienkiej warstwie abstrakcji dla kilku urządzeń i prostym bootloaderze. CP / M miał inną warstwę o nazwie „BDOS”, która obsługiwała system plików. DOS był podobny do CP / M pod wieloma względami, ponieważ był wówczas modnym systemem operacyjnym i miał podobną strukturę. System BIOS miał obsługiwać specyficzne dla sprzętu aspekty platformy - rolę, którą pełnią teraz sterowniki w systemach operacyjnych.

  • Pojęcie systemu plików oddzielnego od systemu operacyjnego jeszcze się nie potwierdziło.

  • W tym czasie RAM i ROM były drogimi i ograniczonymi zasobami. Oryginalny komputer IBM 5150 można uzyskać przy zaledwie 16 KB pamięci RAM ( odniesienie ). Wielkość ROM tego systemu wynosiła 48 KB i zawierał on interpreter języka BASIC. W tym czasie nie było czegoś takiego jak standardowy system plików.

Odkąd DOS stał się najpopularniejszym systemem operacyjnym dla tej platformy, a następnie Windows, który działał z tą konfiguracją, nikt nie pomyślał o rozszerzeniu BIOS-u w ten sposób, aby obejmował rzeczywiste możliwości ładowania.

Nie jestem pewien możliwości UEFI - może mieć rzeczywistą zdolność do ładowania, która nie jest używana przez Windows z tego czy innego powodu (Windows nalega na użycie własnego menedżera rozruchu podczas instalacji). Inne oprogramowanie układowe inne niż BIOS, takie jak U-Boot oraz te w wielu telefonach i routerach, bezpośrednio ładują i uruchamiają jądra. Nie było tego technicznego powodu, odkąd BIOSy zaczęły mieć miejsce w pamięci ROM, aby zrobić więcej rzeczy.

LawrenceC
źródło