kernel memory checks on boot vs. boot time

Oliver Fromme olli at
Wed Mar 23 20:51:14 UTC 2011

Alexander Best wrote:
 > On Wed Mar 23 11, Oliver Fromme wrote:
 > > Alexander Best wrote:
 > > > just as a side note: booting a kernel directly from boot stage 2 is broken on
 > > > amd64. :( so there's no way around using the boot loader, which will cost extra
 > > > time (even with autoboot_delay=0).
 > > > 
 > > > so was the adbility to boot a kernel directly from boot2 abandoned? i heard
 > > > reports it still works under i386. dunno about the other archs.
 > > 
 > > The loader checks the type of the kernel binary (i386 vs
 > > amd64).  In case of amd64, it enables "long mode", among
 > > other things.  This is required for amd64, because the
 > > kernel expects to be started in long mode.  boot2 doesn't
 > > do that, so you can't start an amd64 kernel directly from
 > > boot2.
 > hmm...i can't seem to find the location in loader/main.c. could you pinpoint
 > me to the exact location? this is something i'd *really* like to try in amd64.

The actual code is in sys/boot/i386/libi386/amd64_tramp.S
which is called from sys/boot/i386/libi386/elf64_freebsd.c
(see the elf64_exec() function), which in turn is called
indirectly via a method of a struct file_format from the
boot loader.

Beware, I don't know if this is the *only* thing preventing
boot2 from booting an amd64 kernel.  There might be more.
I haven't tried booting FreeBSD without the boot loader in
a long time.  Probably not in this century.

Best regards

Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M.
Handelsregister: Registergericht Muenchen, HRA 74606,  Geschäftsfuehrung:
secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht Mün-
chen, HRB 125758,  Geschäftsführer: Maik Bachmann, Olaf Erb, Ralf Gebhart

FreeBSD-Dienstleistungen, -Produkte und mehr:

"I made up the term 'object-oriented', and I can tell you
I didn't have C++ in mind."
        -- Alan Kay, OOPSLA '97

More information about the freebsd-arch mailing list