BOOTBOOT: Difference between revisions

Jump to navigation Jump to search
[unchecked revision][unchecked revision]
Content added Content deleted
m (more categories)
m (added more kernel languages)
Line 32: Line 32:
== Your Kernel ==
== 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. No real mode nor protected mode trampoline code needed at all, which simplifies your build environment significantly. Example linker script provided for both x86_64 and AArch64. There are example kernels for C and Rust.
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. No real mode nor protected mode trampoline code needed at all, which simplifies your build environment significantly. Example linker script provided for both x86_64 and AArch64. There are example kernels 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.
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 61: Line 61:
*[https://gitlab.com/bztsrc/bootboot Source on Gitlab] the repository
*[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/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 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-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
*[https://gitlab.com/bztsrc/bootboot/tree/master/mkbootimg mkbootimg] simple to use, dependency-free [[Bootable_Disk|bootable disk]] creator