3 ms·
I've found ASUS UEFI can hold onto useless boot entries through thick & thin sometimes. Booting to the UEFI shell, Shellx64.efi, will automatically map the dri
by fuzzfactor 2y ago
I've found ASUS UEFI can hold onto useless boot entries through thick & thin sometimes.
Booting to the UEFI shell, Shellx64.efi, will automatically map the drives and bring you to the Shell command line.
Lots of motherboards did not actually have Shellx64.efi built-in, in that case you would see a boot option in the firmware to boot to UEFI shell found on a boot device (an internal or external drive).
Plus some of the built-in Shellx64.efi don't actually include the BCFG command, so you might need to use an external boot device containing a more complete Shellx64.efi anyway.
At the shell command line, bcfg boot dump -b is what you enter to list the boot entries, starting with entry 00.
bcfg boot rm 04 would then be the shell command to remove entry 04, for instance.
You don't need Windows or Linux for this since you're booting to the UEFI shell to access the firmware directly.
This doesn't do anything to the boot entries in the EFI folder itself, which on Windows will likely have an entry in its BCD for every one it has been exposed to, and they can come right back into the firmware unless you also delete them from the BCD.
Remember, a properly crafted EFI folder will ideally boot as expected when there are not any boot entries in the firmware at all. Then the ideal firmware will autoinclude the entries found on the disk and you might not even need an EFI folder after that. But things are not usually ideal. Not every OS gets this right the first time, and it can change for the better or worse after a while.
Alternatively, if you are on Windows, at the admin command prompt, BCDEDIT /enum All, will display all entries, with the firmware ones towards the top. Then you can simultaneously delete an unwanted entry from both the EFI folder and the firmware with Bcdedit /delete {target-guid-here}, or in in powershell Bcdedit /delete "{target-guid-here}", since powershell is still having trouble with the curly braces.