Unable to load multiboot kernel.

Roger Pau Monné roger.pau at citrix.com
Mon Mar 30 17:20:21 UTC 2015


Hello,

El 30/03/15 a les 18.45, Marcelo Araujo ha escrit:
> Hello Roger,
> 
> Thanks for the prompt reply and for the patch.
> 
> I made a test and now we have a bit more of information. Seems the problem
> is because the kernel is too large.
> 
> OK load /boot/kernel/kernel
> /boot/kernel/kernel Trying to load a RAW file at 0x80001000 Error reading
> /boot/kernel/kernel: file too large
> Unable to load /boot/kernel/kernel as a multiboot payload kernel
> can't load file '/boot/kernel/kernel': invalid argument.
> 
> Here is the size of my kernel:
> root at e550:/usr/src/sys/boot # du /boot/kernel/kernel
> 12885 /boot/kernel/kernel

Mmmm, that's smaller than mine and should load without problems:

# du /boot/kernel/kernel
21537	/boot/kernel/kernel

I think the problem might be that your BIOS is not correctly reporting 
the extended memory size, or that the loader is not fetching it 
properly. Can you try the following patch to see which values you get? 
On one of my boxes that is able to load FreeBSD/Xen I get:

bios_extmem: 0xd75d8000 memtop_copyin: 0xd76d8000 memtop: 0xd76d8000

You can apply the patch on top of the previous one, or standalone, as 
you wish.

Roger.

---
diff --git a/sys/boot/i386/libi386/i386_copy.c b/sys/boot/i386/libi386/i386_copy.c
index 3c05241..4d62282 100644
--- a/sys/boot/i386/libi386/i386_copy.c
+++ b/sys/boot/i386/libi386/i386_copy.c
@@ -67,6 +67,8 @@ i386_readin(const int fd, vm_offset_t dest, const size_t len)
 {
 
     if (dest + len >= memtop_copyin) {
+        printf("bios_extmem: 0x%x memtop_copyin: 0x%x memtop: 0x%x\n",
+            bios_extmem, memtop_copyin, memtop);
 	errno = EFBIG;
 	return(-1);
     }



More information about the freebsd-xen mailing list