Disconnecting EFI drivers

This is notes that might help with debugging issues possibly caused by EFI drivers

  • Create a disk image with a FAT32 filesystem with UEFI full shell, saved as \EFI\Boot\BootX64.efi
  • And something to test the scenario with, (we will assume ipxe.efi, but change for your scenario) and save it as /ipxe.efi on the disk
  • Boot the troublesome hardware with the just created disk image
  • You should get to a UEFI shell prompt. If you then type fs0: and ls you should see your FAT filesystem with ipxe.efi
  • If not use map to find different fsX: and try them until you find your filesystem.
  • Reproduce the issue by running ipxe.efi

Get in to the shell again

  • use drivers -b and devices -b to see a list of handles complete with some kind of textual description

-b is used to get one screen of text at a time

  • Find something plausible, try running disconnect <handle>
  • where <handle> is the 2- or 3-digit hex value of the handle
  • and then retry running ipxe.efi (from the shell, without rebooting first)

With Hyper-V as an example we might look for something like: “Hyper-V”, “VMBus”, “VmbusDxe”, “NetVSC”, “RNDIS”, etc

And then looking at devices for where this is connected to, and try to disconnect it from there

Alternatives to ''-b'' on long output

  • Most efi shell commands supports -b to get paged output
  • Most of the time the output is also available on any connected serial port.
  • Or pipe output to a file such as drivers > drivers.txt and then use the editor with edit drivers.txt to show it (this requires a writable filesystem)
appnote/efidriverdisconnect.txt · Last modified: 2017/07/27 11:52 by nikize
Recent changes RSS feed CC Attribution-Share Alike 4.0 International Driven by DokuWiki
All uses of this content must include an attribution to the iPXE project and the URL https://ipxe.org
References to "iPXE" may not be altered or removed.