Hallo,
wenn du 16-Bit Code mit C erzeugen möchtest, kannst du bcc und bin86 verwenden. Davon ist aber abzuraten.
Mein Bootloader ist eigentlich schon fertiggestellt und hoffentlich funktionstüchtig. Ich habe auch vor so schnell wie möglich in den x86-64 Modus zu wechseln, nur wollte ich halt klein anfangen und erstmal ein Hello World! ausgeben.
Dann nimm das ernst, was wir alle gemeinsam sagen: Schreibe keinen Bootloader, sondern einen (Multiboot-kompatiblen) Kernel.
Danke für den Hinweis mit Grub, aber braucht man da nicht ein Dateisystem das von ihm unterstützt wird?
Ja. Du kopierst also die Kerneldatei z.B. auf eine Diskette und Grub macht den Rest. Dazu muss dein Kernel kein Dateisystem und keine Diskettenlaufwerke können. Du kannst auch "qemu -kernel Kerneldatei" benutzen, um einen Multibootkernel zu starten. Das geht dann ganz ohne Grub.
Ich habe gelesen, dass man mithilfe von Grub auch einzelne Sektoren auslesen kann, aber woher weiss ich wie grosss der Kernel ist?
Das gleiche Problem hast du mit deinem eigenen Bootloader auch.
(a) Du analysierst den Kernel, während du ihn lädst und errechnest die Größe.
(b) Du sagst, dass der Kernel niemals größer als z.B. 4 Sektoren ist und lädst nur die.
(c) Du machst hinten an deinen Kernel eine Ende-Markierung.
Lass den Bootloader sein und spiele einmal die Tutorialreihe durch (ist zwar nur für den 32-Bit-Modus, aber da werden die wichtigen Dinge alle mal kurz behandelt). Dann siehst du auch, wie das mit Multiboot und Grub funktioniert.
Gruß,
Svenska