uefi.py
        ofrak.core.uefi
    
        
Uefi            (FilesystemRoot, Pe)
        
  
      dataclass
  
    Filesystem extracted from a UEFI binary.
        
UefiUnpacker            (Unpacker)
        
    Unpack a UEFI binary. This current method cannot repack after modification because UEFITool cannot support it.
unpack(self, resource, config=None)
  
      async
  
    Unpack the given resource.
Users should not call this method directly; rather, they should run Resource.run or Resource.unpack.
Parameters:
| Name | Type | Description | Default | 
|---|---|---|---|
resource | 
        Resource | 
        The resource that is being unpacked  | 
        required | 
config | 
        Optional config for unpacking. If an implementation provides a default, this default will always be used when config would otherwise be None. Note that a copy of the default config will be passed, so the default config values cannot be modified persistently by a component run.  | 
        None | 
      
Source code in ofrak/core/uefi.py
          async def unpack(self, resource: Resource, config=None):
    ROM_FILE = "uefi.rom"
    with tempfile.TemporaryDirectory() as temp_flush_dir:
        # uefiextract always outputs to the CWD, so we must run this command from the temp dir to not leave behind artifacts
        os.chdir(temp_flush_dir)
        await resource.flush_data_to_disk(ROM_FILE)
        cmd = [
            "uefiextract",
            ROM_FILE,
        ]
        proc = await asyncio.create_subprocess_exec(
            *cmd,
        )
        returncode = await proc.wait()
        if proc.returncode:
            raise CalledProcessError(returncode=returncode, cmd=cmd)
        uefi_view = await resource.view_as(Uefi)
        await uefi_view.initialize_from_disk(os.path.join(temp_flush_dir, f"{ROM_FILE}.dump"))