What
This post illustrates listing and extracting the firmware contents within Cisco’s HUU or Host Upgrade Utility ISO, compressed with unsquashfs.
I’ve tested this on the following:
- Cisco UCS-C Series M5 and M7.
- Cisco HUU version
huu-4.2.3
and later (essentailly any HUU compressed with SquashFS should be fine). - AlmaLinux
9.3
. - UnsquashFS version
4.4-git.1 (2020/10/30)
.
Why
We had a problematic UCS server with a Cisco bug that reported spare disks as unhealthy and faulty. Rebooting the entire server to boot the HUU ISO wasn’t an option at the time, hence the requirement to update the CIMC firmware without rebooting the hypervisor itself.
I’m aware that Cisco did include a ZIP archive containing the firmware at some point. However, these days, Cisco has abandoned ZIP for HUU firmware and now uses SquashFS.
After some Googling, I found that most posts were quite archaic in specifying users to use getfw
(which, when I checked, is no longer included for Cisco’s later UCS server HUU versions). They also specified ancient versions of CentOS and OpenSSL.
This post shows you how to use the UnsquashFS toolset with a recently released AlmaLinux version without resorting to the archaic stuff mentioned previously.
Prerequisites
Please observe the following to prevent tantrums:
- Have a VM with
AlmaLinux 9.3
(or greater but your YMMV). I’ve used the ARM64 Architecture on VMware Fusion 13.5, but these need not matter to you. - Have your HUU ISO downloaded.
- I used VMware Shared Folder to provide access between my Host OS and my Guest OS (you could just as well use something like SCP).
Extract with Unsquash
Create a directory for mounting the ISO.
sudo mkdir /mnt/huu
Mount the HUU ISO to the directory.
sudo mount -o loop /<path_of_the_huu_iso> /mnt/huu
Verify the ISO is mounted with
mount
command. You should see the ISO mounted to the directory created earlier.mount
CD to the mounted directory, list the contents and grep for
cimc.bin
.cd /mnt/huu unsquashfs -ls ucs-c240m5-huu-container-4.2.3e.squashfs | grep cimc.bin
Grep returns the complete path to the CIMC binary file.
Extract the CIMC firmware to your home directory (I couldn’t manage to extract directly to the VM shared folder).
sudo unsquashfs -d ~/c240m5_firmware_cimc /mnt/huu/ucs-c240m5-huu-container-4.2.3e.squashfs /firmware/cimc/
You should see similar results as seen below:
Finally, let’s copy the
bios.bin
file to our VMware shared folder (or wherever you plan to offload the file from your guest OS).cp ~/c240m5_firmware_cimc/firmware/cimc/cimc.bin ~/vm-shares/Virtual\ Machines\ Shared\ Folder/
Upgrade CIMC Firmware
Info
While you can safely upgrade CIMC firmware without impacting your hypervisor and its workloads - as I’ve done numerous times - do use caution, raise your change, and do the upgrade OOH in case the worst happens 😉.
- Login to CIMC.
- Go to Admin > Firmware Management.
- Check the BMC component > click Update > Browse for the
cimc.bin
file extracted earlier with the unsquashfs > click Install Firmware. - Give several minutes for CIMC to install.
- Once you’re ready to activate the newly installed firmware, select the BMC component > click Activate > choose the version you want to activate and click Activate firmware.
- The firmware image version you’ve selected will be made the running version. CIMC will reboot to make these necessary changes (note this does not reboot the hypervisor).
- Once CIMC has rebooted, you are done.
- Voila!
Resources
- My good friend Matt Thompson.
- Moi.