SOLVED Change Needed for VM to PXE boot to FOG...

  • I recall reading a post about needed to change something in FOG to allow a VM to boot to iPXE.

    Currently, I have the VM running on Server 2008 R2 Hyper-V.

  • @Tom-Elliott

    I have a fresh centos VM install that I can use, i’ll have a look today and install SVN trunk from scratch. There could well have been something in the SQL backup restore that SVN didn’t like. I’ll post in a fresh thread so that this doesn’t get polluted too much.

  • Senior Developer

    @KKTwenty101 I’ve fixed the inventory send bug now, but I need to know more about this getbanner error’s you’re talking about.

  • I did try to upgrade to SVN trunk but that brought nothing but errors and woe for me. I had INPUT/OUTPUT ipxe errors on client boot, it hung on sending inventory to server, http500 errors when I tried to manually check a mac via HTTP, “getbanner()” PHP errors in the console so in effect I gave it up as a bad one as I don’t have time to strip down and reinstall from scratch (I attempted to upgrade a working 1.2.0 to SVN trunk) at the moment (i’ll have a go installing from SVN trunk at some point and import the SQL configuration when I get a chance - I need to really as im running at about 600Mb/min on PIGZ 3 which is way slower than the old partimage 0.32 of close to 2Gb/Min I was used to)

    I’ll do that again some time…

    Ironically, SVN trunk calls bg.png from BootMenu.class.php, would that cause an issue? (I tried commenting that out in my failed attempt but since I was getting http500 errors on http mac ipxe calls then this wasn’t the real problem I was having)

  • Senior Developer

    @KKTwenty101 I’d highly recommend moving to trunk as there is no more need to comment out the console lines.

  • Apologies for grave digging but this seemed to be the best thread for the same issue (I searched on google and on the forum but couldn’t find a homogeneous solution. Anyway for others searching the same issue. I too had FOG 1.2 working fine on physical hardware but my hyper-v VMs were throwing up “could not boot” errors. This is indeed due to a change needed in /fog/lib/fog/BootMenu.class.php - hyper-v cannot render the bg.png apparently.

    for me, the line print "console --picture $this->booturl/ipxe/bg.png needed commenting out. Or you can make it conditional (on mac address)

    if (substr($_REQUEST[‘mac’],0,8)==“00:15:5d”){
    print “# Hyper-V MAC address detected - no console background\n”;
     } else {        
    print "console --picture $this->booturl/ipxe/bg.png --left 100 --right 80\n";

    Again sorry for grave digging but since this is top of the google tree then hopefully this can help someone else.

  • Worked for 1.0.1. Different line number however. Thanks a lot netbootdisk.

  • Loving the conditional code. All my system samples accept the iPXE (53653) that comes with Fog 1.2.0 (svn 2041) after the conditional code is injected; now at line 601-605.

    I will branch off into my own Topic next post as I report on my testing the menu options and kernel.

  • What kernel (bzImage) are you using ?

  • Had the same problem with 1.1.2 and Hyper-V 2012R2.

    I just made the {fogwebdir}/lib/fog/BootMenu.class.php line 600 hack conditional…

    if (substr($_REQUEST[‘mac’],0,8)==“00:15:5d”){
    print “# Hyper-V MAC address detected - no console background\n”;
    } else {
    print “console --picture $this->booturl/ipxe/bg.png --left 100 --right 80\n”;

    …Now all users still see the corporate branded background - and I can still capture master images in Hyper V 🙂

  • Alright, here is where I’m at:

    01> Login Ubuntu Server 14.04 (x64) / Execute BASH Shell as SuperUser

    sudo su

    02> Change Hostname

    hostname servername

    03> Install a new HDD
    ( [url][/url] )

    lshw -C disk
    fdisk /dev/sd?
    n p 1 <enter> <enter> w

    04> Quick Format Second HDD as NTFS

    mkfs.ntfs -Q /dev/sdb1
    mkdir /mnt/temp
    mount /dev/sdb1 /mnt/temp
    ls -la /mnt/temp
    umount /mnt/temp

    05> Attach Second Volume by Appending AutoMount Entry to File System Table

    vim /etc/fstab

    all spacing is tabs

    FOGStore for images


    [ESC], [SHIFT]":", “wq”

    06> Create MountPoint

    mkdir /images

    07> Set permissions on /images

    chmod 777 /images

    08> Mount the New Volume

    mount /images

    09> Download latest SVN of FogProject

    cd /opt

    wget [url][/url]
    or ?
    wget --no-check-certificate [url][/url]

    10> Extract

    tar -zxf fog_1.1.2.tar.gz

    11> Disable Firewall for Fog

    ufw disable

    12> Create DHCP Reservation


    13> Login Ubuntu Server 14.04 (x64) / Execute BASH Shell as SuperUser

    sudo su

    14> Install Fog

    cd /opt/fog_1.1.2/bin/

    @ What version of Linux would you like to run the installation for?
    @ What type of installation would you like to do?
    @ What is the IP address to be used by this FOG Server?
    <verify the reservation address>
    @ Would you like to setup a router address for the DHCP server?
    @ Would you like to setup a DNS address for the DHCP server and client boot image?
    @ Would you like to change the default network interface from eth0?
    @ would you like to use the FOG server for DHCP service?
    @ This version of FOG has internationalization support, would you like to install the additional language packs?
    @ Would you like to donate computer resources to the FOG Project?
    @ Are you sure you wish to continue?
    @ Press enter to acknowlege this message.
    @ Configuring mysql-server-5.5
    @ Did you leave the mysql password blank during install?
    @ Please enter your mysql password:
    @ Press [Enter} key when database is updated/installed.

    Using a browser visit [url][/url]
    Select: Install/Upgrade Now
    @ Update / Install Successful!

    @ Send Notification?

    @ Script done, file is /var/log/foginstall.log

    15> Restart


    16> Login Ubuntu Server 14.04 (x64) / Execute BASH Shell as SuperUser

    sudo su

    17> Update hostname file with server’s new name

    vim /etc/hostname
    [ESC], :wq

    18> Update hosts file for server’s new name
    vim /etc/hosts
    line 2 : servername.domainservername
    [ESC], :wq

    19> Restart


    20> Configure DHCP Options for PXE for Subnet Scope

    Option 066 Boot Server Host Name “”
    Option 67 Bootfile Name “undionly.kpxe”

    21> Change Web Interface User Account

    Visit [url]http://servername/fog/management[/url]
    Login as user: fog password: password
    Change username to: <username> / password: <password>

    22> WorkAround for Hyper-V iPXE compatability

    vim /var/www/fog/lib/fog/BootMenu.class.php
    old line 600 : print “console – picture …”
    new line 600 : // print “console – picture …”
    [ESC], :wq

    23> Update Kernel (from Developer’s site – [url][/url])

    cd /var/www/html/fog/service/ipxe
    mv bzImage bzImage_orig
    mv bzImage32 bzImage32.orig

    wget --no-check-certificate [url][/url]
    wget --no-check-certificate [url][/url]

    24> Update to latest undionly.kpxe

    cd /tftpboot
    mv undionly.kpxe undionly.kpxe.orig

    wget [url][/url] -O /tftpboot/undionly.kpxe

    iPXE is working. The problem now is finding a kernel that works on both the physical hardware and Hyper-V virtual machines…

    So far I’ve tried for bzImage:
    3.15.3 original32 for 1.1.2
    3.15.1 original for 1.1.2
    3.14.3 original for 1.0.1
    I used 3.12.5 on 0.32 successfully.

  • … but wait! There’s more!

    This current configuration with this kernel works but is extremely slow to proceed after “/init.xz… ok” on the physical machines I was using for testing. It eventually pops up a failure to configure the network adapter. (an Intel® 82567LM-3 Gigabit Network Connection)

  • Alrighty… something’s working.

    I’ve been stepping up through the kernels and have landed on unofficial 3.15.3 that appears to be working … okay-ish.

    I’m grabbing a linux server vm right now and it spitting up errors like watermelon seeds along the likes of:

    bug: using smp_processor_id() in preemptible [00000000] code partclone.image/2520

    … but it is still working through the upload.

    Now to blow it all away back to bare metal and see what fixes are really needed.

  • There can be only ONE!

    ahem… There is only one instance of “console” in that context. There are two other entries as variables “consoleblank=0”

    And now, somehow, I’m back to the original condition without getting to the ControlKey and Username/Password.

    I read somewhere else, someone was having an issue where they could only get things to work immediately after rebooting the server. So I tried that.

    If I time the PXE boot on my VM to hit the FOG server within the first few seconds of restarting, I can get all the way to the PXE menu. I quickly then tried to do a Quick Host Registration.

    /bzImage… ok
    /init.xz… ok
    tsc: Fast TSC calibration failed
    The VM window re-sizes to what looks like 1024x768, then if I’m lucky, I might get to:
    piix4_smbus 0000:00:07.3: SMBus base address uninitialized - upgrade BIOS or use force_addr=0xaddr
    … otherwise it’s hanging after the screen re-size.
    I then disabled the firewall:
    [CODE]sudo ufw disable[/CODE]
    My VM is showing CPU usage above idle (12%) while I’m stuck.
    Meanwhile we’re looking into the SQL server.

  • Senior Developer

    Can you comment out all instances of console within those files? I believe there’s only one but I could be way off.

  • [quote=“Tom Elliott, post: 32252, member: 7271”]It will be ugly, but can you try this:

    Editing {fogwebdir}/lib/fog/BootMenu.class.php changing line 600:
    [PHP]print “console --picture $this->booturl/ipxe/bg.png --left 100 --right 80\n”;[/PHP]
    [PHP]// print “console --picture $this->booturl/ipxe/bg.png --left 100 --right 80\n”;[/PHP]
    … appears to be working! … oh wait… nvm.
    I get to the Control Key prompt to enter, then the username/password page, but then the same error occurs.

  • Senior Developer

  • I’ve tried:
    [CODE]wget -O /tftpboot/undionly.kpxe[/CODE]
    cd /var/www/fog/service/ipxe/
    rm init.xz init_32.xz

    Plus I’ve tried [url][/url] . The symbolic link works, but the same error results.

    The physical machines I’ve tried so far all work, it is only hanging up with my Hyper-V 2012 VMs with the same two errors as the original poster.

  • Senior Developer

    And you try and use the files found in SVN trunk

  • [quote=“BigMan99211, post: 24152, member: 21932”]Ok. I just figured out that I had the wrong network adapter booting to iPXE. But now, I’m getting errors when trying to load iPXE.
    “Could not configure console: No such file or directory ([url][/url])”
    “Could not boot: No such file or directory ([url][/url])”
    Then it just boots to the VHD like normal.
    Any ideas?[/quote]

    Has there been any movement on resolving this issue? I am experiencing it also on my Hyper-V 2012. Physical machines have no issue.

    Ubuntu Server 14.04 LTS x64
    Fog Project 1.1.2

    Both clean virgin installs.

    This is a game stopper for upgrading from 0.32 .