i386/96430: boot2 is unable to load kernel directly
Bruce Evans
bde at zeta.org.au
Fri Apr 28 19:49:22 UTC 2006
On Thu, 27 Apr 2006, Yuichiro Goto wrote:
>> Description:
> Loading a kernel directly using boot2 causes the invalid-opcode fault like the
> following:
>
> int=00000006 err=00000000 efl=00010002 eip=c0445a90
> eax=c0445a90 ebx=0007cd0f ecx=c0b5e1a7 edx=a030001e
> esi=c0b5e1a7 edi=c0445a90 ebp=00000002 esp=0009eb84
> cs=0008 ds=0010 es=0010 fs=0010 gs=0010 ss=0010
> cs:eip=ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff
> ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff
> ss:esp=69 95 00 00 00 00 00 80-1e 00 30 a0 00 00 00 00
> 00 00 00 00 00 00 00 00-60 dd 00 00 36 42 00 00
> BTX halted
>
> I tried to load a kernel directly that is a slightly modified
> version of GENERIC. ...
>> How-To-Repeat:
> Directly load a kernel using boot2.
>> Fix:
> load() in src/sys/boot/i386/boot2/boot2.c tries to copy kernel segments at a
> phisical address on memory whose most significant 2 bits are set. This is
> because of changes between rev 1.70 and 1.71 of
> src/sys/boot/i386/boot2/boot2.c.
I reported this to the author of the bug a few months ago.
I use an old 2-stage-only boot loader that is missing this bug, but
still the GENERIC kernel doesn't load - the load hangs with no message.
Loading of smaller kernels (size ~= 3MB) with boot2 still works with
both my old boot loader and the FreeBSD-6.0 boot2 with rev.1.71 backed
out.
Bruce
More information about the freebsd-i386
mailing list