on 12-16-2014 06:41 PM - edited on 07-09-2021 09:03 AM by Greg Wilkinson
****UPDATE July 2021
The HUU images launched with our C-Series M6 Rack Servers are now compatible with the following USB creator toolsets:
Tool name |
Tool link |
Supported on Windows |
Supported on Linux |
Supported on Mac |
UEFI mode |
UEFI secure mode |
Legacy |
Rufus |
Yes |
No |
No |
Yes |
Yes |
Yes |
|
Balena Etcher |
Yes |
Yes |
Yes |
Yes |
Yes |
No |
*Keep in mind that is for M6 only and SW release 4.2(1) or later.
A new version of the script is posted below (v3). This version adds additional support for UEFI boot on UCS Rack Servers.
About the Cisco Standalone C-Series Host Update Utility USB Image Utility:
This utility is designed to assist users who want to update firmware on their standalone C-Series server from a USB drive. Specific, this utility will write the HUU ISO image to a bootable USB stick. This USB stick can be used to update firmware on a standalone C-Series server either by changing the boot order or manually selecting the USB device in the <F6> boot menu.
Requirements:
- HUU USB Image Utility
- Linux Server (Tested with RHEL 6.4 and CENTOS 6.4)
- The following package must be installed: syslinux-4.02-8.el6.x86_64 (or later)
- Standalone C-Series HUU Image (to be written)
Note: You may need to unmount the drive to properly execute the script. (umount <dev>)
Tool usage:
sh create_util_usb_v2.sh <UCSB Device> <file.iso>
OR
sh create_util_usb_v2.sh /dev/sdb ucs-c240-huu-2.0.3.16.iso
------------------------------------------------------------------------------------
Expected Output: (Note: This is expected output form the tool)
# ./create_util_usb_v2.sh /dev/sdb ucs-c240-huu-2.0.3d-1.iso
syslinux-nonlinux-4.04-3.el6.noarch
syslinux-4.04-3.el6.x86_64
/dev/loop0
ucs-c240-huu-2.0.3d-1.iso
/dev/loop0
## Creating partitions... Please wait (Will take a few minutes)
10+0 records in
10+0 records out
40960 bytes (41 kB) copied, 0.00440779 s, 9.3 MB/s
Zeroing of USB done.....
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x4e25a2d2.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): Command action
e extended
p primary partition (1-4)
Partition number (1-4): First cylinder (1-15272, default 1): Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-15272, default 15272):
Command (m for help): The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): Partition number (1-4):
Command (m for help): The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
## Formating the partitions
mkdosfs 3.0.9 (31 Jan 2010)
0+1 records in
0+1 records out
440 bytes (440 B) copied, 0.00460309 s, 95.6 kB/s
/dev/loop0
`/tmp/HUU/C240M3-2.0.3d.zip' -> `/tmp/usb2.4196/./C240M3-2.0.3d.zip'
`/tmp/HUU/EFI' -> `/tmp/usb2.4196/./EFI'
`/tmp/HUU/EFI/BOOT' -> `/tmp/usb2.4196/./EFI/BOOT'
`/tmp/HUU/EFI/BOOT/BOOTX64.conf' -> `/tmp/usb2.4196/./EFI/BOOT/BOOTX64.conf'
`/tmp/HUU/EFI/BOOT/BOOTX64.efi' -> `/tmp/usb2.4196/./EFI/BOOT/BOOTX64.efi'
`/tmp/HUU/EFI/BOOT/grub.conf' -> `/tmp/usb2.4196/./EFI/BOOT/grub.conf'
`/tmp/HUU/EFI/BOOT/initrd0.img' -> `/tmp/usb2.4196/./EFI/BOOT/initrd0.img'
`/tmp/HUU/EFI/BOOT/isolinux.bin' -> `/tmp/usb2.4196/./EFI/BOOT/isolinux.bin'
`/tmp/HUU/EFI/BOOT/isolinux.cfg' -> `/tmp/usb2.4196/./EFI/BOOT/isolinux.cfg'
`/tmp/HUU/EFI/BOOT/splash.jpg' -> `/tmp/usb2.4196/./EFI/BOOT/splash.jpg'
`/tmp/HUU/EFI/BOOT/splash.xpm.gz' -> `/tmp/usb2.4196/./EFI/BOOT/splash.xpm.gz'
`/tmp/HUU/EFI/BOOT/vesamenu.c32' -> `/tmp/usb2.4196/./EFI/BOOT/vesamenu.c32'
`/tmp/HUU/EFI/BOOT/vmlinuz0' -> `/tmp/usb2.4196/./EFI/BOOT/vmlinuz0'
`/tmp/HUU/firmware.squashfs' -> `/tmp/usb2.4196/./firmware.squashfs'
`/tmp/HUU/isolinux' -> `/tmp/usb2.4196/./isolinux'
`/tmp/HUU/isolinux/boot.cat' -> `/tmp/usb2.4196/./isolinux/boot.cat'
`/tmp/HUU/isolinux/efiboot.img' -> `/tmp/usb2.4196/./isolinux/efiboot.img'
`/tmp/HUU/isolinux/initrd0.img' -> `/tmp/usb2.4196/./isolinux/initrd0.img'
`/tmp/HUU/isolinux/isolinux.bin' -> `/tmp/usb2.4196/./isolinux/isolinux.bin'
`/tmp/HUU/isolinux/isolinux.cfg' -> `/tmp/usb2.4196/./isolinux/isolinux.cfg'
`/tmp/HUU/isolinux/splash.jpg' -> `/tmp/usb2.4196/./isolinux/splash.jpg'
`/tmp/HUU/isolinux/vesamenu.c32' -> `/tmp/usb2.4196/./isolinux/vesamenu.c32'
`/tmp/HUU/isolinux/vmlinuz0' -> `/tmp/usb2.4196/./isolinux/vmlinuz0'
`/tmp/HUU/LiveOS' -> `/tmp/usb2.4196/./LiveOS'
`/tmp/HUU/LiveOS/osmin.img' -> `/tmp/usb2.4196/./LiveOS/osmin.img'
`/tmp/HUU/LiveOS/squashfs.img' -> `/tmp/usb2.4196/./LiveOS/squashfs.img'
`/tmp/HUU/Release-Notes-SL2.txt' -> `/tmp/usb2.4196/./Release-Notes-SL2.txt'
`/tmp/HUU/squashfs_img.md5' -> `/tmp/usb2.4196/./squashfs_img.md5'
`/tmp/HUU/TOC_SANLUIS2.xml' -> `/tmp/usb2.4196/./TOC_SANLUIS2.xml'
`/tmp/HUU/tools.squashfs' -> `/tmp/usb2.4196/./tools.squashfs'
`/tmp/HUU/VIC_FIRMWARE' -> `/tmp/usb2.4196/./VIC_FIRMWARE'
`/tmp/HUU/VIC_FIRMWARE/cruzboot.bin' -> `/tmp/usb2.4196/./VIC_FIRMWARE/cruzboot.bin'
`/tmp/HUU/VIC_FIRMWARE/cruzfw.bin' -> `/tmp/usb2.4196/./VIC_FIRMWARE/cruzfw.bin'
`/tmp/HUU/VIC_FIRMWARE/paloboot.bin' -> `/tmp/usb2.4196/./VIC_FIRMWARE/paloboot.bin'
`/tmp/HUU/VIC_FIRMWARE/palofw.bin' -> `/tmp/usb2.4196/./VIC_FIRMWARE/palofw.bin'
`/tmp/HUU/VIC_FIRMWARE/serenoboot.bin' -> `/tmp/usb2.4196/./VIC_FIRMWARE/serenoboot.bin'
`/tmp/HUU/VIC_FIRMWARE/serenofw.bin' -> `/tmp/usb2.4196/./VIC_FIRMWARE/serenofw.bin'
Disk /dev/sdb: 16.0 GB, 16013852672 bytes
64 heads, 32 sectors/track, 15272 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x4e25a2d2
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 1025 1049584 83 Linux
#
I just did the CIMC upgrade on a AireOS 5520 Wireless LAN Controller (based on UCS C220 M4) using the above script. Thank you very much for it, it worked like a charm.
You can read my step by step guide on my blog: https://www.show-run.ch/uncategorized/5520-aireos-cimc-update/
OK, this takes care of M6's what about C240 M4's Orphan'd with flash based cimc?
The v3 script can be used for creating a bootable HUU USB to use when upgrading an M4 server. The reference to M6 servers above is that beginning with M6, users can use more traditional tools to create the bootable HUU USB.
Ah, so.. good to know. I just burned the iso's to DVD so I will try the 'normal' method next
Thank you.
I used CentOS minimal and the script in the first post to create a bootable USB drive for a C220M4. Tested, and it worked.
I used linux to take a bitwise/ DD image of the drive to an image file.
I sent that image file to a customer with no linux experience, and he used Etcher (simple, GUI windows imaging tool) and a spare USB drive he had --- he was able to write the image file to his USB drive and get his M4 booted and upgraded to current firmware.
@Paul Chapmanthe rufus fixed worked for me. Thank you.
@Cedric Metzger
Holy crap! I just read your blog post... I'm headed for my Scotch cabinet!
It's like Cisco went out of their way to make firmware updates overly complicated!
Why make every single customer create their own bootable ISO image?
Why not simply create one and publish it as an ISO firmware release?
I have an M4 that needs updated as well.
Call me silly but why wouldn't Cisco simply build a bootable ISO that can be burned to CDROM and plugged into a portable USB CDRW that can be used as a boot device.. and have that do the firmware updates???
It seems I've been fortunate to have never used Cisco servers in the past 40+ years of my IT career.
All I wanted to do was update the firmware before putting this C220M4 into service... who would have thought I needed a separate degree in Cisco firmware updates and iso building to do it.
The upgrade process for UCS is very easy - the bootable USB is really only designed for scenarios where IMC connectivity cannot be established or is corrupted in some way. Servers are typically upgraded using vMedia, the APT / Redfish or other Cisco provided integrations. It sounded like your server had issues with IMC connectivity.
@Greg Wilkinson My server does have CIMC issues.
It lets me log in and then shows a white screen (in firefox and MS Edge) and then displays a small warning popup box that "the server is not responding".
Updating via a bootable ISO is not complicated.
Having to build the ISO manually using outdated Centos or Ubunto builds is, imho, overly complex and complicated.
Why should I have to find an empty server .. so i can install Centos 6 .. or Ubuntu 10.3 .. just to build a bootable iso?
I don't want to start cross posting regarding my particular issue, but in general, you already publish something that 'appears to be' an ISO with all of the firmware... why wouldn't Cisco just publish that as a bootable ISO that runs the update software on boot?
As I've send in the other thread, I'm new to Cisco... but so are others that i've seen in these threads and they also seem to feel it is overly complicated.
I've been in IT for 40+ years.. there isn't much I can't do or can't figure out.... but why build it complicated when KISS is a much better option for all concerned.
Imagine how many fewer questions you'd have about 'how do i update firmware' .. if you pointed them to a downloadable ISO.. that had a simple sentence of instructions: download this iso - burn it to a bootable cd and boot it.
Yes, you'd still have questions from some who say 'how do i burn a cd' or 'what is a cd'... but i suspect there would be far less of those than you've been dealing with.
Anyway, i'm an outsider looking in. I see things with a simple (fresh?) eye.
*now, i'm back to the other thread to see the updates*
Thanks .. -john
@john thank you very much for your reply. It's so nice to have somebody feeling the same pain. As a recent graduate of "Cisco firmware updates and iso building" let me tell you - just don't try it and grab a different server. Fun fact, Cisco delivers your RMA WLC or FMC with the same old CIMC versions
@Greg Wilkinson That's absolutely what I thought before trying to upgrade a 2.0 CIMC version from a UCS C220 M4. You can read the whole story here: https://www.show-run.ch/uncategorized/5520-aireos-cimc-update/
@Greg Wilkinsonconsider that i've been trying to figure out 'how' to update firmware for 2 days now...
The process will probably only take about 3 minutes once I figure out how.
It shouldn't take 2+ days to figure out how to run an automated process that takes 3 minutes to run!
It's not like I'm investing 2 days to save 1 hour per day for the rest of my life.
The odds are that I'll never need to update this firmware again in my life time.
-just sayin.
@Cedric Metzger
I just obtained this C220M4 from an off-lease user.
It was/is loaded with firmware 3.0(3f) ... and given the age of that firmware the previous user clearly didn't see any need to update the firmware (or couldn't figure out how).
I figured that it would make sense to rev it up to the latest firmware before deploying it in my basement with vmware to run my NS, surveillance system, samba server and vpn router systems.
Given that this is 2023, even considering that the model C220 is circa 2014, I figured there would be a simple downloadable ISO image that would be all ready to 'burn and boot'... silly me I guess.
And yes, I sympathize with your pain.
Cisco has gone to a lot of trouble to keep updating firmware... it seems odd that they'd make it so difficult that users would prefer to not upgrade than endure the pain.
Personally I disagree with the concept of integrating the firmware upgrade into the CIMC for exactly the reason I'm having problems... if the CIMC isn't functional and needs to be updated... you're screwed.
Building a one-size fits all - bootable ISO that has the install software/scripts and "just runs" seems a far simpler solution for both the developer and the user. But again, that's just me.. i like KISS.
If we aren't updating firmware every day.. then why spend all the R&D money and effort to build functionality into a CIMC that updates firmware when you still have to provide an alternate method if the CIMC isn't working.
Heck, they could even just offer the script and program to run the updates.. and tell you to boot a centos emergency shell and then execute the update program.
*shrug*
The CentOS script works, but it is a bit of a pain.
FYI - i use one of these:
It handles the UCS M4 C-series image update ISO files properly - just drop the ISO on the storage device, pick the iso from the menu, and it boots. I've done lots of M4 servers using this method (and M3, M5 as well)
I posted 2 alternate solutions in this thread; one for Windows and one for Debian/Ubuntu.
I posted the Ubuntu solution to git so that you can just clone it.
@Paul Chapman
Thanks.
I downloaded RUFUS and used it to create a bootable linux thumb drive using the ISO i downloaded:
ucs-c220m4-huu-4.1.2g.iso
It appeared to load.. it booted linux.. and then crashed unable to find files.
I'm going to assume that your first step:
1. Create bootable USB with Rufus (leave drive in system when complete)
is not as simple as - use rufus to burn the huu.iso to a thumb drive.
Which still leaves us beginners to sort through 4 pages of posts to determine which steps were mistakes and which were necessary to "create a bootable usb"
**EDIT**
Ok, this final error was on my end. I changed the ID string but forgot to change CDLABEL to UUID.
Oddly, that mistake behaves differently between 2f and 2g.
However, with that typo resolved, it appears to be updating firmware on 4.1.2g
NOTE: I still think this was far more complicated than it needed to be. Clearly, from the comments, I'm not the only one who was confused and knocked down by the requirements. Yes, once you know how - it is easy. Once you know what rufus is.. rather than just clicking on the ISO and allowing windows to 'burn the cd' only to find out it isn't bootable... Once you know that you have to edit the identifier for UUID=XXXX .. it's simple.
But getting to where it was SIMPLE was (unnecessarily) PAINFUL.
Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: