PDA

View Full Version : is FreeBSD kernel a multiboot kernel ?


wsw1wsw2
July 17th, 2009, 04:51
Hi,
Grub can boot FreeBSD by :
kernel /boot/<some kernel>
boot

Does this mean FreeBSD kernel is a multiboot kernel?
I search the source tree and can not find any thing about multiboot. I think the grub maybe know something about the boot stages of FreeBSD. Am i right?

Thanks.

SirDice
July 17th, 2009, 11:57
The kernel has nothing to do with multiboot. That's the bootloader's job, which in your case is grub.

Beastie
July 17th, 2009, 16:35
The multiboot code is not in the kernel.
By default, it's in boot0 (stored in the MBR if you chose it during the setup) and you can find it in src/sys/boot/i386/boot0/boot0.s (http://svn.freebsd.org/viewvc/base/release/7.2.0/sys/boot/i386/boot0/) (N.B. it's written in assembler).

The boot process is very simple, which is why grub or any other boot manager can easily do it.
Basically it just finds the first block (i.e. the boot loader) in a particular partition using the MBR's partition table and executes it. In FreeBSD this block is boot1.

john_doe
October 1st, 2009, 17:26
I would like to know this, too. Does FreeBSD kernel conform to multiboot spec so it can be loaded by grub directly?
http://onlamp.com/bsd/2007/03/01/inside-multiboot.html

dennylin93
October 1st, 2009, 17:37
I've been dual booting for a while with Grub (FreeBSD + Windows).

Here's my configuration file:

default 0
timeout 5

title Windows XP SP2
map (hd0) (hd1)
map (hd1) (hd0)
rootnoverify (hd1,0)
chainloader +1

title FreeBSD 7.2-RELEASE-p3
rootnoverify (hd0,0)
chainloader +1

john_doe
October 1st, 2009, 18:37
I'm not asking about chainloading. For example, netbsd's boot(8) (http://www.freebsd.org/cgi/man.cgi?query=boot&sektion=8&manpath=NetBSD) has a multiboot command. But looks like it can't boot freebsd's kernel.

Oxyd
October 1st, 2009, 20:04
You can use mbchk to check if a binary is multiboot-compliant (installed with GRUB):/boot > mbchk loader
loader: No Multiboot header.
/boot > mbchk kernel
kernel: No Multiboot header.So I think this is enough to conclude that neither FreeBSD kernel, nor loader are multiboot compliant.

Oh, and for those wondering what this "multiboot" thing is and what the hell it has to do with the kernel itself: it's a specification (http://www.gnu.org/software/grub/manual/multiboot/html_node/index.html) that requires bootable binaries to have a special header, in order to allow arbitrary kernels to be loaded by arbitrary bootloaders.

aragon
October 2nd, 2009, 02:47
This may be a naive comment, but the effort seems like too little too late. EFI will probably replace the BIOS soon, and I suspect that will render all this BIOS hackery obsolete. Either way, FreeBSD's chain loading process is elegant (more so than linux) and simply works. I can only see this being useful for someone writing a new OS and wanting to avoid the black art of writing a boot loader.

fonz
October 3rd, 2009, 19:24
Oh, and for those wondering what this "multiboot" thing is and what the hell it has to do with the kernel itself: it's a specification (http://www.gnu.org/software/grub/manual/multiboot/html_node/index.html)
Actually, it's a proposal if I'm not mistaken.

Alphons

Oxyd
October 3rd, 2009, 19:42
Actually, it's a proposal if I'm not mistaken.

Alphons

Mistaken you are not:

This file documents Multiboot Specification, the proposal for the boot sequence standard

fonz
October 3rd, 2009, 20:20
So, do you happen to know which OSes/kernels currently comply to this proposed standard?

Alphons

Carpetsmoker
October 3rd, 2009, 23:32
I think the Hurd and NetBSD are pretty much the only one ... Surely two of the most popular operating systems out there.

As far as I've understood is, the multiboot specs have pretty much failed to gain a wide acceptance.

cpghost
April 23rd, 2010, 20:42
I think the Hurd and NetBSD are pretty much the only one ... Surely two of the most popular operating systems out there.

As far as I've understood is, the multiboot specs have pretty much failed to gain a wide acceptance.

Some microkernels are multiboot compliant too, e.g. L4Ka:: Pistachio:

http://l4ka.org/projects/pistachio/

And, frankly, it would be nice if FreeBSD were multiboot compliant like NetBSD.

aragon
April 23rd, 2010, 23:44
What does multiboot provide that EFI doesn't?