BladeSystem - General
1823982 Members
3800 Online
109667 Solutions
New Discussion

Re: Support Pack for Proliant Firmware Update over PXE

 
Gerardo_Arceri
Advisor

Support Pack for Proliant Firmware Update over PXE

Anyone knows if the SPP iso image can be booted over PXE just like the old Firmware DVD?

 

78 REPLIES 78
Gerardo_Arceri
Advisor

Re: Support Pack for Proliant Firmware Update over PXE

The following PXE boot menu entry did the trick

 

label vsos
  MENU LABEL Interactive Firmware Update Version 2011.09
  kernel vmlinuz.FW11
  append initrd=initrd.img.FW11 media=cdrom rw root=/dev/ram0 ramdisk_size=257144 init=/bin/init loglevel=3 ide=nodma ide=noraid pnpbios=off vga=791 splash=silent showopts TYPE=MANUAL iso1=nfs://kickstart.nfs/osbuild/extra/install_packages/hp_firmware/SPP2011090.2011_0930.13.iso iso1mnt=/mnt/bootdevice pci=bfsort
  ipappend 2

 

We had to patch the initrd.img to allow the DVD to be booted from interfacees other than eth0.

Let me know if you are interested in the patch.

chuckk281
Trusted Contributor

Re: Support Pack for Proliant Firmware Update over PXE

Yes it can.

Voodoo66
New Member

Re: Support Pack for Proliant Firmware Update over PXE

Hi, I am interested in this patch. I am trying to set up PXE boot for firmware deployments. It would be nice if you can post it here.

 

Thankx and happy new year.

Peter Waller_1
Senior Member

Re: Support Pack for Proliant Firmware Update over PXE

Hello, I'm very interested in this patch.

 

I'm going to integrate the service pack into our boot menu, but it does not work. Can you give me this patch?

 

Thank You and regards from Switzerland

Michael Pye
Occasional Advisor

Re: Support Pack for Proliant Firmware Update over PXE

The main Support Pack for Proliant page states "Simplified delivery of HP ProLiant systems software and firmware into PXE bootable ISO images to reduce customer Qualification cycles Resource usage Maintenance windows Downtime".

 

No where that I can find is it detailed about how you pxeboot SPP. The release notes state:

ftp://ftp.hp.com/pub/softlib2/software1/doc/p1822529277/v72723/SPP2011.09.0ReleaseNotes.pdf

there are only 2 methods to depoly, mount and boot iso image  offline, or mout iso and run SUM online.

 

If it is pxe bootable it's not offcially documnted like the 9.30 fw dvd was.

 

 

Chris-Smith
New Member

Re: Support Pack for Proliant Firmware Update over PXE

Any chance I can get a copy of the modified initrd.img also :)

 

sreitemeyer
New Member

Re: Support Pack for Proliant Firmware Update over PXE

Hi,

 

we have the same problem. The service pack is only using eth0.

 

It would be nice if you can send us the patch.

shocko
Honored Contributor

Re: Support Pack for Propellant Firmware Update over PXE

I have the same issue. I can't find documentation for the PXE boot params. This is so infuriating.

If my post was helpful please award me Kudos! or Points :)
odenbach
Occasional Advisor

Re: Support Pack for Propellant Firmware Update over PXE

 

Hi,

 

we had the same problem with SPP just using eth0 and had a deep dive into the SPP ISO. Let me explain the details:

 

There is already a function that loops over every network adapter and tries to get an address via DHCP. The problem is that if the dhcpcd client does not get an address via DHCP it makes a fallback to APIPA, so it gets an address like 169.254.x.x and then returns OK. The looping function then thinks that DHCP worked and skips the other interfaces.

 

The simple trick is now to disable APIPA in dhcpcd. This is done with the '-L' switch.

 

So just do the following:

 

- Extract the original initrd:

# mkdir /tmp/initrd

# cd /tmp/initrd

# gunzip -c /tftp/hp/initrd.img | cpio -i

 

- Extract the root filesystem:

# mkdir rootfs

# cd rootfs

# busybox unlzma -c ../fs.tar.lzma | tar xvf -

 

- Apply the small patch (the -L switch to dhcpcd) to root/compaq/netconfig.sh:

 

root@kitty[compaq]# diff -c netconfig.sh /tmp/initrd/root/compaq/netconfig.sh
*** netconfig.sh    Fri Mar  2 08:36:47 2012
--- /tmp/initrd/root/compaq/netconfig.sh    Fri Apr 27 17:06:29 2012
***************
*** 40,46 ****
          fi
          if [ $PROTOCOL == "dhcp" ]; then
                  echo Attempting to configure $1 using DHCP
