Open osresearch opened 4 years ago
Some more details :)
When a system has no internal GPU and the external GPU's option ROM can't be verified, that's a deadlock.
Using the clear CMOS jumper (in this case it was JBAT1
) on my board (MSI B450M-A PRO MAX) did not help. I also removed the CMOS battery and waited, but this also did not work.
Before adding custom keys and enabling SecureBoot, I verified that JBAT1
would reset the BIOS.
I contacted MSI and they said SecureBoot with custom keys would block GOP and I should use a CPU with an integrated GPU/APU to recover, but I could not test this yet.
Update: MSI replied and they said I have to use Microsofts db certs. Seems like I would have to do this
You can extract the GOP from the VBIOS of your GPU, sign it with your key, and reflash your card. No need of Microsoft keys after that.
@abouvier , could you contribute a short "howto"?
Sorry, I did this two years ago (with an AMD Radeon RX Vega 56
card) and I didn't remember exactly all the steps. But you need:
sbsigntools
to sign this image file with your keyEDK II Build Tools Project
to reconstruct/recompress the signed image file into a valid GOPGOPupd
actually contains all the tools required to do this, and also updated GOP files for many GPU cards.
The discussion over at https://github.com/Foxboron/sbctl/issues/85#issuecomment-886539689 led to the observation that we can add the hashes of the option roms to the db
variable and in https://github.com/Foxboron/sbctl/issues/85#issuecomment-886621029 we figured out that the eventlog includes the authenticode hashes that need to be signed. This means that we could have a way to scan the eventlog for EV_EFI_BOOT_SERVICES_DRIVER
entries and prompt the user to sign them if necessary.
Some systems need option ROMs to boot up; there should be a way to sign these additional keys as part of setting up safeboot.