Skip to content

Troubleshooting

assafcarlsbad edited this page Dec 20, 2020 · 1 revision

Q: How can I know if the script for generating the emulated NVRAM environment succeeded?
A: Use python -m pickle [dict], where [dict] is the output file of prepare_nvram.py. If execution was successful, you should see a bunch of variables with their respective values.

Q: The script for generating the emulated NVRAM (prepare_nvram.py) keeps generating an empty dictionary. What can I do?
A: Under the hood, prepare_nvram.py uses the uefi-firmware-parser library to parse the UEFI firmware image and extract the values of the various NVRAM variables. Unfortunately, at the moment uefi-firmware-parser doesn't support certain formats of the NVRAM variable store such as VSS, VSS2, etc. To workaround this problem, try the following:

  1. Check out the type of the variable store in your firmware image. This can be done simply by opening your firmware image in UEFITool.
  2. If the type of the variable store is not supported by uefi-firmware-parser, try to generate the emulated NVRAM environment by executing scripts/prepare_nvram2.py instead of scripts/prepare_nvram.py. Internally, prepare_nvram2.py uses an embedded copy of UEFIExtract to do all the heavy-lifting of parsing the volume and extracting individual files, so it might succeed where uefi-firmware-parser failed.
Clone this wiki locally