!                 dhcpcd -t 45 $1
                  TEMP=$?
                  echo return from dhcpcd $TEMP
                  if [ $TEMP != 0 ]; then
--- 40,46 ----
          fi
          if [ $PROTOCOL == "dhcp" ]; then
                  echo Attempting to configure $1 using DHCP
!                 dhcpcd -L -t 45 $1
                  TEMP=$?
                  echo return from dhcpcd $TEMP
                  if [ $TEMP != 0 ]; then

 

(if you like you can decrease the timeout of 45 seconds to a lower value to make the boot process faster)

 

- repack the rootfs and remove the unpacked data:

# tar cf - . | lzma -c > ../fs.tar.lzma

# cd ..

# rm -rf rootfs

 

- repack the initrd:

# find . | cpio --create --'format=newc'  | gzip > /tftp/hp/initrd.img

 

 

So this helps servers boot from _any_ network device that has DHCP configured.

 

Christopher

 

 

 

 

shocko
Honored Contributor

Re: Support Pack for Propellant Firmware Update over PXE

Excellent work oedenbach! very useful info.

If my post was helpful please award me Kudos! or Points :)
Michael Leu
Honored Contributor

Re: Support Pack for Proliant Firmware Update over PXE

Excellent post odenbach, thanks!

 

It seems with the newest SPP 2012.06.0(B) they switched a lot around inside the initrd. So here is a updated version of patching netconfig.sh with the new location.

It includes another small change for booting with a be2net (BL460c G7) and bnx2 (DL385 G2) based network card.

 

ISO=<replace with full path to the SPP.iso>
INITRD=<replace with full path for the new initrd>

# unpack
mkdir /tmp/spp /tmp/initrd-spp
mount -o loop $ISO /tmp/spp
cd /tmp/initrd-spp && gzip -cd /tmp/spp/system/initrd.img | cpio -id
# disable APIPA in dhcpcd (by odenbach)
sed -i 's/dhcpcd -t 45 $1/dhcpcd -L -t 45 $1/' sbin/netconfig.sh
# add be2net and bnx2 drivers
sed -i 's/NET_MODULES="e100 e1000 igb qlcnic tg3 bnx2x"/NET_MODULES="e100 e1000 igb qlcnic tg3 bnx2x be2net bnx2"/' etc/initrd.functions
# fix lazy greps
sed -i 's/grep $mod/grep ^${mod}$/' etc/initrd.functions
# repack and cleanup
find . | cpio --quiet -o -H newc | gzip -9 > $INITRD
cd - && rm -Rf /tmp/initrd-spp
umount /tmp/spp && rmdir /tmp/spp

  

Additionally the PXE boot menu entry also needs to be changed from

  media=cdrom

to

  media=net

So a complete entry might look something like this:

label spp
  kernel vmlinuz-spp
  append initrd=initrd.img-spp media=net rw root=/dev/ram0 ramdisk_size=815744 init=/bin/init loglevel=3 ide=nodma ide=noraid nopat pnpbios=off vga=791 splash=silent hp_fibre showopts noexec32=off numa=off nox2apic TYPE=AUTOMATIC iso1=nfs://[IP]/[PATH]/SPP2012060B.2012_0525.1.iso iso1mnt=/mnt/bootdevice

 

By the way, adding the parameter "d3bug" in combination with "console=ttyS0,115200" and the iLO VSP lets you see some debugging infomation :)

 

Hope this helps...

Peter Capriccio
Frequent Advisor

Re: Support Pack for Proliant Firmware Update over PXE

Just wondering if anyone is seeing this, or is it just me...

 

I've switched to using the "Madis" method (not mounting the ISO, but unpacking the contents and NFS serving out the directory -- this way, you can easily add updates) and for this release I've run into a problem where it doesn't create the link from "/mnt/bootdevice" to "/mnt/cdrom" -- from the "supermount_isos" function in "etc/initrd.functions":

 

