Hi. I'm working on a microkernel for x86_64 (with looking forward to ppc64 and sparc64 ports). As you know, microkernels are quite useless without user-space servers that provide "classic" OS services. But microkernels are so useless that they even cannot load servers from disk :). That's why bootloader need to load servers images directly into memory in addition to image of microkernel itself. For i386-pc we have multiboot and it "just works". But it's really too i386-pc-specific. We also have draft of next multiboot version, but I think it still lacks flexibility (e.g. single 'flags' field for all image format, platform, and machine related features requests, no versioning). So I've implemented new loader (patch attached) focused on exensibility and versioning. Design in few words: Interface - format and interpretation of corresponding header and info structures. Each interface has a version (X.Y, X - major number, Y - minor number, both are 12-bits wide). Version X.Z MUST be backward compatible with version X.Y if Z>Y. Interface negotiation - bootloader procedure which selects version and header from given list of (version, header) pairs. Bootloader MUST provide info compatible with selected version with respect to the selected header. Header consists of the following parts: 1) Generic header. Defines container version and parameters and modules alignment. 2) List of image format related (version, header) pairs*. 3) List of platform related (version, header) pairs*. 4) List of machine related (version, header) pairs*. * - In order of preference. Special version GRUB_ELBP_VERSION_NONE means that it's ok to omit header (and provide no info) of this type. Given this header, bootloader negotiates interfaces and constructs info structure. Info consists of the following parts: 1) Generic info. Provides modules list and command lines. 2) Image format related info. 3) Platform related info. 4) Machine related info. You can find more details in the code, I've tried to comment things :). Opinions are appreciated. P.S. Some parts of the patch haven't been well tested (e.g. ELF loading) and I haven't implemented a.out loading yet. But grub boots itself fine. P.P.S. Patch depends on self-multiboot patch I posted few days ago. P.P.P.S. ELBP stands for Extensible Loading and Booting Protocol :)