A Madman's thoughts on upgrading a Gen 8 NUC to ESXi 7.0
In a previous post, I talked about my encounter with trying to get ESXi 6.7 installed on a NUC Gen 10. This time, I wanted to upgrade the 'ole homelab to ESXi 7.0 since VMUG Advantage made it available last week.
Note: I'd already upgraded my vCenter Server to 7.0 last week.
I for sure thought I was gonna have issues with the Gen 10 NUC, as I did with 6.7. But I went into the Lifecycle Manager (Formerly Update Manager) and uploaded the stock ESXi 7.0 ISO and created a baseline with it. I then went to my Gen 10 NUC and migrated everything off of it, put into maintenance mode and I attached that update baseline to it. 5 minutes later we're up and running on ESXi 7.0.
Neat! Looks like they wrapped in some support for the new NUCs! Awesome! Onto my Gen 8. I transfer the VMs back onto the Gen 10, get the Gen 8 into maintenance mode, attach the baseline and I click remediate. It starts going and then it bombs with the following error:
Well now, this is fun. Ok, so we need a driver? But the driver worked in the Gen 10? Alright whatever. I wonder if the driver from 6.7 would work? I built an image with that driver, and it works! The caveat - which I haven't found an answer to yet - is that could not use the "Image Builder" in vCenter, as I get the following error when trying to clone:
And then when I try to browse to the image profile I get the following:
A bit of googling didn't get me far, and I didn't have a lot of time to spend on this today. I remembered that there was another way to build this image, and that was using VMware PowerCLI. This is an awesome tool if you haven't used it yet. Here's the steps I took to build my image in PowerCLI:
PS> install-module -name VMware.PowerCLI
And thats it! Just wait for it to download all the dependencies. Once that's done here's what you need to do to build your own ESXi Image:
Import the ESXi 7.0 offline bundle
PS C:\Users\matt> Add-EsxSoftwareDepot "D:\Users\user\Downloads\VMware-ESXi-7.0.0-15843807-depot.zip"
Import the NIC driver for the NE1000
PS C:\Users\matt> Add-EsxSoftwareDepot "D:\Users\user\Downloads\ESXi670-NE1000-32543355-offline_bundle-15486963.zip"
Creating a custom image profile
Great! At this point we have both the image we want to use to build, and the custom driver we want to add. Now we have to create a new image profile so we can merge the two. In this example we will use the "stock" ESXi 7.0 as our base and will clone it to our image profile.
First we need to get the name of the "stock" ESXi image profile:
PS C:\Users\matt> Get-EsxImageProfile | ft Name
And once we have the image profile we want to clone, we create ours and clone the base image profile to it.
PS C:\Users\matt> New-EsxImageProfile -CloneProfile "ESXi-7.0.0-15843807-standard" -Name "UV ESXi 7.0" -vendor "Vendor Name"
Now that we have an image profile we need to add the driver to it. Because we're using a different version, we need to find the version we imported. We do this by issuing
PS C:\Users\matt> Get-EsxSoftwarePackage
and your results should look similar to this:
I happen to know that this is our software package name and version. A few indicators help show that, ne1000 is the Intel e1000 driver, and the version is x.x.x-3vmw.670.x.xetc the 670 is direct reference to ESXi 6.7.0. Take note of the actual version before importing, as we'll need this next.
Adding the driver :
PS C:\Users\matt> Add-EsxSoftwarePackage -ImageProfile "UV ESXi 7.0" -SoftwarePackage "ne1000 0.8.4-3vmw.6220.127.116.11543355"
It's important to note the -SoftwarePackage argument here, as if you did not specify the version, it will choose the lates version of the driver, and in this case will error out stating that the latest version is already part of the image profile.
Now you want to make sure you set the acceptance level to "Community Supported" this is so you don't get an error when you go to export the image to an ISO.
PS C:\Users\matt> Set-EsxImageProfile -AcceptanceLevel CommunitySupported
Exporting to ISO
Now that we have an image profile with the correct driver, we need to export it to ISO so we can import into vCenter Lifecycle Manager.
PS C:\Users\matt> Export-EsxImageProfile -ImageProfile "UV ESXi 7.0" -FilePath .\uv-esxi-7.0.iso -ExportToIso -Force
Once that's done. You can import to vCenter > Lifecycle Manager under Imported ISOs. Once I did that, I attached to a baseline and it upgraded my Gen 8 NUC with no issues!
You can download a pre-made iso here. Be advised, this comes with no warranty, and was originated outside of VMware, so be mindful of 3rd party ESXi images.
Thanks for reading, I hope this was helpful!