BladeSystem Management Software

Support Pack for Proliant Firmware Update over PXE

 
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)