What is the Boot Descriptor Structure?
The boot descriptor structure (often referred to as the multiboot information structure) is a data structure populated by the bootloader and passed to the kernel. This structure provides information about the system’s memory, boot device, command-line arguments, and more. GRUB or any multiboot-compliant bootloader will fill in this structure after loading the kernel.
struc OsBootDescriptor
.KernelAddr resd 1
.KernelSize resd 1
.RamDiskAddr resd 1
.RamDiskSize resd 1
.ExportAddr resd 1
.ExportSize resd 1
.SymbolsAddr resd 1
.SymbolsSize resd 1
endstruc
What is the Multiboot Header?
The Multiboot header is a crucial part of the bootloader-to-kernel communication in multiboot-compliant systems (like GRUB). It contains information about how the kernel expects to be loaded. The header typically includes details about the memory layout, entry point, flags, and other relevant information required by the bootloader to load the kernel correctly.
struc MultiBoot
.Flags resd 1
.MemoryLo resd 1
.MemoryHi resd 1
.BootDevice resd 1
.CmdLine resd 1
.ModuleCount resd 1
.ModuleAddr resd 1
.Symbols0 resd 1
.Symbols1 resd 1
.Symbols2 resd 1
.Symbols3 resd 1
.MemMapLength resd 1
.MemMapAddr resd 1
.DrivesLength resd 1
.DrivesAddr resd 1
.ROMConfigTable resd 1
.BootLoaderName resd 1
.ApmTable resd 1
.VBEControllerInfo resd 1
.VBEModeInfo resd 1
.VBEMode resd 1
.VBEInterfaceSeg resd 1
.VBEInterfaceOff resd 1
.VBEInterfaceLen resd 1
endstruc
https://github.com/The-Jat/TheTaaJ/tree/edb7f3941c0f5992357272be9e8ebb362c7861c3