Moim zdaniem, bez sensu tworzyć "własny" system operacyjny oparty o jądro Linux. W ten sposób nie wiele się nauczysz. Na dodatek, jego kod to burdello bum bum - piszą go specjaliści i tylko oni są w stanie w większości ten kod zrozumieć - kod jest po wielu optymalizacjach i ciężko go zrozumieć.
Najlepszym kodem OSa do nauki jest Minix, obecnie wersja 3.0. Ten system właśnie w tym celu powstał, dlatego jego kod jest przejrzysty i wszędzie znajdziesz komentarze w jego kodzie.
Innym OSem którego kod mogę polecić to FreeBSD. Rozwija go 9 programistów, tzw. Core Team, stąd nie ma takiego bałaganu w kodzie, no i kod jest bardziej przemyślany.
Polecam samemu całkowicie od zera stworzyć jakieś własne mikrojądro. W ten sposób na prawdę się więcej nauczysz. Nic tobie nie da takiej satysfakcji jak zaprogramowanie trybu video i wyświetlenie jakiegoś napisu, zaraz po wejściu do trybu chronionego. A następnie managera pamięci oraz managera zadań i odpalenie swojego własnego pierwszego procesu. Ta wiedza którą zdobędziesz na prawdę przyda się tobie w życiu jako programista, nawet jakbyś miał potem tworzyć tylko i wyłącznie aplikacje po stronie użytkownika czy gry.
Najlepszym językiem który nadaje się do pisania systemów jest język C, gdyż jest to najszybszy język zaraz po asemblerze i daje tobie możliwość bardziej niskopoziomowego programowania. Asemblera używa się tylko tam, gdzie trzeba napisać jak najszybszy kod, albo też wtedy kiedy w języku C jest to po prostu nie możliwe. Samego asemblera w jądrze Linux jest około 10% ze względu na przenośność kodu.
W języku C jest napisany Linux, *BSD, Windows, ale są też systemy napisane całkowicie tylko w asemblerze jak MenuetOS czy KolibriOS. Co do C++, jest w nim napisany np. Haiku. Jakiś czas temu powstał nowoczesny system operacyjny OSv, napisany w języku C++11.
Polecam książkę Systemy operacyjne autora Andrew S. Tanenbaum'a, twórcy Miniksa. Dokładnie poznasz budowę i zasadę działania systemów operacyjnych operając się na kodach różnych systemów, m.in. Linux, Minix, Windows. Niestety książka ma tylko 1136 stron i po jej przeczytaniu można mieć pewien niedosyt. Ale i tak jest to największa książka jaką mam na półce.
Tutoriale OSDev:
https://pl.wikibooks.org/wiki/Pisanie_OS
http://archiwum.lukaszsowa.pl/tag/osdev/
http://osdev.labedz.org/
http://www.brokenthorn.com/Resources/OSDevIndex.html
http://www.jamesmolloy.co.uk/tutorial_html/
https://littleosbook.github.io/