Próbowałem dowiedzieć się nieco więcej o napędach USB i ciekawi mnie ich MBR.
Zasadniczo otwieram plik urządzenia na dysku USB i zapisuję szesnastkowo pierwsze 496 bajtów pliku. Wiem, że adresy 0x1fe i 0x1ff zawierają odpowiednio bajty 55 i aa i oznaczają koniec „głównego rekordu rozruchowego”. Nie jestem jednak do końca pewien, jaki jest główny rekord rozruchowy.
O ile wiem, po podłączeniu USB, BIOS wykonuje instrukcje zapisane w MBR - czy to prawda? Jednak większość dysków flash, które widziałem, zawierały puste sektory rozruchowe sektorów rozruchowych wypełnione ostrzeżeniami, takimi jak „Brak BOOTMGR”. Dlaczego rzadko jest jakiś wykonalny kod?
Zastanawiam się także, dla jakiego procesora jest napisany kod w MBR. Czy to 16 bitów? 32-bitowy? 64-bitowy?
Przepraszam, jeśli nie znam tematu; Jestem stosunkowo nowy w sprzęcie. Z góry dziękuję za odpowiedzi.
Odpowiedzi:
Nie wiem, dlaczego patrzysz na pierwsze 496 bajtów, ponieważ główny rekord rozruchowy (MBR) zawsze miał 512 bajtów i znajduje się w sektorze 0 (pierwszy sektor) urządzenia pamięci masowej.
MBR informuje system operacyjny o strukturze partycji urządzenia pamięci masowej, a dodatkowo zawiera także kod wykonywalny (bootloader), który instruuje komputer, jak załadować system operacyjny.
Program ładujący pojawia się na zdjęciu tylko wtedy, gdy faktycznie próbujesz uruchomić komputer z dysku flash USB. Na przykład, jeśli próbujesz zainstalować system Windows z dysku USB, który można uruchomić za pomocą oprogramowania takiego jak Rufus . Możesz dowiedzieć się więcej o strukturze MBR, czytając artykuł w Wikipedii na temat MBR .
Oto jak MBR wygląda na moim sformatowanym dysku flash NTFS:
Prawdopodobnie się pomyliłeś, mówiąc, że widziałeś puste sektory rozruchowe.
BOOTMGR not present
Ciąg widać w MBR nie jest wskaźnikiem MBR nie jest obecny na dysku flash.W rzeczywistości jest to komunikat o błędzie wyświetlany użytkownikowi, gdy próbuje uruchomić się z dysku flash, gdy nie jest skonfigurowany do uruchamiania.
MBR był w przeszłości wykorzystywany przez kilka wirusów sektora rozruchowego, takich jak Stoned i Brain , które pokazywałyby łańcuchy, takie jak
Your computer is now stoned
podczas uruchamiania komputera.Jeśli chodzi o pytanie dotyczące architektury procesora, dla którego został napisany kod bootloadera, nie jestem pewien, jaka jest odpowiedź, ale podejrzewam, że kod jest kompilowany przy użyciu 16-bitowego kompilatora, który ma być wykonywany przez procesor w trybie rzeczywistym ( Tryb 16-bitowy).
Więcej informacji znajdziesz w pytaniu SuperUser .
Jeśli chcesz dowiedzieć się więcej o programach ładujących, możesz spróbować zbudować je samodzielnie, postępując zgodnie z instrukcjami zawartymi w tym niezwykle pouczającym artykule na temat CodeProject:
How to develop your own Boot Loader
Niektóre dodatkowe informacje:
źródło