Konflikt między tym, co mówisz o tym, że bootloader znajduje się w ROM-ie a MBR, może być spowodowane tym, że bootloader jest używany do każdego kodu, który sprawdza, jak zrobić minimum załadowania kodu, aby komputer zrobił coś użytecznego, w tym każdego stan w rozruchu wielostopniowym.
Tak więc stanem początkowym jest posiadanie komputera, który jest urządzeniem programowalnym, ale nie wie, jak załadować oprogramowanie do uruchomienia, ponieważ nie ma załadowanego żadnego oprogramowania. (I stąd boot z wyciągania się z pasków startowych ).
Historycznie istniało kilka różnych rozwiązań tego problemu, ale obecnie zaczynamy od kodu w ROM (najczęściej prawdopodobnie EEPROM), który wystarczy, aby spojrzeć na różne urządzenia i wypróbować je kolejno, aż znajdzie takie, które bootowalny.
(Dlatego wiele systemów uruchomi się z dysku CD lub DVD, jeśli włożysz dysk instalatora systemu operacyjnego z dysku twardego, inaczej BIOS [kod na ROM, w tym kod, o którym mówimy, i inne niskie -poziom, od którego zaczynają się rzeczy] ustawiono najpierw na napęd CD / DVD, a następnie na dysk twardy, jeśli niczego nie znajdzie, tweaker często ustawia go tak, aby ignorował napęd CD / DVD, chyba że zostanie o to ręcznie poproszony nie marnuje czasu na uruchamianie dysku, który nie został uruchomiony w napędzie).
Ten kod w pamięci ROM jest czasem nazywany programem ładującym .
Gdy wie, na jakim dysku należy spojrzeć, spojrzy na MBR, który zawiera informacje o podstawowych partycjach - jak możesz później spojrzeć na / lub / boot lub C: / (w systemie Windows), jeśli nawet nie wiesz, która część dysku była partycją, nie wspominając o tym, jak każda partycja została zamontowana? - i trochę kodu z dalszymi instrukcjami do wykonania. (Nawiasem mówiąc, wyjaśnia to, dlaczego niektóre systemy operacyjne - na przykład Windows - można zainstalować tylko na partycji podstawowej, szczegóły tych partycji znajdują się w MBR i to jedyne informacje o partycjach, które odczytał ich bootloader, i nie ładuje EBR do dowiedzieć się o partycjach logicznych, jeśli chodzi o te partycje nawet jeszcze nie istnieją).
Ten kod wykonywalny jest również nazywany programem ładującym . Kiedy chcemy rozróżnić to od tego, co nastąpi później, nazywa się to podstawowym programem ładującym (ponieważ chyba, że tworzymy własny BIOS, ignorujemy bit ROM, ponieważ jest poza naszą kontrolą).
Ten kod będzie bardzo mały, ponieważ zmieści się w nim tylko około 400 bajtów, więc aby zrobić cokolwiek prawdziwego, załaduje trochę więcej kodu, który może być większy, ponieważ nie musi radzić sobie z tym ograniczeniem.
Ten kod jest również znany jako bootloader . Kiedy chcemy rozróżnić to od tego, co było wcześniej, nazywa się to drugim programem ładującym .
Ten kod może być prawdopodobnie ostatnim etapem tego procesu. Byłoby tak, jeśli masz tylko jeden system operacyjny lub jeśli wszystkie systemy w twoim systemie korzystają ze zgodnych programów ładujących (np. Dwie instalacje Linuksa, które używają GRUB, więc którykolwiek GRUB został zaktualizowany jako ostatni, może zaoferować uruchomienie dowolnego z nich) przedstawia menu (w razie potrzeby) obciążenia w jądrze i przekazuje kontrolę nad systemem operacyjnym.
W przypadku systemu operacyjnego, który nie jest zgodny z tym programem ładującym, może on zostać obciążony łańcuchem. Np. Jeśli masz Windows i Linux na tym samym komputerze, opcja GRUB do ładowania systemu Windows w rzeczywistości załaduje kolejny program ładujący, który wie tylko o instalacji systemu Windows, i przekaże go. Chociaż był to trzeci etap procesu, nadal jest nazywany dodatkowym programem ładującym , ponieważ ani nie wie, ani nie obchodzi go, że działał przed nim drugi program ładujący. Tak byłoby również w przypadku instalacji Linuksa, która korzystała z innego typu dodatkowego programu ładującego.
Przeważnie, gdy mówimy o bootloaderze w kontekście Linuksa, generalnie nie mamy na myśli kodu ROM (nie jest on częścią Linuksa ani nie został zmieniony przez instalację Linuksa). Kiedy to robimy update-grub
, zmieniamy dodatkowy program ładujący, który zazwyczaj znajduje się w / boot konkretnej instalacji. Kiedy to robimy install-grub
, zmieniamy go, a także główny program ładujący w MBR, aby miał wystarczającą ilość kodu, aby wiedzieć, gdzie jest / boot (być może uruchamianie programowej macierzy RAID w miarę upływu czasu) i ładuje i wykonuje to, gdy sam się uruchomi .
Podsumowując, pomyliłeś się, mówiąc, że ROM jest częścią pamięci głównej *, ponieważ jest osobny. (Rzeczywiście, pamięć RAM jest traktowana jako antonimiczna dla ROM). Miałeś rację zarówno mówiąc, że tam był bootloader, jak i w MBR, ponieważ są to dwa etapy procesu i oba są czasami wywoływane pod tą nazwą. I odpowiedź na pytanie „Czy różne systemy operacyjne przechowują swoje programy ładujące w różnych miejscach?” jest „głównie”, ponieważ jeśli niekompatybilne dodatkowe programy ładujące ukryją inne programy ładujące (jeśli instalujesz system Windows po zainstalowaniu Linuksa) lub zostaną załadowane do drugiego programu ładującego na żądanie (jeśli naprawisz tę sytuację lub zainstalujesz system Linux po systemie Windows), ale system operacyjny może współużytkować dodatkowy program ładujący, jeśli są one kompatybilne (jeśli instalujesz Linuksa po innym systemie Linux, który używa tego samego typu dodatkowego programu ładującego, i widzi inny system Linux [czasami oprogramowanie RAID dezorientuje i powoduje konieczność ładowania łańcucha).
* W dniach, w których można programowo korzystać zarówno z pamięci ROM, jak i pamięci RAM, było inaczej. Na przykład na ZX Spectrum ROM miałby 16 kB i zawierałby interpreter języka BASIC, a także dawałby punkt wyjścia do załadowania czegoś do 48 kB lub 128 kiB (stronicowany) lub pamięci RAM (w takim przypadku zasadniczo uruchamia się ten interpreter BASIC, a następnie użycie go do rozruchu na taśmie), z interpretera BASIC można było korzystać z wielu funkcji, z których mogłyby korzystać programy w pamięci RAM (po co pisać funkcję trygonometryczną, skoro komputer ma już taką pozycję w znanej pozycji ? szczególnie, gdy masz tylko 48 kB na uruchomienie całego kodu). Ta pamięć ROM była również widoczna w taki sam sposób jak pamięć RAM, tylko pod różnymi adresami. W takim przypadku pamięć ROM była tak samo częścią pamięci głównej, jak pamięć RAM, ale nie była zapisywalna.
A small portion of a computer's main memory where the CPU expects to find its initial program is constructed from special nonvolatile memory cells. Such memory is known as read-only memory(ROM)
Według niego. Główna pamięć składa się z dwóch części: RAM i ROM. Chcę tylko wiedzieć, czy tak zwany bootloader jest zainstalowany w części ROM pamięci głównej ... @Sergey