Fog upgrade to 1.5 broke PXE installation
-
Hi,
We use FOG for both imaging and pxe installation. The hooks that were created with Tom’s (author) help in version 1.3 & 1.4 worked like a champ. Upgraded to the latest 1.5-RC9. Where I noticed the
/var/www/fog/lib/hooks/boottask.hook.php file format was changed. Re-created all our hooks in new format.
Now the PXE install is starting. The install freezes right after fetching the initrd image. Tried with different flavors of linux ( ubuntu & centos ). Tried adding “acpi=off” to the kernel arguments. Looks like this more on the fog services. Can’t see any debugging logs. Now I am tempted to role back to old version. Before that wanted to try for support.Thank you
Chakri -
@Sebastian-Roth and @Tom-Elliott Thank you so much for your help. Backed-up my current images and cleanly installed from the latest GIT-repo 1.5. Coping back the same hooks worked again. Not sure what happened during the upgrade but fog is back in production now.
Thank you
Chakri -
Can you upload your hooks here so I can try to take a look at them and help out where possible? Or send them to me in email. Hit me in chat if you don’t have my email address.
-
@tom-elliott Thank you for the quick response. Please check the 2 attached hooks for centos(RHEL variant) and xenial(Ubuntu variant).
Thank you
Chakri
[1_1507737322049_boottaskxenialserver.hook.php](Uploading 100%) [0_1507737322042_boottaskcentos7.hook.php](Uploading 100%) -
Possibly the freeze on PXE boot is not due to an issue in the hooks but more because the iPXE binaries where updated as well. Have you tried different hardware clients?
-
@sebastian-roth I tried on 2 different type of physical hardware and a vmware vm.
Thank you
Chakri -
@csa You may likely need to reupload.
Wait until the pictures show up in the Preview pane. Otherwise all we see is the “text” of it trying to upload.
-
@tom-elliott Sorry having tough time uploading files. Pasting the file.
file --> boottaskcentos7.hook.php
<?php /** * Alters the boot task to make a custom entry. * * PHP version 5 * * @category BootTask * @package FOGProject * @author Tom Elliott <tommygunsster@gmail.com> * @license http://opensource.org/licenses/gpl-3.0 GPLv3 * @link https://fogproject.org */ /** * Alters the boot task to make a custom entry. * * @category BootTask * @package FOGProject * @author Tom Elliott <tommygunsster@gmail.com> * @license http://opensource.org/licenses/gpl-3.0 GPLv3 * @link https://fogproject.org */ class BootTaskCentos7 extends Hook { /** * The name of this hook. * * @var string */ public $name = 'BootTaskCentos7'; /** * The description of this hook. * * @var string */ public $description = 'This is for Xenial Server installation'; /** * Is this hook active or not. * * @var bool */ public $active = true; /** * Initializes object. * * @return void */ public function __construct() { parent::__construct(); self::$HookManager ->register( 'IPXE_EDIT', array( $this, 'changeTask' ) ); } /** * Change the task. * * @param mixed $arguments The items to alter. * * @return void */ public function changeTask($arguments) { if (!isset($arguments['ipxe']['task'])) { return; } $TaskType = self::getClass('TaskType') ->set('name', 'centos7-install') ->load('name'); if (!$TaskType->isValid()) { return; } $keys = array_keys($arguments['ipxe']['task']); if (!in_array($TaskType->get('id'), $keys)) { return; } $arguments['ipxe']['task'][$TaskType->get('id')] = array( 'set path /OS_IMAGES/CENTOS-7.0-1511-DVD', 'set nfs_path /images/OS_IMAGES/CENTOS-7.0-1511-DVD', 'kernel ${boot-url}${path}/images/pxeboot/vmlinuz ks=${boot-url}/kickstarts/centos7.cfg ip=dhcp acpi=off || read void', 'initrd ${boot-url}${path}/images/pxeboot/initrd.img || read void', 'boot || read void', ); $arguments['Host'] ->get('task') ->set( 'stateID', self::getCompleteState() )->save(); } }
file --> boottaskxenialserver.hook.php
<?php /** * Alters the boot task to make a custom entry. * * PHP version 5 * * @category BootTaskxenialserver * @package FOGProject * @author Tom Elliott <tommygunsster@gmail.com> * @license http://opensource.org/licenses/gpl-3.0 GPLv3 * @link https://fogproject.org */ /** * Alters the boot task to make a custom entry. * * @category BootTaskxenialserver * @package FOGProject * @author Tom Elliott <tommygunsster@gmail.com> * @license http://opensource.org/licenses/gpl-3.0 GPLv3 * @link https://fogproject.org */ class BootTaskxenialserver extends Hook { /** * The name of this hook. * * @var string */ public $name = 'BootTaskxenialserver'; /** * The description of this hook. * * @var string */ public $description = 'Alter the boot task to make a custom task hook'; /** * Is this hook active or not. * * @var bool */ public $active = true; /** * Initializes object. * * @return void */ public function __construct() { parent::__construct(); self::$HookManager ->register( 'IPXE_EDIT', array( $this, 'changeTask' ) ); } /** * Change the task. * * @param mixed $arguments The items to alter. * * @return void */ public function changeTask($arguments) { if (!isset($arguments['ipxe']['task'])) { return; } $TaskType = self::getClass('TaskType') ->set('name', 'xenial-server-install') ->load('name'); if (!$TaskType->isValid()) { return; } $keys = array_keys($arguments['ipxe']['task']); if (!in_array($TaskType->get('id'), $keys)) { return; } $arguments['ipxe']['task'][$TaskType->get('id')] = array( 'set path /OS_IMAGES/ubuntu-16.04-DVD', 'set nfs_path /images/OS_IMAGES/ubuntu-16.04-DVD', 'kernel ${boot-url}${path}/install/netboot/ubuntu' . '-installer/amd64/linux || read void', 'initrd ${boot-url}${path}/install/netboot/ubuntu-installer' . '/amd64/initrd.gz || read void', 'imgargs linux root=/dev/nfs boot=casper live-installer' . '/net-image=${boot-url}${path}/install/filesystem.squashfs ' . 'ks=${boot-url}/OS_IMAGES/kickstarts/xenial_server_ks.cfg ' . 'ip=dhcp splash quiet - || read void', 'boot || read void', ); $arguments['Host'] ->get('task') ->set( 'stateID', self::getCompleteState() )->save(); } }
-
@sebastian-roth also I tried passing the string acpi=off to kernel options. To solve any generic TFTP issues.
-
@csa I haven’t had the time to test the code you posted but it looks fine on first sight.
Not sure what could be wrong here.
Which iPXE binary do you use by the way?
-
'kernel ${boot-url}${path}/images/pxeboot/vmlinuz
Is this impacted by the http / https issue that also impacted the usb booting of FOS? I agree the code looks good and the boot-url variable was the only thing that jumped out at me.
-
@george1421 Good you mention the http/https change we made as I have not had that in mind. AFAIK this should not be causing a “hang issue”.
@csa Maybe posting a picture or video of the hang is a good start. Sometimes there is something we see on the screen that just does not call out to you…
-
@george1421 The same entries were working fine in version 1.3 and 1.4. Version 1.5 introduced this issues.
-
@sebastian-roth please check the attached image.
-
@csa It would be interesting to see what FOG is telling iPXE when this freeze happens. With a browser what output does this command give you? http://10.10.34.98/fog/service/ipxe/boot.php?mac=00:1e:c9:7a:36:48
Post the results here, please. Quite frankly the image shows a normal boot, what we don’t see is the rest of the ipxe commands that are being executed.
-
@csa I’m of the bet this may be similar to the other problems but it’s the ipxe binary being newer than what was in 1.4.
Could you try using the ipxe files from 1.4 and see if the machine starts working again? I really don’t think it’s anything with bootmenu generation.
-
Morning @tom-elliott I pull the git repo and run the install program every time I upgrade. How can I safely role back to " ipxe files from 1.4"?
Thank you
Chakri -
@csa You could just checkout the 1.4.0 tag:
git pull git fetch --all --tags --prune git checkout tags/1.4.0 cp packages/tftp/*.*pxe /tftpboot/ cp packages/tftp/*.efi /tftpboot/ git checkout dev-branch git pull
That should do it, though I will admit I haven’t tested this all out.
-
@tom-elliott The binaries are same size. There is no difference. Looks like they weren’t changed on the new version.
-
@csa said in Fog upgrade to 1.5 broke PXE installation:
The binaries are same size
That’s a first sign but still does not mean that the binaries are the same. Please compare md5sums as well to make sure.
The other thing that comes to my mind… On that picture we see you try booting Ubuntu install kernel. Do you see the very same hang on
init
when booting into a FOG task like deploy or capture??? -
@csa Any news on this?