Subject: Multiboot support for review
To: None <>
From: Julio M. Merino Vidal <>
List: tech-kern
Date: 01/31/2006 21:19:21
Hi all,

after some hacking days, I've finally got some code to make NetBSD
Multiboot-compliant.  We already discussed this here and all I got
was positive feedback:

The patch still needs some cleanup and bug fixing (specially testing
that several things work after the changes) but, while I do those,
I want to ask for feedback because the code won't change that much.
The preliminary patch is at:

Here come some things I'd like to discuss:

- In the past days, someone suggested the idea of adding a textual
   data representation to pass variable/value pairs between the kernel
   and userspace.  I've had to do something similar to pass some boot
   information between GRUB and the kernel, and hence implemented such
   an interface.

   It is currently very, very simple, but it may do the job in the
   cases where it's needed (e.g., mount(2) arguments).

   It is named 'optstr' and is implemented in sys/optstr.h and
   kern/subr_optstr.c.  See the manual page in the patch file.

- I think that this Multiboot thing is applicable to amd64 too,
   although I'm not completely sure.  Could it be better to place
   the new files (multiboot.[ch]) in x86 rather than in i386 so
   that they do not have to be moved in the future if multiboot
   support is added to amd64?  (It should be a matter of adapting
   its locore.S file.)

- If you take a look to the setup_bootdisk function in multiboot.c,
   you'll notice a hack.  Ideally, I'd use the x86_alldisks table.
   But to do that, I'd need to add a call to setup_bootdisk from
   x86's cpu_rootconf function (between the call to matchbiosdisks()
   and findroot()).

   I don't know how to do this if the multiboot files live in i386
   because the generic x86 code would be calling i386-specific one.

- Anything else you notice.


Julio M. Merino Vidal <>
The Julipedia -