Chainloading iPXE fails on Broadcom NICs
Just a heads up, for everybody who has recent HP Hardware (like the ProLiant BL465c Gen8 servers) or anything else using broadcom chips (also called netxtreme) and tries to use the bootdisk plugin.
iPXE will hang with the message "Try to free Memory without Signature".
According to https://github.com/puppetlabs/Razor/issues/41 (referenced from http://lists.ipxe.org/pipermail/ipxe-devel/2012-February/001232.html) this is triggered by chainloading iPXE through pxelinux/syslinux/isolinux.
According to my tests, that is still the case with the newest syslinux (6.02) and the current ipxe HEAD.
I've tried to create a workaround using a self-built undionly.lkrn instead of ipxe.lkrn, which indeed booted further, but still failed to detect the NIC in the end. I assume that's because isolinux is not a real PXE, which would provide the UNDI.
I guess a way out would be to skip ipxe and directly burn the installer kernel image and initrd into the bootiso. This would reduce the flexiblity (many updates would require re-creating the ISO), but - iff it works - would make installation on a wide range of H/W possible.
fixes #7046 - add per-host "full" image containing OS bootloader, without iPXE
#1 Updated by David Schmitt over 5 years ago
Update: I've successfully booted this cursed H/W by creating the following bootimage by hand:
[david@builder ~]$ find bootiso_tester_SL6.5_2014-08-13/ bootiso_tester_SL6.5_2014-08-13/isolinux.bin bootiso_tester_SL6.5_2014-08-13/initrd bootiso_tester_SL6.5_2014-08-13/kernel bootiso_tester_SL6.5_2014-08-13/isolinux.cfg [david@builder ~]$ cat bootiso_tester_SL6.5_2014-08-13/isolinux.cfg default linux label linux kernel /kernel initrd /initrd append initrd=/initrd ks=http://builder.example.com:80/unattended/provision?token=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee ksdevice=00:11:22:33:44:55 network kssendmac ip=10.0.0.100 netmask=255.255.255.0 gateway=10.0.0.1 dns=10.0.0.1 [david@builder ~]$ genisoimage -o bootiso_tester_SL6.5_2014-08-13.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table bootiso_tester_SL6.5_2014-08-13/ I: -input-charset not specified, using utf-8 (detected in locale settings) Size of boot image is 4 sectors -> No emulation 26.29% done, estimate finish Wed Aug 13 09:46:15 2014 52.46% done, estimate finish Wed Aug 13 09:46:15 2014 78.72% done, estimate finish Wed Aug 13 09:46:15 2014 Total translation table size: 2048 Total rockridge attributes bytes: 0 Total directory bytes: 292 Path table size(bytes): 10 Max brk space used 0 19072 extents written (37 MB) [david@builder ~]$
'kernel' and 'initrd' are the respective files from the Installation Media.
The isolinux.cfg is modeled after the Kickstart PXELinux template. This specific host has the static network info here, due to local circumstances.
I do understand that this image is much less flexible than the current implementation, but on the other hand, it actually boots.
#4 Updated by Dominic Cleal about 5 years ago
Would you mind checking if naming the initrd and vmlinuz something more complicated, and building the image with Joliet extensions works? e.g. boot/CentOS-6.5-x86_64-initrd.img and then add
-J to genisoimage.
It'd save me trying to change the names that the template would usually refer to.