Anonymous user
BOOTBOOT: Difference between revisions
no edit summary
[unchecked revision] | [unchecked revision] |
mNo edit summary |
No edit summary |
||
(6 intermediate revisions by one other user not shown) | |||
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 protocols (e.g. [[Multiboot]] and [[stivale]]), there's absolutely no need for special sections nor for magic structs, unimplementable in some languages. 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/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/mkbootimg mkbootimg] simple to use, dependency-free [[Bootable_Disk|bootable disk]] creator
▲*[https://gitlab.com/bztsrc/bootboot/tree/master/mykernel Example Hello World
*Mykernel in [https://gitlab.com/bztsrc/bootboot/tree/master/mykernel/c C]
*Mykernel in [https://gitlab.com/bztsrc/bootboot/tree/master/mykernel/cpp C++]
▲*Mykernel in [https://gitlab.com/bztsrc/bootboot/tree/master/mykernel
*Mykernel in [https://gitlab.com/bztsrc/bootboot/tree/master/mykernel/pas Pascal]
*Mykernel in [https://gitlab.com/bztsrc/bootboot/tree/master/mykernel/ada Ada]
*Mykernel in [https://gitlab.com/bztsrc/bootboot/tree/master/mykernel/go Go]
[[Category:Bootloaders]]
[[Category:ARM]]
[[Category:Raspberry Pi]]
[[Category:x86-64]]
[[Category:UEFI]]
[[de:BOOTBOOT]]
|