BOOTBOOT: Difference between revisions

Jump to navigation Jump to search
[unchecked revision][unchecked revision]
Content added Content deleted
mNo edit summary
Line 21: Line 21:
If despite the warning you decide to [[Roll Your Own Filesystem]], then BOOTBOOT is definitely for you. You can either write an FS module (one function), or just make sure the kernel is the first executable in the archive / on the partition. BOOTBOOT is capable of loading kernels from unknown file systems as well.
If despite the warning you decide to [[Roll Your Own Filesystem]], then BOOTBOOT is definitely for you. You can either write an FS module (one function), or just make sure the kernel is the first executable in the archive / on the partition. BOOTBOOT is capable of loading kernels from unknown file systems as well.


Optionally you can load your OS from ROM (see qemu's -optionrom command line argument, or bochs rc file), and the Raspberry Pi version can also load the ramdisk over serial line.
Optionally you can load your OS from ROM (see qemu's -option-rom command line argument, or bochs rc file), and the Raspberry Pi version can also load the ramdisk over serial line. Although it's not implemented as of yet, the BOOTBOOT protocol allows loading the initrd from a TFTP server.


== Your Kernel ==
== Your Kernel ==
Line 31: Line 31:
== Console ==
== 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 putc() example, which outputs text on that frame buffer using [[PC Screen Font]] (same that Linux Console uses).
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).

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.


== There's more... ==
== There's more... ==
Line 38: Line 40:


For all the features and available options, read the PDF documentation. It describes how to install an initial ramdisk with your kernel in it on a disk image, what are the exact memory mappings, which C structure is used to pass information to your kernel, how to tell bootstrap processor from application processors apart, etc.
For all the features and available options, read the PDF documentation. It describes how to install an initial ramdisk with your kernel in it on a disk image, what are the exact memory mappings, which C structure is used to pass information to your kernel, how to tell bootstrap processor from application processors apart, etc.

== Threads ==
*[https://forum.osdev.org/viewtopic.php?f=2&t=33362 BOOTBOOT forum topic]


== External Links ==
== External Links ==