I just solved another problem in the custom boot-loader. The custom boot-loader used it's own memory detection, and this does work on the production systems since ACPI is not used, and thus corrupting ACPI-tables doesn't matter. On the new Intel Atom based hardware this no longer works, and RDOS refuses to boot.
I solved the issue by using BIOS for the memory map, and let the boot-loader convert it to a GRUB-compatible map (not a big deal). Thus, now both the GRUB boot-method and the custom boot-loader delivers memory information in the same way.
I also discovered that the GRUB boot method marks the pages in the boot-image as free, potentially allowing them to be allocated (and so does the new custom boot-loader). This is solved early in the kernel by modifying the GRUB-compatible memory information. It seems better to do this in the kernel rather than in the boot-loader. The kernel also gets the base and size of the OS image passed to it, so it can do this quite easily.
|