Als erstes würde ich sagen, Kenntnisse über Assembler und C / C++ erwerben. Wenn man sich dann einigermaßen in den Sprachen zurecht findet, sollte man anfangen zu lernen wie ein Computer funktioniert. Damit meine ich Ein- und Ausgabe, Speicherverwaltung, Netzwerke, etc, etc.
(Lesen (viel Lesen) ist dafür zwingend erforderlich
)
Wie es dann weiter geht, das hängt davon ab, was für ein OS man denn programmieren will. Je nachdem für was man sich entscheidet (16 oder 32 Bit, Single- oder Multitasking, Shell oder GUI (oder gar beides?), Multiprozessor-OS, dann die Art der Speicherverwaltung, usw. Man könnte diese Liste noch sehr viel weiter führen, als ich es hier tue). Um ein recht simples OS zu basteln, muss man zum Beispiel nichts über den Protected Mode wissen, da man ein 16-Bit OS ja auch im Real Mode betreiben kann.
Desweiteren sollte man sich Gedanken machen, wie es mit dem Dateisystem aussieht. Sollte man lieber ein bestehendes einbinden oder sich ein neues überlegen?
Du siehst also, das man ziemlich viele Faktoren beachten muss um zu einem (guten) OS zu kommen. Eine Liste wie du sie wünschst, wird es wohl kaum geben, da man beim Programmieren eines 16-Bit System wesentlich weniger können muss als beim Programmieren eines 32-Bit System im Protected Mode.
Soweit meine Meinung.