[prev in list] [next in list] [prev in thread] [next in thread] 

List:       opensolaris-xen-discuss
Subject:    Re: [xen-discuss] 32bit PV domU on 64bit snv99/xVM [PARTIALLY
From:       Vasiliy Baranov <Vasiliy.Baranov () Sun ! COM>
Date:       2008-10-23 12:02:28
Message-ID: 490067D4.4050009 () sun ! com
[Download RAW message or body]

FWIW, I got it kind of working now.

There was one suspicious thing about this failure. While in the 64 bit 
Fedora 8 case the domain builder was considering the guest kernel a 
gzipped ELF image and was able to use it successfully, in the 32 bit 
case it was not seeing the guest kernel as either gzipped or 
uncompressed executable. Namely, when a 64 bit guest was starting, the 
domain builder was logging the following (in 
/var/log/xen/domain-builder-ng.log):

   xc_dom_allocate: cmdline="ro root=/dev/VolGroup00/LogVol00 
console=xvc0 rhgb quiet", features=""
   xc_dom_kernel_file: filename="/var/run/xend/boot/boot_kernel.BtN5gl"
   xc_dom_malloc_filemap    : 1915 kB
   xc_dom_malloc            : 8991 kB
   xc_dom_do_gunzip: unzip ok, 0x1ded4d -> 0x8c7c08
   xc_dom_ramdisk_file: filename="/var/run/xend/boot/boot_ramdisk.FTyUVc"
   xc_dom_malloc_filemap    : 3714 kB
   xc_dom_boot_xen_init: ver 3.1, caps xen-3.0-x86_64 xen-3.0-x86_32p 
hvm-3.0-x86_32 hvm-3.0-x86_32p hvm-3.0-x86_64
   xc_dom_parse_image: called
   xc_dom_find_loader: trying ELF-generic loader ... OK
   elf_parse_binary: phdr: paddr=0xffffffff80200000 memsz=0x33a610
   ...
   xc_dom_boot_image: called
   arch_setup_bootearly: doing nothing
   xc_dom_compat_check: supported guest type: xen-3.0-x86_64 <= matches
   xc_dom_compat_check: supported guest type: xen-3.0-x86_32p
   xc_dom_compat_check: supported guest type: hvm-3.0-x86_32
   xc_dom_compat_check: supported guest type: hvm-3.0-x86_32p
   xc_dom_compat_check: supported guest type: hvm-3.0-x86_64
   ...

while in the 32 bit case the domain builder output was:

   xc_dom_allocate: cmdline="ro root=/dev/VolGroup00/LogVol00 
console=xvc0 rhgb quiet", features=""
   xc_dom_kernel_file: filename="/var/run/xend/boot/boot_kernel.YO8N4O"
   xc_dom_malloc_filemap    : 2175 kB
   xc_dom_ramdisk_file: filename="/var/run/xend/boot/boot_ramdisk.g3Xb9t"
   xc_dom_malloc_filemap    : 3461 kB
   xc_dom_boot_xen_init: ver 3.1, caps xen-3.0-x86_64 xen-3.0-x86_32p 
hvm-3.0-x86_32 hvm-3.0-x86_32p hvm-3.0-x86_64
   xc_dom_parse_image: called
   xc_dom_find_loader: trying ELF-generic loader ... failed
   xc_dom_find_loader: trying multiboot-binary loader ... failed
   xc_dom_core.c:495: panic: xc_dom_find_loader: no loader found
   xc_dom_release: called

Note that in the 32 bit case the domain builder was not even trying to 
gunzip the kernel.

Investigating this turned into a quite an adventure, but to be short, at 
some moment I was able to boot the installed 32 bit Fedora 8 guest in 
the so-called "rescue" mode (by using virt-install and passing the 
'rescue' argument to the anaconda installer) and install a newer kernel 
RPM (kernel-xen-2.6.21.7-5.fc8.i686.rpm) directly into the guest. I was 
then able to confirm that the updated kernel was a gzip archive. 
However, after reboot I was still having the same problem and seeing the 
same messages in the logs. I then booted the guest in the rescue mode 
again and found that the kernel was no longer a gzip archive, 
surprisingly. Then I re-installed the kernel, copied it to dom0, and 
changed the guest XML config to use the copied kernel instead of pygrub. 
This way it worked. The 32 bit PV guest was able to boot successfully, 
and the domain builder output was as:

   xc_dom_allocate: cmdline=" ro root=/dev/VolGroup00/LogVol00 
console=xvc0 rhgb quiet ", features=""
   xc_dom_kernel_file: filename="/files/kernels/vmlinuz-2.6.21.7-5.fc8xen"
   xc_dom_malloc_filemap    : 2175 kB
   xc_dom_malloc            : 4842 kB
   xc_dom_do_gunzip: unzip ok, 0x21fc43 -> 0x4bab44
   xc_dom_ramdisk_file: 
filename="/files/kernels/initrd-2.6.21.7-5.fc8xen.img"
   xc_dom_malloc_filemap    : 3461 kB
   xc_dom_boot_xen_init: ver 3.1, caps xen-3.0-x86_64 xen-3.0-x86_32p 
hvm-3.0-x86_32 hvm-3.0-x86_32p hvm-3.0-x86_64
   xc_dom_parse_image: called
   xc_dom_find_loader: trying ELF-generic loader ... OK
   elf_parse_binary: phdr: paddr=0xc1000000 memsz=0x2d347c
   ...
   xc_dom_boot_image: called
   arch_setup_bootearly: doing nothing
   xc_dom_compat_check: supported guest type: xen-3.0-x86_64
   xc_dom_compat_check: supported guest type: xen-3.0-x86_32p <= matches
   xc_dom_compat_check: supported guest type: hvm-3.0-x86_32
   xc_dom_compat_check: supported guest type: hvm-3.0-x86_32p
   xc_dom_compat_check: supported guest type: hvm-3.0-x86_64
   ...

I then compared the kernel copied to dom0 with the kernel found in domU. 
The domU kernel was different in that its first 1024 bytes were complete 
garbage, everything else including the file size was the same.

I thought this corruption problem could be part of why "32 on 64 PV is 
not a supported configuration", but, per you suggestion, I repeated the 
entire procedure while booted into 32 bit xVM and had exactly the same 
problem. I was also able to create a 32 bit PV PAE openSUSE 10.3 guest 
on 64 bit xVM and have not seen any similar problems so far.

Any thoughts?

Thank you,
Vasiliy

_______________________________________________
xen-discuss mailing list
xen-discuss@opensolaris.org
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic