Fog Menu loop



  • Running Fog server 1.5.5, Ubuntu 14.03.
    Deploying to a new UEFI boot Dell machine, DHCP Windows 2016 running Option 66 - Fog IP Address Option 67 - ipxe.efi
    When deploying an image to a new machine, I am able to get to the fog menu with no problems, but once I select either Full or Quick Registration I am greeted with a black menu screen with no cursor or location of where the menu is seletcted. I can hit down twice and hit enter on Full Reg and it just loops back to this menu, if I hit escape I get an operation canceled, could not boot, chainloading error.Fog-Menu.jpg


  • Moderator

    @Sebastian-Roth said in Fog Menu loop:

    Would it be possible to prevent from this issue when returning and empty string instead of nothing when the key in globalSettings does not exist?

    I don’t know about how fog interacts directly with the database but MSSQL has an ifnull statement where if the field is null (or missing in q joined table) you can return a specific alternate string. It appears that mysql has a similar construct.


  • Developer

    @Tom-Elliott Ok, I suppose we just leave it like that as it has been the first time (I know of) this has happened and we were able to figure it out in less than a week. Good enough I reckon.


  • Senior Developer

    @Sebastian-Roth the simplest method would be to use individual calls, but that would mean 15 separate queries to the database. The way it runs now, is just one query.


  • Developer

    @Tom-Elliott Would it be possible to prevent from this issue when returning and empty string instead of nothing when the key in globalSettings does not exist?! Not sure if that would break things in other places. You know fogmanagercontroller.class and all that way better than I do.


  • Developer

    Great you guys have figured this out!!



  • @Tom-Elliott Yes, everything is working as expected, I don’t have to press escape to get into the menu, it partclones without any problems and performs a full reg.


  • Senior Developer

    @Rebelman So you’re saying things are working as expected now, and no more having to press ESC to get into the menu and all?



  • @Tom-Elliott

    mysql> SELECT settingKey,settingValue FROM globalSettings WHERE settingKey IN ('FOG_EFI_BOOT_EXIT_TYPE','FOG_KERNEL_ARGS','FOG_KERNEL_DEBUG','FOG_KERNEL_LOGLEVEL','FOG_KERNEL_RAMDISK_SIZE','FOG_KEYMAP','FOG_KEY_SEQUENCE','FOG_MEMTEST_KERNEL','FOG_PXE_BOOT_IMAGE','FOG_PXE_BOOT_IMAGE_32','FOG_PXE_HIDDENMENU_TIMEOUT','FOG_PXE_MENU_HIDDEN','FOG_PXE_MENU_TIMEOUT','FOG_TFTP_PXE_KERNEL','FOG_TFTP_PXE_KERNEL_32') ORDER BY settingKey;
    +----------------------------+--------------+
    | settingKey                 | settingValue |
    +----------------------------+--------------+
    | FOG_EFI_BOOT_EXIT_TYPE     | refind_efi   |
    | FOG_KERNEL_ARGS            |              |
    | FOG_KERNEL_DEBUG           |              |
    | FOG_KERNEL_LOGLEVEL        | 4            |
    | FOG_KERNEL_RAMDISK_SIZE    | 127000       |
    | FOG_KEYMAP                 |              |
    | FOG_KEY_SEQUENCE           |              |
    | FOG_MEMTEST_KERNEL         | memtest.bin  |
    | FOG_PXE_BOOT_IMAGE         | init.xz      |
    | FOG_PXE_BOOT_IMAGE_32      | init_32.xz   |
    | FOG_PXE_HIDDENMENU_TIMEOUT | 30           |
    | FOG_PXE_MENU_HIDDEN        | 0            |
    | FOG_PXE_MENU_TIMEOUT       | 3            |
    | FOG_TFTP_PXE_KERNEL        | bzImage      |
    | FOG_TFTP_PXE_KERNEL_32     | bzImage32    |
    +----------------------------+--------------+
    15 rows in set (0.00 sec)
    

    Here is the return now with that included, I’ve also tried doing a new install on my UEFI machine and it went further into the menu until it crashed on cannot find disk on the system. I had to make a change in my BIOS and I’m now able to successfully install an image onto the machine. Everything completes with no errors.


  • Senior Developer

    @Rebelman So you’re missing the FOG_KEYMAP value.

    Please run:

    INSERT INTO fog.globalSettings (settingKey,settingDesc,settingValue,settingCategory) VALUES ('FOG_KEYMAP','This setting defines the keymap used on the client boot image.','','General Settings');
    

    You should have more success in the “hidden” menu issue, as well as no longer have the loop.



  • @Tom-Elliott

    mysql> SELECT settingKey,settingValue FROM globalSettings WHERE settingKey IN ('FOG_EFI_BOOT_EXIT_TYPE','FOG_KERNEL_ARGS','FOG_KERNEL_DEBUG','FOG_KERNEL_LOGLEVEL','FOG_KERNEL_RAMDISK_SIZE','FOG_KEYMAP','FOG_KEY_SEQUENCE','FOG_MEMTEST_KERNEL','FOG_PXE_BOOT_IMAGE','FOG_PXE_BOOT_IMAGE_32','FOG_PXE_HIDDENMENU_TIMEOUT','FOG_PXE_MENU_HIDDEN','FOG_PXE_MENU_TIMEOUT','FOG_TFTP_PXE_KERNEL','FOG_TFTP_PXE_KERNEL_32') ORDER BY settingKey;
    +----------------------------+--------------+
    | settingKey                 | settingValue |
    +----------------------------+--------------+
    | FOG_EFI_BOOT_EXIT_TYPE     | refind_efi   |
    | FOG_KERNEL_ARGS            |              |
    | FOG_KERNEL_DEBUG           |              |
    | FOG_KERNEL_LOGLEVEL        | 4            |
    | FOG_KERNEL_RAMDISK_SIZE    | 127000       |
    | FOG_KEY_SEQUENCE           |              |
    | FOG_MEMTEST_KERNEL         | memtest.bin  |
    | FOG_PXE_BOOT_IMAGE         | init.xz      |
    | FOG_PXE_BOOT_IMAGE_32      | init_32.xz   |
    | FOG_PXE_HIDDENMENU_TIMEOUT | 30           |
    | FOG_PXE_MENU_HIDDEN        | 0            |
    | FOG_PXE_MENU_TIMEOUT       | 3            |
    | FOG_TFTP_PXE_KERNEL        | bzImage      |
    | FOG_TFTP_PXE_KERNEL_32     | bzImage32    |
    +----------------------------+--------------+
    14 rows in set (0.00 sec)```

  • Senior Developer

    @Rebelman I updated the query, sorry there shouldn’t have been a space between global and Settings. It should’ve appeared as globalSettings



  • @Tom-Elliott
    So I’m getting an error when typing that in on my FOG database -
    ERROR 1146 (42S02): Table ‘fog.global’ doesn’t exist


  • Senior Developer

    @Rebelman I’m noticing here, that the bzImage is not being generated (specifically it should be trying to get a bzImage32 but it’s blank, leading me more suspicion to my prior posting.)


  • Senior Developer

    @Rebelman said in Fog Menu loop:

    s

    What’s the output of mysql statement:

    SELECT settingKey,settingValue FROM globalSettings WHERE settingKey IN ('FOG_EFI_BOOT_EXIT_TYPE','FOG_KERNEL_ARGS','FOG_KERNEL_DEBUG','FOG_KERNEL_LOGLEVEL','FOG_KERNEL_RAMDISK_SIZE','FOG_KEYMAP','FOG_KEY_SEQUENCE','FOG_MEMTEST_KERNEL','FOG_PXE_BOOT_IMAGE','FOG_PXE_BOOT_IMAGE_32','FOG_PXE_HIDDENMENU_TIMEOUT','FOG_PXE_MENU_HIDDEN','FOG_PXE_MENU_TIMEOUT','FOG_TFTP_PXE_KERNEL','FOG_TFTP_PXE_KERNEL_32') ORDER BY settingKey;
    

    There should be 15 values returned, and I’m suspecting one of these keys is missing. Please copy and paste the statement into your shell to get the return, then copy and paste the return values into a posting so we can see what’s going on a little easier.

    To make things easier to see (and for us to easily view the items more directly) the values in order would be something like:

    1. FOG_EFI_BOOT_EXIT_TYPE
    2. FOG_KERNEL_ARGS
    3. FOG_KERNEL_DEBUG
    4. FOG_KERNEL_LOGLEVEL
    5. FOG_KERNEL_RAMDISK_SIZE
    6. FOG_KEYMAP
    7. FOG_KEY_SEQUENCE
    8. FOG_MEMTEST_KERNEL
    9. FOG_PXE_BOOT_IMAGE
    10. FOG_PXE_BOOT_IMAGE_32
    11. FOG_PXE_HIDDENMENU_TIMEOUT
    12. FOG_PXE_MENU_HIDDEN
    13. FOG_PXE_MENU_TIMEOUT
    14. FOG_TFTP_PXE_KERNEL
    15. FOG_TFTP_PXE_KERNEL_32

    I suspect something between 1-12 is actually missing, causing the MENU_TIMEOUT value to to be put in place of the MENU_HIDDEN value (timeout is usually defaulted to 3 - 5 seconds) which is triggering the boot menu to think it is a hidden item.


  • Developer

    @Rebelman I am ob the road and can’t post a long answer right now. Looking at the boot.php output you posted I already see that there seems to be an issue with the iPXE code generated. I will have a closer look when I get home tonight.


  • Moderator

    @Rebelman Lets take a divide an concur approach here.

    Lets assume the upgrade did not go as expected. This will be part 1

    1. From the linux console change to /var/www
    2. If there is a fog directory there rename it to fog.old.
    3. Change to /var/www/html
    4. If there is a fog directory there rename it to fog.old
    5. Change to the directory where you downloaded the fog installer. Depending on which instructions it might be /root/fogproject
    6. Change to the bin directory and rerun the fog installer. The fog installer should not ask the questions over again since it should have detected the settings from the previous install. That will rebuild the entire web ui fog directory. Don’t skip the part about updating the database instructions in the linux console. You will need to use a web browser and key in the url listed on the web console.
    7. Reboot the fog server after the reinstall is done.

    Now test the fog menu. You should see the fog menu without having to hit escape. There is no negative impact of doing this step.



  • @Sebastian-Roth
    Yes, I only have it booting to one FOG server, the picture shows the UEFI boot screen. UEFI-boot.jpg

    For as long as I have had FOG running, I’ve always had to press escape to get into the menu. I’ve never marked it to be hidden, at least not intentionally.

    This is the link for the bootmenu.class.php file
    Bootmenu

    This is my menuAccess info you are also wanting.

    #!ipxe
    set fog-ip 10.254.1.20
    set fog-webroot fog
    set boot-url http://${fog-ip}/${fog-webroot}
    cpuid --ext 29 && set arch x86_64 || set arch i386
    goto get_console
    :console_set
    colour --rgb 0x00567a 1 ||
    colour --rgb 0x00567a 2 ||
    colour --rgb 0x00567a 4 ||
    cpair --foreground 7 --background 2 2 ||
    goto MENU
    :alt_console
    cpair --background 0 1 ||
    cpair --background 1 2 ||
    goto MENU
    :get_console
    console --picture http://10.254.1.20/fog/service/ipxe/bg.png --left 100 --right 80 && goto console_set || goto alt_console
    :MENU
    menu
    colour --rgb 0xff0000 0 ||
    cpair --foreground 1 1 ||
    cpair --foreground 0 3 ||
    cpair --foreground 4 4 ||
    item --gap Host is NOT registered!
    item --gap -- -------------------------------------
    item fog.local Boot from hard disk
    item fog.memtest Run Memtest86+
    item fog.reginput Perform Full Host Registration and Inventory
    item fog.reg Quick Registration and Inventory
    item fog.deployimage Deploy Image
    item fog.multijoin Join Multicast Session
    item fog.sysinfo Client System Information (Compatibility)
    choose --default fog.local --timeout 0 target && goto ${target}
    :fog.local
    sanboot --no-describe --drive 0x80 || goto MENU
    :fog.memtest
    kernel memdisk initrd=init.xz iso raw
    initrd init.xz
    boot || goto MENU
    :fog.reginput
    kernel loglevel=4 initrd=30 root=/dev/ram0 rw ramdisk_size=127000 web=http://10.254.1.20/fog/ consoleblank=0 rootfstype=ext4 storage=10.254.1.20:/images/ storageip=10.254.1.20 loglevel=4 mode=manreg
    imgfetch 30
    boot || goto MENU
    :fog.reg
    kernel loglevel=4 initrd=30 root=/dev/ram0 rw ramdisk_size=127000 web=http://10.254.1.20/fog/ consoleblank=0 rootfstype=ext4 storage=10.254.1.20:/images/ storageip=10.254.1.20 loglevel=4 mode=autoreg
    imgfetch 30
    boot || goto MENU
    :fog.deployimage
    login
    params
    param mac0 ${net0/mac}
    param arch ${arch}
    param username ${username}
    param password ${password}
    param qihost 1
    isset ${net1/mac} && param mac1 ${net1/mac} || goto bootme
    isset ${net2/mac} && param mac2 ${net2/mac} || goto bootme
    param sysuuid ${uuid}
    :fog.multijoin
    login
    params
    param mac0 ${net0/mac}
    param arch ${arch}
    param username ${username}
    param password ${password}
    param sessionJoin 1
    isset ${net1/mac} && param mac1 ${net1/mac} || goto bootme
    isset ${net2/mac} && param mac2 ${net2/mac} || goto bootme
    param sysuuid ${uuid}
    :fog.sysinfo
    kernel loglevel=4 initrd=30 root=/dev/ram0 rw ramdisk_size=127000 web=http://10.254.1.20/fog/ consoleblank=0 rootfstype=ext4 storage=10.254.1.20:/images/ storageip=10.254.1.20 loglevel=4 mode=sysinfo
    imgfetch 30
    boot || goto MENU
    :bootme
    chain -ar http://10.254.1.20/fog/service/ipxe/boot.php##params ||
    goto MENU
    autoboot
    

    And finally no, I don’t have any other models per say I have different machines I can test, we just bought a batch of computers for a new lab and all are the same model and specs. I can try to upgrade the firmware and see if that makes a difference.


  • Developer

    @Rebelman One last thing I forgot earlier. Please open this URL in your browser and post the full output here: http://10.254.1.20/fog/service/ipxe/boot.php?menuAccess=1


  • Developer

    @Rebelman Great you took those videos. Well done!! It’s way easier to follow than reading text and trying to wind my head around what is being said.

    So first thing I noticed is that in the text output where it asks you to press a key to get to the menu I see ESC on the UEFI machine and Escape on the legacy machine. I still can’t make sense of this difference and so allow me to ask if those two clients surely booted from the exact same FOG server? Looking at the text output I should be able to see if they both boot from the same IP but the text is too blurry on the UEFI boot video that I just can’t say for sure it’s the exact same IP they boot from. Just want to make sure it is.

    Second we see that both systems seem to boot from a hidden menu. But the option is not set in the web UI or the database as we checked. Did you ever intend to hide the FOG menu? Do you remember since when it is like that (need to hit ESC and enter password to get the menu)?

    Just to make sure we are not hunting down the wrong track here, can you please grab a copy of the file /var/www/html/fog/lib/fog/bootmenu.class.php, upload it to a file sharing platform and post a link here.

    Ok, watching the videos over and over I have a feeling that the difference between legacy and UEFI is that loading the kernel/init (FOS) after selecting Full Registration from the menu simply fails on UEFI and because of that you are thrown back to the menu (which is black and white due to a minor issue we have in the code - should fix that but it’s not causing an issue for you here). So the big question is, why does loading the kernel/init actually fail on this UEFI machine??? It really shouldn’t as this is working for so many other people on UEFI machines. Do you have other UEFI models around? Can you please test if you have the same behavior with all UEFI machines?! Also check if there is a firmware upgrade for this particular machine model you see the issue with.

    I have to say again that this would not have been possible without you taking the videos. There are small bits of information I can get out of such a video that we would not be able to get to by me just asking questions and you explaining what is going on.

    I’m wondering if I should just do a reinstall on my server and start fresh

    Maybe this might help in the hidden menu issue but it most probably won’t change anything for the UEFI booting issue. I am still in hope that we can figure out the hidden menu thing without you re-installing the server.


Log in to reply
 

441
Online

6.2k
Users

13.6k
Topics

128.0k
Posts