Anonymous user
BOOTBOOT: Difference between revisions
m
no edit summary
[unchecked revision] | [unchecked revision] |
m (added more kernel languages) |
mNo edit summary |
||
Line 32:
== Your Kernel ==
You can use ELF64 or PE32+ formats for your kernel. You must link it as a [[Higher Half Kernel]], and your entry point should point to [[Long Mode]] code. That's all. Unlike all the other boot loaders (like [[Multiboot]] and [[stivale]]), there's absolutely no need for special sections nor for magic structs. No real mode nor protected mode trampoline code needed
BOOTBOOT passes a configuration to your kernel in a newline separated, zero-terminated UTF-8 string. Each line contains a ''key=value'' pair, where only two keys, "screen" and "kernel" are reserved. You are free to use any other keys that your kernel wishes to use.
Line 38:
== Console ==
BOOTBOOT does not support VGA text mode, it sets up graphic mode regardless to the platform. You don't have to mess around with [[VESA]] or [[GOP]] any more, you will get the frame buffer ready to use. The example Hello World kernel provided with the BOOTBOOT source has a minimal puts() example, which outputs text on that frame buffer using [[PC Screen Font]] (same that Linux Console uses). You can also use the [[Scalable Screen Font]] library's ''ssfn_putc()''.
The loader also initializes the [[Serial_Ports|serial console]] for you with 115200 baud, 8 data bits, no parity and 1 stop bit. Your kernel can send debug messages from the start.
Line 61:
*[https://gitlab.com/bztsrc/bootboot Source on Gitlab] the repository
*[https://gitlab.com/bztsrc/bootboot/raw/master/bootboot_spec_1st_ed.pdf BOOTBOOT Specification] and user's manual in PDF format
*[https://gitlab.com/bztsrc/bootboot/tree/master/mkbootimg mkbootimg] simple to use, dependency-free [[Bootable_Disk|bootable disk]] creator▼
*[https://gitlab.com/bztsrc/bootboot/tree/master/mykernel Example Hello World Kernel] in [[C]] with Makefile and minimal linker script
*[https://gitlab.com/bztsrc/bootboot/tree/master/mykernel-rust Example Hello World Kernel] in [[Rust]]
*[https://gitlab.com/bztsrc/bootboot/tree/master/mykernel-pas Example Hello World Kernel] in [[Pascal]]
*[https://gitlab.com/bztsrc/bootboot/tree/master/mykernel-go Example Hello World Kernel] in [[Go]]
▲*[https://gitlab.com/bztsrc/bootboot/tree/master/mkbootimg mkbootimg] simple to use, dependency-free [[Bootable_Disk|bootable disk]] creator
[[Category:Bootloaders]]
|