Fog upgrade to 1.5 broke PXE installation
-
@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?
-
@sebastian-roth There is no difference. It still pauses at the installation.
Version 1.5 binaries
# ls -la /opt/BKUP/tftpboot/*.*pxe -rw-r-xr-x 1 fog root 448 Sep 27 17:58 /opt/BKUP/tftpboot/default.ipxe -rw-r-xr-x 1 fog root 94044 Sep 27 17:58 /opt/BKUP/tftpboot/intel.kkpxe -rw-r-xr-x 1 fog root 94092 Sep 27 17:58 /opt/BKUP/tftpboot/intel.kpxe -rw-r-xr-x 1 fog root 94121 Sep 27 17:58 /opt/BKUP/tftpboot/intel.pxe -rw-r-xr-x 1 fog root 348364 Sep 27 17:58 /opt/BKUP/tftpboot/ipxe.kkpxe -rw-r-xr-x 1 fog root 348412 Sep 27 17:58 /opt/BKUP/tftpboot/ipxe.kpxe -rw-r-xr-x 1 fog root 348459 Sep 27 17:58 /opt/BKUP/tftpboot/ipxe.pxe -rw-r-xr-x 1 fog root 94880 Sep 27 17:58 /opt/BKUP/tftpboot/realtek.kkpxe -rw-r-xr-x 1 fog root 94928 Sep 27 17:58 /opt/BKUP/tftpboot/realtek.kpxe -rw-r-xr-x 1 fog root 94892 Sep 27 17:58 /opt/BKUP/tftpboot/realtek.pxe -rw-r-xr-x 1 fog root 93613 Sep 27 17:58 /opt/BKUP/tftpboot/undionly.kkpxe -rw-r-xr-x 1 fog root 93661 Sep 27 17:58 /opt/BKUP/tftpboot/undionly.kpxe -rw-r-xr-x 1 fog root 93645 Sep 27 17:58 /opt/BKUP/tftpboot/undionly.pxe
Version 1.4 binaries
~# ls -la /tftpboot/*.*pxe -rw-r-xr-x 1 fog root 448 Sep 27 17:58 /tftpboot/default.ipxe -rw-r-xr-x 1 fog root 95716 Oct 18 16:11 /tftpboot/intel.kkpxe -rw-r-xr-x 1 fog root 95764 Oct 18 16:11 /tftpboot/intel.kpxe -rw-r-xr-x 1 fog root 95765 Oct 18 16:11 /tftpboot/intel.pxe -rw-r-xr-x 1 fog root 348865 Oct 18 16:11 /tftpboot/ipxe.kkpxe -rw-r-xr-x 1 fog root 348913 Oct 18 16:11 /tftpboot/ipxe.kpxe -rw-r-xr-x 1 fog root 348777 Oct 18 16:11 /tftpboot/ipxe.pxe -rw-r-xr-x 1 fog root 96536 Oct 18 16:11 /tftpboot/realtek.kkpxe -rw-r-xr-x 1 fog root 96584 Oct 18 16:11 /tftpboot/realtek.kpxe -rw-r-xr-x 1 fog root 96605 Oct 18 16:11 /tftpboot/realtek.pxe -rw-r-xr-x 1 fog root 95290 Oct 18 16:11 /tftpboot/undionly.kkpxe -rw-r-xr-x 1 fog root 95338 Oct 18 16:11 /tftpboot/undionly.kpxe -rw-r-xr-x 1 fog root 95380 Oct 18 16:11 /tftpboot/undionly.pxe
-
@csa What do you mean by “There is no difference”?? Most if not all files differ in size! Why do you think they’re all the same?
As I already said days ago: 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???
-
@sebastian-roth I meant to say the issue is still the same. It gets hung at the same spot. Fog task deploy or capture NO we don’t see any issues but those are images.
Thank you -
@csa So most probably it’s got something to do with the Ubuntu install you are trying to boot. Are you able to download those files using your web browser? http://10.10.34.98/fog/OS_IMAGES/ubuntu-16.04-DVD/install/netboot/ubuntu-installer/amd64/linux and http://10.10.34.98/fog/OS_IMAGES/ubuntu-16.04-DVD/install/netboot/ubuntu-installer/amd64/initrd.gz
Which versions of the binaries did you test? See Tom’s post where he suggested to
checkout tags/1.4.0
and try those. Did you also checkout 1.3.0. Do they all have the hang? -
@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