Greetings!

We are trying to implement an .efi application that receives an ISO file from an Android device, loads it into a buffer and try to boot an Operating System. To do this, we tested some implementations using Ram Disk but after creating the virtual disk and running BOOTX64.efi and found on the FAT32 partition, but some problems occur after boot, as if I did not find the other files in the ISO. To solve this problem, we tried some approaches:

  1. Change the parameters when calling RamDiskProtocol->Register() function (GUID and DevicePath)
  2. Tried with different OS (Xubuntu, Windows 10, Windows 7, Ubuntu and OpenSuse)
  3. Compared with HttpBoot implementation from EDK2, where we saw that an ISO file could be loaded into memory to boot an OS, but the RamDisk implementation in HttpBootRegisterRamDisk was very similar to ours
Based on this, I have some questions:

  1. In our understanding, HttpBoot downloads the ISO and boots the OS using the RamDisk. Is that correct?
  2. We saw that RamDiskDxe has some dependencies from ACPI tables, since it uses NFIT (NVDIMM Firmware Interface Table) to save some persistent information. Is there some hardware/driver requirement to make the OS boot through RamDisk? Did we need to have this NVDIMM to support ACPI feature from RamDiskDxe?
  3. Would you have any other suggestions for solving this scenario?

Best regards!
Nahim.