Fix überXMHF v6.0.0 documentation and add support for 1st Generation Intel Core CPUs

See the following posts for a context:

  1. Boot XMHF v0.2.2 is good, but cannot boot uberXMHF v6.0.0
  2. Building Issues for uberxmhf-v6.0.0

@superymk: For starters, can you build uxmhf from my fork of uberxmhf.git :

https://github.com/amitvasudevan/uberxmhf.git branch hotfix-docs-support-1st-gen-intel-core

See how the boot-up goes and please post your resulting serial log in case of any errors.

Thanks!

Linked Hot Release branch:

Now the uxmhf can boot back to the grub. See the log uxmhf-logs_0211_1347.txt (43.6 KB) .

But if I select to boot Ubuntu then, grub displays an error with the following msgs:

Boot from (hd0, 5) ext4 xxxxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx

Error 28: Selected item cannot fit into memory

press any key to continue …

PS: I can boot Windows XP very well in this case. It works like a charm. If I remember it correctly, there is a sound card problem of the XMHF v0.2.2 on my HP 2540p laptop. uxmhf fixes it.
So it seems to be a conflict between uxmhf image size and Linux kernel image size.

Perhaps we should add it to the list of supported OS :wink:

Let me look into the logs…

This is wierd. The E820 (memory map) seems to be populated correctly, and the logs show that GRUB is invoking INT 15h to obtain the map. So am not sure why it is throwing the cannot fir into memory error:

0x0000000006200000, size=0x000000001d200000 (2)
0x0000000023400000, size=0x00000000977c2000 (1)

The above is a snippet of the revised E820 memory map that is presented to the guest OS by uberXMHF. As you can see the first entry above reserves the uhv memory regions and the second entry has ample space (almost ~2.5 gigs)…

Am assuming this is GRUB v1?

Also can you post your Linux OS GRUB entry?

Right, I use grub v1.

Grub entry:

title uberXMHF
rootnoverify (hd0,5) # should point to /boot
kernel /boot/xmhf-x86-vmx-x86pc.bin.gz serial=115200,8n1,0x5080
modulenounzip (hd0)+1 # should point to where grub is installed
modulenounzip /boot/i5_i7_DUAL_SINIT_51.BIN

Hmmm…Is this GRUB v0.97 or v0.98?

I meant the OS entry, the one you use to boot Linux

I use the grub v0.97

superymk@superymk-HP-EliteBook-2540p:~$ grub-install -v
grub-install (GNU GRUB 0.97)

And the Ubuntu boot entry:

title Ubuntu 12.04.1 LTS, kernel 3.2.35+
uuid 9716ebe1-44f6-43d1-8320-22b138178b6a
kernel /boot/vmlinuz-3.2.35+ root=UUID=9716ebe1-44f6-43d1-8320-22b138178b6a ro quiet splash console=ttyS4,115200n8
initrd /boot/initrd.img-3.2.35+
quiet

Hmm, I think grub < 0.98 cannot load kernel beyond 32MB. The uberXMHF memory map above shows that available memory is only from 37MB…

Can you switch to grub 0.98 with Ubuntu 12.04.1?

sure, will try the grub v0.98

Ok can you pull changes from my branch and build and try to boot again with 12.04 LTS? I relocated the load address to 64MB. Let us see if that helps…

Crashed, see logs below:

C:\Users\Superymk\Desktop\amtterm>amtterm.exe -p pas0@Greave 192.168.1.18
amtterm: NONE -> CONNECT (connection to host)
ipv4 192.168.1.18:16994 [192.168.1.18] 16994 open
amtterm: CONNECT -> INIT (redirection initialization)
amtterm: INIT -> AUTH (session authentication)
amtterm: AUTH -> INIT_SOL (serial-over-lan initialization)
amtterm: INIT_SOL -> RUN_SOL (serial-over-lan active)
serial-over-lan redirection ok
connected now, use ^] to escape

eXtensible Modular Hypervisor Framework (XMHF) 6.0.0
Build revision: you-gotta-have-faith-not-in-who-you-are-but-who-you-can-be
XMHF boot-loader: initializing, total modules=2
XMHF boot-loader: mod_0: start=0x1a200000, end=0x1a200200
XMHF boot-loader: mod_1: start=0x1a201000, end=0x1a209bc0
INIT(early): detected an Intel CPU
Checking whether MBI module 1 is SINIT…
YES! SINIT found @ 0x1a201000, 35776 bytes

Finding SMP info. via ACPI…
ACPI RSDP at 0x000fc600
ACPI RSDT at 0xbb3fe0ac
len=0x0000005c, headerlen=0x00000024, numentries=14
ACPI MADT at 0xbb3fa000
len=0x000000bc, record-length=144 bytes
rec type=0x00, length=8 bytes, flags=0x00000001, id=0x00
rec type=0x00, length=8 bytes, flags=0x00000001, id=0x01
rec type=0x00, length=8 bytes, flags=0x00000001, id=0x04
rec type=0x00, length=8 bytes, flags=0x00000001, id=0x05
rec type=0x00, length=8 bytes, flags=0x00000000, id=0x00
rec type=0x00, length=8 bytes, flags=0x00000000, id=0x00
rec type=0x00, length=8 bytes, flags=0x00000000, id=0x00
rec type=0x00, length=8 bytes, flags=0x00000000, id=0x00
rec type=0x01, length=12 bytes, flags=0xfec00000, id=0x00
rec type=0x02, length=10 bytes, flags=0x00000002, id=0x00
rec type=0x02, length=10 bytes, flags=0x00000009, id=0x09
rec type=0x04, length=6 bytes, flags=0x06040100, id=0x05
rec type=0x04, length=6 bytes, flags=0x06040100, id=0x05
rec type=0x04, length=6 bytes, flags=0x06040100, id=0x05
rec type=0x04, length=6 bytes, flags=0x06040100, id=0x05
rec type=0x04, length=6 bytes, flags=0x06040100, id=0x05
rec type=0x04, length=6 bytes, flags=0x06040100, id=0x05
rec type=0x04, length=6 bytes, flags=0x06040100, id=0x05
rec type=0x04, length=6 bytes, flags=0xffb80100, id=0x05xmhf-bootloader: cstartup:963

