As far as i386 goes: ISTR someone booting NetBSD with Uruk. I think Lilo just groks ELF headers, reads the block addresses out of the ext2fs and writes a vector of block addreseses for its second-stage bootstrap, so ELF kernels on ext2fs systems with LILO should work (or be made to work easily enough) too.