Przygotowanie projektu

Dzisiaj przygotujemy strukturę projektów pod system. Aby zacząć stwórzmy jakiś folder nadrzędny. Polecenie

mkdir <nazwa folderu>

tworzy nowy folder. Nasz OS będzie oparty na jądrze monolitycznym. Pierwszym katalogiem jest kernel. W nim znajdzie się główna część, która zawsze zostanie skompilowana. Drugim jest drivers. To w nim znajdą się wszystkie sterowniki. W trzecim będzie dokumentacja (nazywacie jak chcecie), a czwarty to cache, czyli miejsce na pliki podczas kompilacji. Kolejny to include(pliki .h), a jeszcze następny to fs(w nim znajdą się wszystkie obsługiwanie systemy plików). W przyszłości stworzymy dodatkowe foldery(aby była np. przenośność między architekturami). Na razie wystarczą nam te. Polecam poduczyć się trochę komend linuxowych.

Flagi kompilatora i skrypt Makefile

Flagi kompilatora? A po co one są? Aby plik wyjściowy nie nazywał się a.out lub móc skompilować plik w system. A jakich flag użyjemy? Najważniejszych czyli -o i po niej nazwa pliku wyjściowego(zwykle *.o) , -c, -m32 oraz kilku innych. Czy muszę się ich uczyć? Jak chcesz. Będziemy używać skryptu makefile więc wystarczy wiedzieć że coś takiego istnieje. A co to ten makefile? Skryp, dzięki któremu można skrócić ilość komend od jednej lub dwóch. A po co? Bo plików w systemach jest tysiące. Wyobrażasz sobie kompilacje stu plików? A wyobraź sobie że musisz wszystkie pliki jeszcze zlinkować.

Zalecenia, wymagania i przygotowania do kursu.

Pisanie os to nie jest łatwa sprawa. Na początku trzeba trochę teorii bo nikt nie będzie w stanie w przyszłości napisać np. bootloader. Przed teorią przygotujemy stanowisko i rzeczy które dobrze będzie wiedzieć. Jeżeli nie znacie angielskiego na poziomie 8 klasy/2 gimnazjum radzę poczekać z tym kursem. W tym kursie do uzupełniania wiedzy możecie zakupić książkę „Systemy operacyjne” Andrew S. Tanenbaum & Herbert Bos. Książka kosztuje ok. 100 zł. Co jakiś czas będę dawał linki do wiki.osdev.org aby uzupełniać/zdobywać dodatkowe informacje. Będę wymagać znajomości podstaw c(bez bibliotek standardowych i niestandardowych)/asemblera. Innych języków nie będziemy używać.

Przygotowanie środowiska

Windows nie jest przyjazny tworzeniu systemów, więc przeniesiemy się najlepiej na gnu/linux. Ja będę używał Ubuntu na VirtualBoxie, ale jak masz dostępny drugi komputer zainstaluj go na nim. Następnie wprowadź do terminala komendy

sudo apt-get install gcc
sudo apt-get install nasm
sudo apt-get install qemu

Jak wyświetli się pytanie o hasło podajcie te które wpisaliście podczas instalacji(hasło użytkownika). Aby sprawdzić czy wszystko działa podajcie następujące komendy

gcc
nasm
qemu

Powinno się wyświetlić coś takiego

gcc: fatal error: no input files 
compilation terminated.  
nasm: error: no input file specified 
type `nasm -h' for help
 

I okienko. Jeżeli tak się nie stało musicie sobie sami poradzić. W przeciwnym wypadku możecie wyłączyć Ubuntu.

Co się dzieje po włączeniu komputera? – Trochę o trybach procesora, architekturze i bootloaderze.

Większość z was ma 64-bitową wersję procesora.  Jednak CPU może na spokojnie wykonywać kod 32- i 16-bitowy. Dos jest właśnie 16-bitowy. Dzięki kompatybilności wstecznej programy z pierwszego PC były w stanie się uruchomić na najnowszym komputerze. Także BIOS bo on był i jest 16-bitowy.  Po wciśnięciu guzika płyta główna zostaje zasilona. Wtedy procesor uruchamia się. Aby wczytać Basic Input/Output System musi się ustawić w trybie 16-bitowym – Real Mode(Tryb Rzeczywisty). Czytaj dalej Co się dzieje po włączeniu komputera? – Trochę o trybach procesora, architekturze i bootloaderze.

Kurs pisania systemów operacyjnych – informacje

Pisanie os to nie taka łatwa sprawa – trzeba wiedzieć jak zaprogramować jądro (kernel), powłokę i masę innych rzeczy. Dodatkowo nie ma tak łatwo że dołączasz bibliotekę standardową i korzystasz z jej możliwości – sam musisz najpierw taką bibliotekę napisać. Postaram się w tym kursie pomóc zbudować prostego os. Całość będzie podzielona na dwie części. Pierwsza teoria – czyli zasady działania poszczególnych części, rodzajów jąder i ogólna budowa. Druga to pisanie właściwe, czyli znacznie ciekawsze. Polecam przeczytać obie części bo nie będziecie wiedzieć o co chodzi. W następnym poście napiszę wymagania i zalecenia do pisania systemów.