.
.
+ mkdir -p /mnt/bootdevice + mount_url.sh --dir /mnt/bootdevice nfs://192.168.1.254/SPP-2012.06.0B/ + [ /mnt/bootdevice == /mnt/bootdevice ] + rm -f /mnt/boot + rm -f /mnt/cdrom + ln -s BusyBox v1.14.1 (2012-04-04 02:06:19 UTC) multi-call binary Usage: ln [OPTION] TARGET... LINK_NAME|DIRECTORY Create a link named LINK_NAME or DIRECTORY to the specified TARGET. Use '--' to indicate that all following arguments are non-options. Options: -s Make symlinks instead of hardlinks -f Remove existing destination files -n Don't dereference symlinks - treat like normal file -b Make a backup of the target (if exists) before link operation -S suf Use suffix instead of ~ when making backup files + ln -s /mnt/cdrom ln: cdrom/cdrom: File exists + eval iso=$iso2 + iso= + eval isoopts=$iso2opts + isoopts= + eval isomnt=$iso2mnt + isomnt= + [ -n ] + break
.
.

The side effect of this is that when the browser starts up, you can progress through the language selection and EULA, but when you click on "Launch HPSUM", it just dumps you back to the reboot screen in the browser. I can launch hpsum from a debug window (Ctrl+Alt+d+b+x), but this doesn't go over too well with the point-and-click crowd :)...

 

My workaround was to edit the "langsel.htm" file (after the squashfs is loaded) and replace the "/mnt/cdrom" references with "/mnt/bootdevice" in the "runLin" function instead of trying to fix the link after the squashfs replaces the initrd. This did the trick for me, but in the end I wound up replacing the entire "langsel.htm" to bypass the language selection and EULA. I added the following changes to the "init" script:

 

.
.
#Mount the squash filesystem
mount_fs

# "fix" xorg.conf (change "*Depth" from 24 back to 16 for older systems)
sed -i '/Depth/s/24/16/g' "${CHROOT_DIR}"/etc/X11/xorg.default-us

# "fix" references to "/mnt/cdrom" and remove EULA, etc, in the langsel.htm file in the squash
# sed -i 's|/mnt/cdrom|/mnt/bootdevice|g' "${CHROOT_DIR}"/opt/hp/hp-phoenix/srv/www/langsel.htm
cp /langsel.htm.wbu "${CHROOT_DIR}"/opt/hp/hp-phoenix/srv/www/langsel.htm
.
.

 

 

 

 

Christian Otto Stelter
Occasional Advisor

Re: Support Pack for Proliant Firmware Update over PXE


@Peter Capriccio wrote:

Just wondering if anyone is seeing this, or is it just me...

/me too.  At least the full automatic mode runs without problems after patching netconfig.sh - Thx to Michael Leu!

Gerardo_Arceri
Advisor

Re: Support Pack for Proliant Firmware Update over PXE

I've made a zip with the patches on netconfig.sh and initrd.functions along with simple instructions.

 

On initrd.functions, the missing /mnt/cdrom is caused by a typo on line 386:

rm -f /mnt/cdrom >/dev/null 2>&1

 

 

You can't remove directories with rm (Hello QA TEAM ?????????), the solution is to:

rm -rf /mnt/cdrom >/dev/null 2>&1

 

 

I've also added the extra be2net and bnx modules, otherwise this will not work on G5s or G7+ blades.

 

 

on netconfig.sh the patch revolves around using the "ipappend 2"  feature of pxelinux, which will append a BOOTIF=XX:XX:XX:XX:XX:XX parameter with the boot interface mac address, that can be later looked up with ifconfig before configuring the interface, take a look at netconfig.sh.patch for more info

This patch has been made by a coworker and adapted to work on the new SPP, we have been patching all FW/SPP DVD releases for quite a long time..

 

next and last, this is how my pxemenu entry looks like

 

label vsos1206
  MENU LABEL Interactive Firmware Update Version 2012.06
    kernel vmlinuz.SPP2012.06
    append initrd=initrd.img.SPP2012.06 media=net rw root=/dev/ram0 ramdisk_size=900000 init=/bin/init loglevel=3 ide=nodma ide=noraid nopat pnpbios=off vga=
791 splash=silent hp_fibre showopts noexec32=off numa=off nox2apic TYPE=MANUAL iso1=nfs://[your nfs ip goes here]/SPP2012.06.iso iso1mnt=/mnt/bootdevice
    ipappend 2

 

 

dcolpitts
Frequent Advisor

Re: Support Pack for Proliant Firmware Update over PXE

So I've utilized Gerado's patch he posted, but I keep getting permission denied when mounting my iso image via SMB.  This is happening on a ProLiant BL460c G7.

 

Any thoughts?  The username and password are correct.  It appears to be some sort of permissions issue in /mnt folder.

 

Does anyone know the exact mount command that is used with BusyBox?  My command line includes:

 

