Multiple Windows Boot Manager using UEFI
-
Brand, model and version of the device in question?
Check for BIOS updates (funny how we don’t yet call them UEFI updates, even on manufacturer websites)
-
@quazz Dell Optiplex 9020, 7050, 7440, 7450, and all BIOS on those models are up to date.
-
@flareimp Can you share your Setup.cmd script? You may have to add some logic to it to delete these duplicate entries before setting order etc.
I think what you are seeing is pretty common, not even a Windows only issue really. In my testing I have entries in boot selection for Windows, Fedora and CentOS even though they arent installed (and would fail if selected to boot). I typically go and clean them out manually but if together we find a way to do it via Setup.cmd then I may add the logic to my own process.
-
@zer0cool Here is my Setup.cmd file
cls set mydir=%~dp0 Echo ************** Echo !!!Set Time!!! Echo ************** Regedit /s "C:\Windows\Setup\TimeZoneSet.reg" "C:\Program Files (x86)\Dell\Command Configure\X86_64\cctk.exe" bootorder --bootlisttype=uefi --sequence=uefi.1,uefi.2,hdd.1 "C:\Program Files (x86)\Dell\CommandUpdate\dcu-cli.exe" /silent DEL "C:\Users\Public\Desktop\Dell Command Configure Wizard.lnk" /Q Echo * Echo ********************************** Echo !!!Uninstall Fog Legacy Service!!! Echo ********************************** Echo * MsiExec.exe /x {91C5D423-B6AB-4EAB-8F17-2BB3AE162CA1} /qn RD /Q /S "C:\Program Files (x86)\Fog" DEL /Q "C:\fog.log" DEL /Q /S "C:\Users\Default\Downloads\*" RD /Q /S "C:\Users\Default\Downloads\FogPrep" RD /Q /S "C:\Users\Default\Downloads\FogService" Echo * Echo *********************** Echo !!!Checking Location!!! Echo *********************** ipconfig | find /i "10.20." > NUL IF %ERRORLEVEL% == 0 SET FogServer=10.20.9.50 ipconfig | find /i "10.21." > NUL IF %ERRORLEVEL% == 0 SET FogServer=10.21.9.50 ipconfig | find /i "10.22." > NUL IF %ERRORLEVEL% == 0 SET FogServer=10.22.9.50 ipconfig | find /i "10.23." > NUL IF %ERRORLEVEL% == 0 SET FogServer=10.23.9.50 ipconfig | find /i "10.25." > NUL IF %ERRORLEVEL% == 0 SET FogServer=10.25.9.50 ipconfig | find /i "10.28." > NUL IF %ERRORLEVEL% == 0 SET FogServer=10.28.9.50 ipconfig | find /i "10.29." > NUL IF %ERRORLEVEL% == 0 SET FogServer=10.29.9.50 Echo * Echo * Echo *********************************** Echo !!!Installing Fog Client Service!!! Echo *********************************** msiexec /i C:\Windows\Setup\Scripts\FOGService.msi /quiet USETRAY="0" HTTPS="0" WEBADDRESS="%FogServer%" WEBROOT="/fog" ROOTLOG="0" /l*v "C:\PerfLogs\fog-install.log" Net start FogService sc config FOGService start= auto rem shutdown /t 0 /r :Complete
-
@flareimp Ok so it looks like you are actually using a Dell utility (cctk) to set boot order. From some quick Googling and not really knowing the tool 2 things stand out to me:
- Dell seems to potentially have replaced cctk with Dell Command and Configure (DCC), as noted here. May be worth seeing if moving to this tool works better for your needs.
- I was not able to find a complete listing of cctk commands. I think it was -h was to list all of its options on the command line. I would look to see if there is any option to remove specific boot entries or to clear the boot entries to a default setting, then set to your desired order.
When you say:
@flareimp said in Multiple Windows Boot Manager using UEFI:
but with multiple entries it screws up because of the false entries.
What do you mean specifically. Is there an error message, does it do something unexpected, do nothing, etc?
-
@zer0cool I am using Dell Command Configure, Dell just has the exe file labeled as CCTK.exe. There is not really an error message that pops up but the utility can not set the boot order once the “Windows Boot Manager” has more than two duplicate entries because the uefi.x gets out of order and it selects the wrong device. If I can’t get the boot order set than it will require our techs to visit the machine to PXE boot it because it will have the OS set as the first boot device. Plus, you can only have so many WBM entries so I have read.
-
@flareimp Ok gotcha, hate when companies keep the old exe name
So do you know of any in depth documentation for the available commands for DCC? Maybe it has a command available to clear out the entries prior to setting them.
To be clear, as I understand it, these entries are what you would see in the “selecting boot device” from the BIOS boot options right, not remaining partitions that you do need? In other words its just the entries that remain in the BIOS boot devices and not partitions on disk for those bot entries that remain.
If DCC doesnt have a command/switch to do this, I wonder if there is another option (a batch file or script) you could run in Setup.cmd prior to cctk.exe that would effectively clear out the invalid entries.
In some quick google searching maybe something like (I have not tested any of these):
https://gallery.technet.microsoft.com/scriptcenter/Clear-Windows-Boot-Manager-7020323d
https://social.technet.microsoft.com/Forums/en-US/63773659-fc98-4b91-8081-1def38af4f9d/multiple-entries-of-quotwindows-boot-managerquot-in-uefi-on-surface-pro-3?forum=mdt (has a couple scripts listed)The last one has this entry:
How to delete a boot entry At the command prompt, type: bcdedit /delete ID [/f] ...
So maybe it can be done using bcdedit from a batch file or something if PowerShell isnt an option like in most of the scripts the other links provide.
If you find a solution I would be interested to know what it is. Hope this helps.
-
Just to be clear, if you were to use fog to deploy an image 3 times to a target computer, you would have 3 Microsoft Boot Managers listed in the uefi firmware?
-
@george1421 That is correct.
-
@flareimp I found the documentation for DCC. It looks like you can disable devices but I do not see an option to delete them.
So I think your best bet is using a script based solution like in the links I gave before, either leveraging PowerShell or bcdedit, or attempting to disable the duplicates via DCC. However without DCC having the ability to delete them, you could end up with trouble later when you have a crazy number of those extra entries just disabled.
-
You were correct, using DCC is not an option. I did find that by using the CMD prompt and entering
bcdedit.exe /enum
it will display your working Windows Boot Manager but not the extras. However, if you use
bcdedit.exe /enum firmware
it will display all the different WBMs, even the faulty ones.
I am currently trying to build a script that will remove the false entries.