2 Replies Latest reply on May 17, 2014 4:54 AM by dwmw2

    Getting Galileo to boot non-UEFI systems


      I'm trying to boot a non-UEFI RTOS (http://epos.lisha.ufsc.br) on Galileo, but it looks like the default UEFI implementation (EDK-II/UDK?) does not feature a BIOS compatibility mode. Is there any workaround to boot a system like MS-DOS on Galileo?


      If negative, then which would be the best option:

      - Replacing the UEFI with a BIOS such as SeaBIOS (SeaBIOS - coreboot)? How?

      - Partition the SD card so it contains an UEFI boot partition with a simple .efi file that does something like the chainloader +1 in non-UEFI GRUB and other "raw" partition with the OS? What would that EFI something look like?

      - Pretend EPOS is a PCI ROM stored on the SD card, load it with loadpcirom -nc and then "jump" into it? How would the jump be implemented?


      If these are all bad ideas, has anyone got to run a deeply embedded OS on Galileo? eCos?

        • 1. Re: Getting Galileo to boot non-UEFI systems

          Hi Guto

          I’m not sure I’m going to do some research on this matter, and I’ll let you if I find something useful on this matter.


          • 2. Re: Getting Galileo to boot non-UEFI systems

            I have FreeDOS running on Galileo using SeaBIOS as a CSM (Compatibility Support Module).


            It's still a work in progress. The SeaBIOS patches are at http://git.infradead.org/users/dwmw2/seabios.git and my patches to the Quark UEFI at http://git.infradead.org/users/dwmw2/quark-edk2.git


            However, the latter tree is missing an important patch which adds the code to handle "legacy" boot options and add them to the menu. That's Intel-internal code which needs to go through the bureaucracy of being approved for release. There's no reason why it can't be; it doesn't touch on any secret hardware registers or anything like that. It's just a matter of going through the process.


            It also depends on having an actual video card — I've got a mini-PCI one. It might be possible to use Google's sgabios (https://code.google.com/p/sgabios/) to provide "emulation" of text mode INT 10h calls with output on the serial port, but that's a non-trivial piece of work. It'd need to be ported to use the Quark UART, and the Quark UART can't be accessed from 16-bit mode as it's usually at a high MMIO address. (I haven't actually looked at whether it can be moved to below 1MiB).


            I'm working on cleaning up the above trees so that I can publish something that's fully working. Feel free to mail me (dwmw2@infradead.org) to ask about it. I really haven't looked at how to handle the "missing" piece of code at all yet; it might be that I can give out a binary .efi file for that part, in the short term.


            If releasing the missing parts of the UEFI code really does turn out to be problematic (although there's no good reason why it should be), then one option is to ditch UEFI completely and just spawn SeaBIOS "natively" instead of in CSM mode. I don't know if anyone's actually got coreboot working on Quark yet...?