iso1mnt=/mnt/bootdevice iso1=smb://myuserid:mypassword@10.131.200.13/hpssfw/SPP2012060B.2012_0525.1.iso

 

So it might help in my troubleshooting if I could manually mount the iso using mount and mount_url.sh.

 

dcc

dcolpitts
Frequent Advisor

Re: Support Pack for Proliant Firmware Update over PXE

The issue I'm experiencing appears to be related to using the smb or cifs protocols.  If I setup a NFS server, the iso image gets mount successfully.  When I check the event log on my Windows server that the smb share is pointing at, I have no workgroup/domain listed, and username associated with the failed login event always has a : (colon) behind it.

 

dcc

Gerardo_Arceri
Advisor

Re: Support Pack for Proliant Firmware Update over PXE

I extracted mount_url.sh from /sbin inside the initrd.

Tried to manually run with sh -x passing a fake url smb://user:pass@127.0.0.1/someshare/some.iso or cifs://user:password@127.0.0.1/someshare/file.iso and the script seems to be correctly parsing the URL, the mount command as executed by the script is:
+ mount -t cifs -o username=user,password=password //127.0.0.1/share /mnt/127.0.0.1/share


dcolpitts
Frequent Advisor

Re: Support Pack for Proliant Firmware Update over PXE

I haven't had time to try this yet, but I'm wondering if perhaps I used the iso1options setting if that would help... So something like this:

 

iso1mnt=/mnt/bootdevice iso1=smb://10.131.200.13/hpssfw/SPP2012060B.2012_0525.1.iso iso1options="username=myuserid,workgroup=domain,password=mypassword"

 

dcc

Gerardo_Arceri
Advisor

Re: Support Pack for Proliant Firmware Update over PXE

I updated the patches attached to the previous post.

 

Changelog:

-on initrd.functions the bnx2 driver was not being loaded

-Also on initrd.functions there was a bug on a grep line that prevented the same driver from loading (lsmod |cut -d' ' -f1 | grep $mod), this line choked if both bnx2 and bnx2x drivers were on the module load list , line replaced with (lsmod |cut -d' ' -f1 | grep ${mod}\$) to  fix the problem.

 

As a consequence of these two bugs it was impossible to PXE boot if your servers used bnx2 interfaces to boot (like on bl680c g5)

 

vuster
Occasional Visitor

Re: Support Pack for Proliant Firmware Update over PXE

Great work. Thanks to smart guys like you it makes us dumb guys look good.

shocko
Honored Contributor

Re: Support Pack for Proliant Firmware Update over PXE

Thank you to Gerardo_Arceri,

 

I was able to get it booting using your config line. I was missing the following params:
  • pci=bfsort
  • iappend=2

I wish HP would document this! Their documentation points to PXE booting the FW CD v 9.10 for some reason.

If my post was helpful please award me Kudos! or Points :)
Peter Capriccio
Frequent Advisor

Re: Support Pack for Proliant Firmware Update over PXE

Gerardo,

 

Thanks for the patches and for the ipappend idea -- nice!

 

One thing, however, is that I think that the module list in your "initrd.functions.patch" file has a typo:

 

  NET_MODULES="e100 e1000 e100e igb qlcnic bnx2x be2net bnx2 tg3"

 

Shouldn't that be "e1000e"?

 

Pete C.

sascha08
New Member

Re: Support Pack for Proliant Firmware Update over PXE

Thanks for the great Support here, i was able get it to work with nfs and cifs.

This post helped a lot.

 

But we use windows server as pxe/dhcp so it better to use cifs.

 

So i tried around with the mount_url.sh in /sbin to solve the problem with colon in username.

You can follow the instructions from the patch to unpack and repack the initrd.img with a correct mount_url.sh.

 

To solve the the bug with username string change in line 80 of mount_url.sh code to:

USER=${user_n_pass:0:$(($colonindex - 1))}

 

After that i still got an error and next guess was password line is wrong too.

I added a output line to the mount scirpt and found out that the first charackter was missing and at the end of the password was @ sign ;-(. 

 

To solve the bug in password string change line 82 of mount_url.sh code to:

PASSWORD=${user_n_pass:$(($colonindex)):$(($atindex- $(($colonindex+1))))}

 

Maybe someone who is good in scripting can add this fix to the patch here.

I'm a beginner in shell scripting ;-).

 

Thanks for posting the patch here and to all the other comments.

 

Sascha

 

 

Gerardo_Arceri
Advisor

Re: Support Pack for Proliant Firmware Update over PXE

You're right, thanks for noticing this.
I updated the zip file with this fix.