Autor Wątek: Bootsector FAT16 dla dysku twardego IDE0 Master (32, 64 bit)  (Przeczytany 2781 razy)

akasei

  • Nowy u
  • *
  • Wiadomości: 10
    • Zobacz profil
    • Wataha.net
Bootsector FAT16 dla dysku twardego IDE0 Master (32, 64 bit)
« dnia: Listopad 15, 2013, 01:43:42 »
Totalna aktualizacja!

Prezentuje teraz dwa sektory rozruchowe 32bit i 64bit.

Wersja 32bit: http://wataha.net/system/32bit/
Wersja 64bit: http://wataha.net/system/64bit/

Rzuty ekranu z przykładu działania:
- http://wataha.net/system/32bit/32bit.png
- http://wataha.net/system/64bit/64bit.png

Bootsector i program GRUB ładuje plik o nazwie KERNEL znajdujący się w głównym katalogu systemu plików FAT 16 do pamięci pod adres 0x100000 (pierwszy mebibajt pamięci)

Aby załadować własny plik jądra 32 lub 64 bitowego, w przypadku systemu operacyjnego Windows należy wykorzystać darmowe oprogramowanie np. OSFMount http://www.osforensics.com/tools/mount-disk-images.html.

Jeśli chodzi o systemy GNU/Linux, osoby z niego korzystające już wiedzą jak to zrobić 8)

Konfiguracja programu do wirtualizacji (np Bochs) powinna być ustawiona na minimum 2 MiB pamięci RAM (standardowo Bochs ustawia 32 MiB).

Nic teraz nie stoi na przeszkodzie do pisania własnego jądra w samym C, C++ itp.

Jakakolwiek modyfikacja pliku GRUB z załączonego dysku, może być wynikiem nieprawidłowego działania sektora rozruchowego.

Przykładowe 64 bitowe jądro w języku asemblera ;)
[BITS 64] ; kod 64 bitowy
[ORG 100000h] ; pierwszy mebibajt pamięci

mov rsi, powitanie
call wypisz_tekst_64bit

jmp $ ; koniec programu

; prodstawowe procedury obsługi ekranu
%include "wypisz 64bit.asm"

powitanie db 'Witaj w 64 bitowym jajku!', 0

Błąd 0x00:
Brak pętli w przygotowywaniu stronicowania ograniczał rozmiar ładowanego jądra systemu do 960 KiB (0x100000 - tablice ACPI). Stronicowane było tylko pierwsze 2 MiB pamięci.
Naprawa 0x00:
Stronicowana jest pamięć 64 MiB, dwukrotnie większy rozmiar pamięci, niż możliwy rozmiar jądra na załączonym obrazie dysku. (Twoje jądro systemu jest większe niż wirtualny dysk? Wiedz, że coś się dzieje!  :o)

Jakiekolwiek problemy z działaniem, proszę zgłaszać poniżej.
« Ostatnia zmiana: Listopad 23, 2013, 01:25:30 wysłana przez akasei »