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 at alleither, which simplifies your build environment significantly. Example linker script provided for both x86_64 and AArch64. There are example kernels written in [[C]], [[Pascal]], [[Rust]] and [[Go]].
 
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]]
Anonymous user