BladeSystem Management Software

Support Pack for Proliant Firmware Update over PXE

 
Peter Capriccio
Frequent Advisor

Re: Support Pack for Proliant Firmware Update over PXE

FYI -- if you haven't seen it already, the HP Service Pack for ProLiant 2012.10.0 release is out -- they've fixed a lot of stuff, but the NFS options problem that Gerardo Arceri discovered in the updated initrd of the previous release still remains.

 

Since I was modifying the initrd anyways, I opted to update "sbin/mount_url.sh" (line 305) instead of passing the options on the command line:

 

# diff sbin/mount_url.sh{,.original}
305c305
<         mntoptions="nolock,rsize=32768,wsize=32768,timeo=600,hard,intr,proto=tcp"
---
>         mntoptions="nolock,rsize=32768,wsize=32768,timeo=600,hard,intr,mountproto=tcp"

 BTW, this release is really nice -- they now include ACU and Insight Diagnostics so you can do a lot of stuff in one boot. Also, saving an Insight Diagnostics Survey to USB works great (couldn't get this to work on PXE-booted, recent SmartStart releases to save my life).

 

Pete C.

 

 

 

Peter Capriccio
Frequent Advisor

Re: Support Pack for Proliant Firmware Update over PXE

In case anyone is interested, here is my stab at bypassing the Language Selection and EULA acceptance screen in SPP 2012.10.0.

 

As in the previous couple of releases, I modified the "/opt/hp/hp-phoenix/srv/www/langsel.htm" file in the squashfs, although this new version is very different. Basically, I added the "acceptEula();" and "Launch();" function calls to the "InitializePage()" function and then deleted the language selection and EULA divs, plus the "Next" button on the footer, but kept the "Reboot" button -- there is a new widget on the top bar to reboot or shutdown, but that requires two clicks (am I lazy or what?). Here's the diff:

 

# diff langsel.htm.wbu ../langsel.htm.original
32a33
>     disableAccept();
34,35d34
<     acceptEula();
<     Launch();
140a140
>       HideObject("eulareboot");
250a251,264
>       <div id="langselect" style="position:absolute; top:220px; left:80px;"><span id="SELECTPREFLANGUAGE" style="color:#353535; font-size:large; font-weight:bolder;">Select the preferred language</span>
>       <input type="checkbox" id="leng" value="en-US" name="leng" checked="checked" onchange="onChangeLanguage(this.id);" style="position:absolute; top:50px; left:20px;"/>
>       <label for="leng" style="position:absolute; top:50px;left:30px; width:80px;"><span id="ENGLISHLANG">English</span></label>
>       <input type="checkbox" id="ljap" value="ja-JP" name="ljap" onchange="onChangeLanguage(this.id);" style="position:absolute; top:50px; left:140px;"/>
>       <label for="ljap" style="position:absolute; top:50px;left:150px; width:80px;"><span id="JAPANESELANG">Japanese</span></label>
>       </div>
>
>       <div id="eulaaccept" style="position:absolute; top:350px; left:80px;">
>               <span id="ACCEPTEULA" style="color:#353535; font-size: large; font-weight:bolder;">Accept the End User License Agreement (EULA)</span>
>               <button id="eularead" class="standardbutton" onclick="ReadSPPEula();" style="position:absolute; top:50px; width:80px; left:20px;"><span id="EULAREAD">Read</span></button>
>               <input type="checkbox" id="eulaYes" name="eulaYes" onchange="acceptEula();" style="position:absolute; top:60px; left:140px;"/>
>               <label for="eulaYes" style="position:absolute; top:58px;left:145px; width:80px;"><span id="ACCEPT">Accept</span></label>
>       </div>
>
252a267
>       <button id="eulanext" class="standardbutton" onclick="Launch();" style="position:absolute; bottom:10px; width:80px; left:850px;"><span id="NEXT">Next</span></button>

I'm a total n00b when it comes to HTML stuff, so there is probably a better way, but it seems to work okay.

 

To implement the change, again instead of unpacking/repacking the squashfs, I instead modified the "init" file in the initrd to copy the modified version (that I called "langsel.htm.wbu") from the root of the initrd (or wherever you want to store it) into the squashfs after it is unpacked. Here are my changes to the "init" file:

 

# diff init{,.original}
45,50d44
< # "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
<
< # replace the langsel.htm file in the squash to remove language selection and EULA
< cp /langsel.htm.wbu "${CHROOT_DIR}"/opt/hp/hp-phoenix/srv/www/langsel.htm
<

The modified files are attached.

 

*NOTE* that the forum software won't accept filenames with no extensions (or my stupid ones), so I added a ".txt" to each one...

 

Pete C.

 

 

dhermans
Advisor

Re: Support Pack for Proliant Firmware Update over PXE

Hi Peter,

 

Can confirm that PXE booting 2012.10 works without modifying the initrd..

 

the post earlier specifying the NFS options on the command line does the trick, eg:

 

label hpsum 2012.10
  MENU LABEL HP SPP 2012.10
  kernel pxelinux.cfg/vmlinuz.SPP2012.10
  append initrd=pxelinux.cfg/initrd.img.SUM2012.10 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=AUTOMATIC AUTOREBOOTONSUCCESS=yes AUTOPOWEROFFONSUCCESS=no iso1=nfs://[nfs ip]/[nfs path to ISO] iso1opts=nolock,rsize=32768,wsize=32768,timeo=600,hard,intr,proto=udp,vers=3,ro iso1mnt=/mnt/bootdevice
  ipappend 2

So really simple now,

mount the ISO, copy 2 files, clone the pxelinux.cfg entry and away...

 

Cheers

 

Peter Capriccio
Frequent Advisor

Re: Support Pack for Proliant Firmware Update over PXE

Thanks for confirming the unmodified initrd -- that is good to know. I ended up modifying the initrd to make a couple of changes for our environment (like bypassing the language selection/EULA -- at my age, I can't afford to expend the energy for any extra mouse clicks or keyboard shortcuts :). One question though -- does "ipappend 2" work with the unmodified initrd?

Michael Leu
Honored Contributor

Re: Support Pack for Proliant Firmware Update over PXE

Please note: for NFS you can't just clone the pxelinux.cfg, there needs to be a iso1opts provided because the default does not work (as discovered by Gerardo_Arceri).

 

If you are unsure use "iso1opts=nolock,rsize=32768,wsize=32768,timeo=600,hard,intr". This is the same as the default without the erroneous "mountproto=tcp". Busybox uses tcp by default anyway [1].

 

 

dennyaaa
Frequent Visitor

Re: Support Pack for Proliant Firmware Update over PXE

Hello again.

 

I have downloaded the latest SPP and now I get the following error: 

 

err: eth0: Failed to lookup hostname via DNS: Name or service not known.

Warning! Unable to mount the filesystem

 

I seriously have no idea why this is happening but it sure is annoying. Still useing the good ol' USB pen for updates.

 

When I move the .iso to my root folder and point the append line towards it, I still get the;

Warning! Unable to mount the file system.

 

 

Peter Capriccio
Frequent Advisor

Re: Support Pack for Proliant Firmware Update over PXE

AFAIK, the "err: eth0: Failed to lookup hostname via DNS: Name or service not known." is not an issue, at least in my configuration since we're not running DNS on our PXE LAN and I see that error message all the time.

 

As far as the "Warning! Unable to mount the filesystem" error, are you using NFS to mount the ISO? If so, did you add the NFS options fix to the boot string that Gerardo Arceri discovered? Also, as others have mentioned, you might want to try temporarily adding "d3bug" to the boot string to get a better idea as to where it is failing.

sascha08_3
Frequent Visitor

Re: Support Pack for Proliant Firmware Update over PXE

Looks like HP fixed some Problems.

But again there some new bugs.


PXE boot from SMB Share is not working with SPP2012.10.

An error appears that /lib/modules/3.0.13-0.27-default/kernel/crypto/md5.ko : No such File or Directory

 

First i think something with username/password is wrong again, which I discovered before (see post page before).

But it hang on other point. I inserted again a output line for username and password.

Username and password were ok. Insterting debug line was a good idea but got no other error.

Very nice to see whats going on.

 

So looks like these kernel modules are required for smb mount.

First I think only this one file is missing.

But at the end I figured out that 4 files were missing in /lib/modules/3.0.13-0.27-default/kernel/crypto/

des_generic.ko

ecb.ko

md4.ko

md5.ko

 

So as it is described here some posts before you can edit the initrd.img and put the missing files in.

Then the pxe boot with smb share should work again ;-)

 

You can found the the missing files in the correct kernel rpm

http://demeter.uni-regensburg.de/SLES11SP2-x64/DVD1/suse/x86_64/kernel-default-3.0.13-0.27.1.x86_64.rpm

 

By the way i figured out,that in the past it looks like hpsum does a force update.

Means regardless you already have the newest version or a newer version (for example because of an adivsory) it updates the host with firmware from the dvd again.


Anybody knows were to disable this force of updates ?

Is there a command line for hpsum which can be changed so that force update is off ?

 

Thanks

Regards


Sascha

 

dennyaaa
Frequent Visitor

Re: Support Pack for Proliant Firmware Update over PXE

No NFS, we are useing SMB even though the PDF from HP states that we have to use smbfs in order to make it work, which clearly is a fault, since smbfs haven't worked since forever.

 

I have tried alot of the solutions posted here, but are still stuck at the same errors. 

forgeelbow
Occasional Visitor

Re: Support Pack for Proliant Firmware Update over PXE

I was having problems trying to get the SPP iso to mount over nfs. Here is my PXE menu entry that worked:

 

Please notice the /path/to parts and change them to fit your environment.

 

label Smart_Update_Manager_1210
MENU LABEL ^Smart Update Manager SPP2012.10
  kernel \path\to\vmlinuz
  append initrd=\path\to\initrd.img media=net rw root=/dev/ram0 ramdisk_size= init=/bin/init loglevel=3 ide=nodma ide=noraid nopat pnpbios=off vga=791 splash=silent hp_fibre showopts noexec32=off numa=off nox2apic iso1mnt=/mnt/bootdevice iso1=nfs://path/to/HP_Service_Pack_for_Proliant_2012.10.0-0_713293-001_spp_2012.10.0-SPP2012100.2012_1005.37.iso iso1opts="rsize=32768,ro,nolock" TYPE=MANUAL AUTOPOWEROFFONSUCCESS=no

 

As long as the paths are updated, this will mount the SPP iso over nfs and boot into manual mode. If you want automatic mode for automaded firmware updates, you would change the last 2 entries to these 3:

TYPE=AUTOMATIC AUTOPOWEROFFONSUCCESS=no AUTOREBOOTONSUCCESS=yes