original system E820 map follows:

0x0000000000000000, size=0x000000000009fc00 (1)
0x000000000009fc00, size=0x0000000000000400 (2)
0x00000000000e0000, size=0x0000000000020000 (2)
0x0000000000100000, size=0x00000000baac2000 (1)
0x00000000babc2000, size=0x0000000000700000 (2)
0x00000000bb2c2000, size=0x0000000000100000 (4)
0x00000000bb3c2000, size=0x000000000003d000 (3)
0x00000000bb3ff000, size=0x0000000000001000 (1)
0x00000000bb400000, size=0x0000000000400000 (2)
0x00000000bb800000, size=0x0000000000800000 (2)
0x00000000e0000000, size=0x0000000010000000 (2)
0x00000000fec00000, size=0x0000000000001000 (2)
0x00000000fed10000, size=0x0000000000004000 (2)
0x00000000fed19000, size=0x0000000000001000 (2)
0x00000000fed1b000, size=0x0000000000001000 (2)
0x00000000fed1c000, size=0x0000000000004000 (2)
0x00000000fee00000, size=0x0000000000001000 (2)
0x00000000ffd00000, size=0x0000000000300000 (2)
0x0000000100000000, size=0x000000007c000000 (1)
0x000000017c000000, size=0x0000000004000000 (2)
0x0000000180000000, size=0x000000003c000000 (1)
proceeding to revise E820…
E820 revision complete.
revised system E820 map follows:

0x0000000000000000, size=0x000000000009fc00 (1)
0x000000000009fc00, size=0x0000000000000400 (2)
0x00000000000e0000, size=0x0000000000020000 (2)
0x0000000000100000, size=0x0000000003f00000 (1)
0x0000000004000000, size=0x000000001d200000 (2)
0x0000000021200000, size=0x00000000999c2000 (1)
0x00000000babc2000, size=0x0000000000700000 (2)
0x00000000bb2c2000, size=0x0000000000100000 (4)
0x00000000bb3c2000, size=0x000000000003d000 (3)
0x00000000bb3ff000, size=0x0000000000001000 (1)
0x00000000bb400000, size=0x0000000000400000 (2)
0x00000000bb800000, size=0x0000000000800000 (2)
0x00000000e0000000, size=0x0000000010000000 (2)
0x00000000fec00000, size=0x0000000000001000 (2)
0x00000000fed10000, size=0x0000000000004000 (2)
0x00000000fed19000, size=0x0000000000001000 (2)
0x00000000fed1b000, size=0x0000000000001000 (2)
0x00000000fed1c000, size=0x0000000000004000 (2)
0x00000000fee00000, size=0x0000000000001000 (2)
0x00000000ffd00000, size=0x0000000000300000 (2)
0x0000000100000000, size=0x000000007c000000 (1)
0x000000017c000000, size=0x0000000004000000 (2)
0x0000000180000000, size=0x000000003c000000 (1)xmhf-bootloader: XMHF binary base=04000000, reserved size=1d200000 bytes
xmhf-bootloader: xslbootinfo=05400000, magic=90909090

Fatal: Halting! Condition ‘xslbootinfo->magic == RUNTIME_PARAMETER_BLOCK_MAGIC’ failed, line 1072, file /home/opam/opam-repository/run/uberxmhf/uxmhf/xmhf-bootloader/init.c

Ok. I reset the load address back to default and pushed my changes. Please pull, do a configure followed by make and test with Ubuntu 16.04 and Grub 0.97-29 (the default version that comes with ubuntu 16.04).

Will try. And please see if you may want to remove Ubuntu 12.04 from supported OS.

Indeed. It is quite dated anyways and is no longer supported by canonical, so it does make sense to remove it from the list of supported OS for uberXMHF. Hopefully, 16.04 works for you with this changeset…

I installed Ubuntu 16.04.6 x86 (kernel: Linux 4.4.0.201-generic) on the HP2540p and build the latest fix. It still crashes.

I installed the 4.4 kernel with the command: sudo apt-get install linux-generic-lts-xenial
(1) uXMHF can go back to grub, no error there
(2) Then I start Ubuntu, and it hangs. I can only see “Booting from (hd0, 4) …” on screen

Grub entry:

title uberXMHF
rootnoverify (hd0,4) # should point to /boot
kernel /boot/xmhf-x86-vmx-x86pc.bin.gz serial=115200,8n1,0x5080
modulenounzip (hd0)+1 # should point to where grub is installed
modulenounzip /boot/i5_i7_DUAL_SINIT_51.BIN

Logs: uxmhf-logs_0212_1349.txt (49.9 KB)

You have to build the kernel with CONFIG_X86_PAE unset. See: https://docs.uberxmhf.org/pc-intel-x86_32/supported-os.html

A prebuilt working version is available here: https://github.com/uberspark/uberxmhf-linux-kernels.git

On further thinking, we should add this to the docs :slight_smile:

Thanks! I used this kernel now and the kernel hangs at a later step, see the log: uxmhf-logs_0212_1508.txt (54.7 KB)

This happens when I start Ubuntu from grub (uxmhf is loaded now).
I guess it is because of the old hardware…