chainloading failed advanced menu
-
@Scott-B Did you ever have an advanced menu?
-
@george1421 said in chainloading failed advanced menu:
@Scott-B Did you ever have an advanced menu?
Yes. We used to memtest or dban from it.
-
OK, the last bit before we need to get the developers involved.
From the fog server linux command prompt. Key in the following:
mysql -u root -p fog <press enter at password> select * from globalSettings where settingKey="FOG_PXE_ADVANCED";
The output will look similar (but probably line wrapped) to this:
MariaDB [fog]> select * from globalSettings where settingKey="FOG_PXE_ADVANCED"; +-----------+------------------+----------------------------------------------------------------------------------------------------+--------------+-------------------+ | settingID | settingKey | settingDesc | settingValue | settingCategory | +-----------+------------------+----------------------------------------------------------------------------------------------------+--------------+-------------------+ | 74 | FOG_PXE_ADVANCED | This setting defines if you would like to append any settings to the end of your PXE default file. | junk | FOG Boot Settings | +-----------+------------------+----------------------------------------------------------------------------------------------------+--------------+-------------------+ 1 row in set (0.00 sec)
This is the text behind that menu entry. The settings value field is the only important field.
You could rewrite the sql query as this to give us only what we are interested in:
select settingValue from globalSettings where settingKey="FOG_PXE_ADVANCED";
-
@george1421 said in chainloading failed advanced menu:
select settingValue from globalSettings where settingKey=“FOG_PXE_ADVANCED”;
mysql> select * from globalSettings where settingKey="FOG_PXE_ADVANCED"; +-----------+------------------+----------------------------------------------------------------------------------------------------+--------------+-------------------+ | settingID | settingKey | settingDesc | settingValue | settingCategory | +-----------+------------------+----------------------------------------------------------------------------------------------------+--------------+-------------------+ | 74 | FOG_PXE_ADVANCED | This setting defines if you would like to append any settings to the end of your PXE default file. | | FOG Boot Settings | +-----------+------------------+----------------------------------------------------------------------------------------------------+--------------+-------------------+ 1 row in set (0.00 sec) mysql> select settingValue from globalSettings where settingKey="FOG_PXE_ADVANCED"; +--------------+ | settingValue | +--------------+ | | +--------------+ 1 row in set (0.10 sec) mysql>
-
@Scott-B Well somewhere along the way there is no advanced menu defined. We are going to need the @Developers to look at the code in the FOG configuration page to why that field is hidden in 1.5.5.3 (it works in 1.5.4). Then you can rebuild your custom advanced menu again.
-
@Scott-B @george1421 Ok seems like there is something messed up with the advanced menu.
First there seems to be an issue in the code that causes the chainload error. Please edit /var/www/html/fog/service/ipxe/advanced.php, jump to the end of the file and make the last four lines look like this:
printf( "%s", FOGCore::getSetting('FOG_PXE_ADVANCED') );
So remove the
#!ipxe
part in the second line. Save the file and see if your advanced login menu is properly working again.@george1421 said:
FOG will only display the advanced menu item if that field contains data. With a blank field FOG skips over displaying the iPXE menu.
You are perfectly right about this and I am not sure why it is that way. I am looking through the code right now to figure it out. My guess is that that part was moved to the iPXE menu settings but partly some stuff was left behind. While most old installations still had FOG_PXE_ADVANCED set from the old days no one did really notice.
@george1421 said:
We are going to need the @Developers to look at the code in the FOG configuration page to why that field is hidden in 1.5.5.3 (it works in 1.5.4).
What exactly do you mean? I just installed a fresh 1.5.4 test system and it looks exactly the same to me. FOG_PXE_ADVANCED empty and no field to edit it.
@Scott-B It’s kind of strange that you seem to be able to use the Advanced (Login) menu at all if that variable is empty in your database. See if you can make it work with the above mentioned code change and we’ll take it from there.
-
@Sebastian-Roth said in chainloading failed advanced menu:
What exactly do you mean? I just installed a fresh 1.5.4 test system and it looks exactly the same to me. FOG_PXE_ADVANCED empty and no field to edit it.
If I look at my fog server running 1.5.4 I can enter an Advanced menu command, because the field (edit box) is there. If you look at what Scott posted below he doesn’t have the box to enter anything in and he’s using 1.5.5.3 https://forums.fogproject.org/topic/12911/chainloading-failed-advanced-menu/5
I don’t know why the menu is being displayed in the iPXE side, but the first is to be able to edit in the webui. The rest is executing “I think” correctly. Its possible that the advanced menu field has a single white space in it causing the menu to be displayed in the ipxe side. I didn’t do a length in my query.
-
@george1421 Can’t stop laughing. We all seem to have stepped into the same puddle of mud here. I figured that the field is not being displayed because AdBlock Plus Firefox Add-in is blocking it!!!
The rest is executing “I think” correctly.
Sorry, no. There is an issue in the advanced.php as mentioned earlier. As soon as Scott has fixed that in the code (manually for now) and maybe disabled AdBlock for this site to be able to edit that field he should be all up and running.
But still I am wondering about the structure of this. When you got to FOG Configuration -> iPXE Menu Item Settings -> fog.advanced. From my understanding this is how the advanced menu was meant to be used at some stage but was never finished. Maybe I am wrong here. @Tom-Elliott is the only one who can tell us I suppose.
I’ll push that one fix to github for now and we’ll see about the rest later.
-
@Sebastian-Roth said in chainloading failed advanced menu:
But still I am wondering about the structure of this. When you got to FOG Configuration -> iPXE Menu Item Settings -> fog.advanced. From my understanding this is how the advanced menu was meant to be used at some stage but was never finished.
Yeah, I got that upside down. Has been a long time since I last used it. iPXE Menu Item Settings is just that, the menu definition itself. Those should be fine for Scott as far as I see (only issue which should not cause trouble is the
&&
you have, make this&&
in thefog.advancedlogin
so you won’t have that isset message on screen). Now after the menu item (login or not) it proceeds to load what is defined in the “Advanced menu command” field (disable AdBlock Firefox Add-in to see that). For that to work you need to fix that code in /var/www/html/service/ipxe/advanced.php as mentioned before.The “Advanced menu command” field needs to begin like this:
#!ipxe ...
-
@Sebastian-Roth said in chainloading failed advanced menu:
I made the change to /var/www/html/fog/service/ipxe/advanced.php as suggested. The menu still isn’t working but does a few extra errors about Exec format as seen in the image below.
-
@Scott-B What have you set in the “Advanced Menu Command” field?
-
@Sebastian-Roth said in chainloading failed advanced menu:
@Scott-B What have you set in the “Advanced Menu Command” field?
It’s blank and uneditable.
-
@Scott-B As mentioned yesterday you need to disable Firefox Add-in AdBlock Plus to see the field. Not sure why that is but I figured that was blocking the field for me. Pretty sure it’s the same for you.
-
@Sebastian-Roth said in chainloading failed advanced menu:
@Scott-B As mentioned yesterday you need to disable Firefox Add-in AdBlock Plus to see the field. Not sure why that is but I figured that
Doh! I must have only allowed it temporarily. The field is there now. It’s blank.
-
@Scott-B Well then start adding your advanced menu code here:
#!ipxe ...
-
@Sebastian-Roth said in chainloading failed advanced menu:
@Scott-B Well then start adding your advanced menu code here:
#!ipxe ...
That get’s me past the chainload error and drops me off at a blinking cursor.
-
@Scott-B You need to define a proper menu code yourself. The
...
is not enough. Who designed your advanced menu last time? -
@Sebastian-Roth said in chainloading failed advanced menu:
@Scott-B You need to define a proper menu code yourself. The
...
is not enough. Who designed your advanced menu last time?I think we are good. I was able to add DBAN back to the menu list.
-
@Scott-B said in chainloading failed advanced menu:
Doh! I must have only allowed it temporarily. The field is there now. It’s blank.
OK great this is what we were seeing in the database with our sql query. Somewhere along the way this field must have been reset. You will need to hand code this menu entry for it to work correctly. I can tell you that by using the boot.php url I provided below which was displayed in your browser, you can see the structure of what you need to include in your advanced menu design.
@Sebastian-Roth what kind of shady stuff are you doing to have that field blocked by the ad blocker?? <just kidding> I wonder why this field still exists? If you look in the ipxe menu configuration there is a field Menu show on, some options are Advanced menu and Advanced menu with password. Were these options never implemented? I had the idea to make just a checkbox in the ipxe menu configuration to be advanced menu but it looks like someone already thought of that??
-
@george1421 said in chainloading failed advanced menu:
If you look in the ipxe menu configuration there is a field Menu show on, some options are Advanced menu and Advanced menu with password.
Yeah I was mislead by that as well. Those two are just the entry points for the Advanced Menu. Without login -> no ipxe code needed -> will lead you straight to Advanced Menu Command definition. With Login -> do the Login (defined in the menu entry) -> then on successful login run same Advanced Menu Command. Might be a bit confusing at first.