Working BIOS mod for WS2008 in Xen HVM

Discussion in 'Virtualization' started by belkhal, Feb 6, 2009.

  1. belkhal

    belkhal MDL Novice

    Oct 13, 2008
    2
    2
    0
    #1 belkhal, Feb 6, 2009
    Last edited by a moderator: Apr 20, 2017
  2. waffledog

    waffledog MDL Novice

    Mar 17, 2009
    1
    1
    0
    Sincere Thanks

    I see that nobody has replied to your post, but I just wanted to you know that I REALLY REALLY do appreciate you sharing information like this!

    It's been really difficult finding information about the Xen-related modifications.

    Again, thank you!
    :D
     
  3. ll25031968

    ll25031968 MDL Novice

    Aug 24, 2009
    9
    0
    0
    not work on the last version of xenserver.

    can you confirm that?

    thanks.
     
  4. ll25031968

    ll25031968 MDL Novice

    Aug 24, 2009
    9
    0
    0
    nothing?

    nothing?
     
  5. amiskell

    amiskell MDL Novice

    Oct 29, 2009
    8
    0
    0
    I've successfully injected the HPQOEM SLIC 2.1 into the XenServer 5.5.0 Update 2 hvmloader (tested with Windows 7 x64) , I'll be posting the information/file into the Virtualization forum later today once I have a bit of time.
     
  6. Acid_Scorpion

    Acid_Scorpion MDL Novice

    Apr 11, 2010
    2
    1
    0
    Working hvmloader with ASUS SLIC 2.1 for Centos 5.5

    Some OS information:

    # cat /etc/redhat-release
    CentOS release 5.5 (Final)

    # uname -a
    Linux acid-notebook.acisco.org 2.6.18-194.3.1.el5xen #1 SMP Thu May 13 14:27:32 EDT 2010 i686 i686 i386 GNU/Linux

    # rpm -qa | grep xen
    kernel-xen-2.6.18-194.8.1.el5
    xen-libs-3.0.3-105.el5_5.3
    kernel-xen-2.6.18-194.3.1.el5
    xen-3.0.3-105.el5_5.3

    Link to downlod modified hvmloader and certificate v. 2.1 for ASUS:

    xttp://rapidshare.com/files/406446518/hvmloader-slic.zip
    MD5: 73DE4F5DEC8A4B2A4302F179DBCE2629
     
  7. cronolog

    cronolog MDL Novice

    Nov 4, 2010
    1
    0
    0
    Instructions in first post worked great for me for Win7 x64 running under xen-4.0.0 on Gentoo linux. Had to tweak the patch file slightly, since there's an extra line in the file being patched in this version of xen. I also used the SLIC from my host machine rather than the one provided in the attachment, so had to change oemid & oemtableid appropriately too.

    For other gentoo users, it's the app-emulation/xen-tools package you'll want to patch, not the plain xen one, since this one is where hvmloader is compiled/installed from. You can use the ebuild tool in gentoo to extract and compile the source as part of the process.
     
  8. HSChronic

    HSChronic MDL Expert

    Aug 25, 2007
    1,214
    64
    60
    sticking this thread so that it stays near the top because this is great info for people running Xen.
     
  9. johnkeates

    johnkeates MDL Novice

    Oct 2, 2009
    39
    8
    0
    #10 johnkeates, Dec 6, 2010
    Last edited by a moderator: Apr 20, 2017
    Which modification is needed for the patch to work on xen-4.0.0 ? Im on Debian Squeeze, the first hunk fails, probably because slic.h is missing?
    Fixed it.
    You grab the xen sources, like
    Code:
    apt-get source xen-tools
    whichever version you use.

    Then get all the dependencies:
    Code:
    apt-get build-dep xen-tools
    so you can actually build the thing.

    Next, get the build stuff if you don't have it. Theese are always good to have:
    Code:
    apt-get install kernel-package build-essential
    Then get to ur xen source, xen-4.0.0/tools/firmware/hvmloader/acpi/ and start messing with inserting a slic the REAL way.

    Start with slic.h.

    slic.h is a file, consisting of a simple c data file, with the slic bin inside it. The BIN is a regular BIOS modding bin, as it just contains the SLIC.
    Code:
    xxd -i ~/HPQOEM.SLIC-CPC.bin | grep -v len | sed 's/unsigned char.*/unsigned char SLIC[] = {/' > slic.h
    This created the slic file for make.

    Next, you need to set the marker etc in the acpi2 file, in the OEM fields
    Code:
    sed -i -e 's/#define ACPI_OEM_ID.*"Xen"/#define ACPI_OEM_ID "HPQOEM"/' acpi2_0.h
    sed -i -e 's/#define ACPI_OEM_TABLE_ID.*"HVM"/#define ACPI_OEM_TABLE_ID "SLIC-CPC"/' acpi2_0.h
    #this will work, but manual editing will work too - mind this, you might need to set the creator too, if you take a slic with creator data
    
    So get a bunch of bins from the pages on this forum, stick it in the slic.h header file, and make sure to edit the acpi2_0.h header as well.
    Next, create the function that actually creates the table;

    Code:
    /* SLIC */
    memcpy(&buf[offset], SLIC, sizeof(SLIC));
    table_ptrs[nr_tables++] = (unsigned long)&buf[offset];
    offset += align16(sizeof(SLIC));
    
    Which is in build.c and as such file is just a source file, you can edit it by hand. Patch files are nice, manual handiwork is better.
    The code is supposed to be inside the function "construct_secondary_tables" at the end, just before:
    Code:
    table_ptrs[nr_tables] = 0;
         return align16(offset);
    
    Now, this is simple, just go to the xen source root of your distro, and do a 'make tools'. For me that failed after xc couldn't build something python related, but that doesn't matter, you only need the hvmloader.
    It's in dist/install/usr/lib/xen-/boot. Copy it somewhere, and load your HVM guests up with it, and you have a BIOS with a SLIC 2.1. !

    []hxxp://image.bayimg.com/mabehaadd.jpg[]

    I actually had some information found on a random italian forum [hxxp://forum.italianzone.eu/software-sistemi-operativi-programmazione-36/howto-adding-slic-table-xenserver-hvms-12778/?langid=1] which explained a few of the manual actions. Now, I don't speak italian, and I can't translate, but you can see from the code how it works.


    If I find the time, or if someone has a question, I can make a more elaborate how-to.
     
  10. fagus

    fagus MDL Novice

    May 12, 2009
    7
    0
    0
    #11 fagus, Feb 25, 2011
    Last edited by a moderator: Apr 20, 2017
    doesn't work for me

    first of all, I would like to thank you for your detailed post.
    I have a few questions...

    you ment: xen, not xen-tools right?

    My actual problem:
    when i try to build the whole thing, i get the following error:
    Code:
    build.c: In function âconstruct_secondary_tablesâ:
    build.c:241: error: âSLICâ undeclared (first use in this function)
    build.c:241: error: (Each undeclared identifier is reported only once
    build.c:241: error: for each function it appears in.)
    make[8]: *** [build.o] Error 1
    
    241 is the newly inserted line
    I just don't know where I should have declared SLIC...
     
  11. l37

    l37 MDL Novice

    Oct 23, 2009
    8
    9
    0
    #12 l37, Mar 20, 2011
    Last edited by a moderator: Apr 20, 2017
    @fagus: did you insert the following line in 'build.c':
    Code:
    #include "slic.h"
    Thats needed to include the file correctly.
     
  12. stalks

    stalks MDL Novice

    Jan 11, 2011
    3
    1
    0
    I have followed the instructions and created hvmloader.slic. It compiled fine, etc.

    When I use it as the kernel for the hvm it will boot okay, and with a Server 2008 R2 setup CD, I see the first "Windows is loading files" part, and the progress bar but at the point where it is about to load the graphical setup, I just get a black screen.

    With the standard hvmloader it boots okay, and loads setup.

    Any ideas?

    Debian Squeeze, Xen 4.0.1.
     
  13. John_peterson

    John_peterson MDL Novice

    Jan 2, 2012
    3
    0
    0
    I really appreciate your efforts.
     
  14. fbifido

    fbifido MDL Member

    Jun 6, 2007
    199
    26
    10
    Has anyone mod Xenserver 6 yet?
     
  15. zimbo

    zimbo MDL Novice

    Oct 20, 2010
    21
    3
    0
    спасибо большое за пост
    использую CentOS:
    cat /etc/redhat-release
    CentOS release 5.7 (Final)

    вывод xentop:
    xentop - Xen 3.1.2-274.18.1.el5

    сырцы зена скачал с:
    hххp://vault.centos.org/
    мои из 5.7
    пакет:
    hxxp://vault.centos.org/5.7/updates/SRPMS/xen-3.0.3-132.el5_7.2.src.rpm

    то, что пришлось доставить для компиляции:
    yum install transfig
    yum install libidn-devel
    yum install zlib-devel
    yum install texi2html
    yum install SDL-devel
    yum install curl-devel
    yum install libX11-devel
    yum install python-devel
    yum install tetex-latex
    yum install tetex-latex
    yum install ncurses-devel
    yum install gtk2-devel
    yum install libaio-devel
    yum install stubs-32
    yum install glibc-devel
    yum install glibc-devel
    yum install pciutils-devel
    yum install e4fsprogs-devel
    yum install xz-devel
    yum install bzip2-devel

    автором предложен архив в котором нет самого бинарника(слика), взял его отдельно
    на базе предложенной статьи всё получилось успешно, но не понял только как и где взять правильный XSDT RSDT если я не хочу использовать от HP
    sed -i -e 's/#define ACPI_OEM_ID.*"Xen"/#define ACPI_OEM_ID "HPQOEM"/' acpi2_0.h
    sed -i -e 's/#define ACPI_OEM_TABLE_ID.*"HVM"/#define ACPI_OEM_TABLE_ID "SLIC-CPC"/' acpi2_0.h

    извините но с английским очень плохо :)
     
  16. millbarge

    millbarge MDL Novice

    Mar 31, 2012
    3
    0
    0
    #17 millbarge, Jul 22, 2012
    Last edited by a moderator: Apr 20, 2017
    This has changed slightly in xen 4.1: The code to insert in build.c is:

    Code:
         /* SLIC */
        unsigned char *slc;
        slc = mem_alloc(sizeof(SLIC), 16);
        if (!slc) return -1;
        memcpy(slc, SLIC, sizeof(SLIC));
        table_ptrs[nr_tables++] = (unsigned long)slc;
     
    and it should be placed in the construct_secondary_tables function just above:
    Code:
         table_ptrs[nr_tables] = 0;
        return nr_tables;
     
    Actually, I declared the variable slc at the start of the construct_secondary_tables function, but that should not matter. The rest of the instructions should remain the same. Don't forget to add #include "slic.h".
     
  17. Scopeman

    Scopeman MDL Novice

    Jul 29, 2009
    20
    8
    0
    Hiho,

    here is a working hvmloader with dell slic 2.1 for Debian Squeeze and Xen 4.0.1.

    bayimg.dot.com/caaJaaaeF

    datafilehost.dot.com/download-634615a0.html
     
  18. cyrozap

    cyrozap MDL Novice

    May 29, 2012
    42
    507
    0
    Hello, everyone! This is my first time posting here, so I thought I'd make it good! I noticed that no one has posted an up-to-date hvmloader yet, so I've decided to post the one I just compiled. I built it on Ubuntu 12.04 using the Xen 4.1.3 source tarball. This file is tested to (mostly) work on Xen Cloud Platform 1.6 (build 61002c) with Xen 4.1.3. I have no idea about any other operating systems, but it should just be a drop-in replacement for any Xen installation that's using Xen 4.1.3. I used a Dell SLIC 2.1 table so you'll need a Dell SLIC certificate, but those are easy to find.

    Here's the link to the file: bit.cur.lv/hvmloader

    Current issues:
    • VM shutdown does not always work properly, so a forced shutdown may be required in those instances.
    • The CPU sometimes spontaneously gets reported as "unplugged".
     
  19. Xerxies

    Xerxies MDL Novice

    Dec 9, 2009
    21
    3
    0
    Is anyone maintaining this still?

    I would be interested in a slic 2.2 bios for xen to use with server 2012; i'm using XCP 1.6

    It was done with a Dell bios for VMware here

    forums.mydigitallife.net/threads/36721-Windows-Server-2012-OEM-SLP-keys/page3