Ok, promising update:
I disabled "GRUB" in the config file, hoping that would ignore the menu.lst, which it did, and it then gave me a boot prompt, and most amazing of all, it doesn't lock up when I type at it :-D
So, step two is figure out how to get it to boot something.
It may even be that I've just embedded the menu.lst file incorrectly - how does everyone else embed theirs? It worries me that half the contents of the menu.lst file along with some garbage is dumped over the serial port before the debug messages start appearing.
I tried embedding a Linux kernel in the same manner as the menu.lst, but I got a warning that I was overwriting stack space in the ELF file, so that may explain the problem I was having before. However I now tried to get the kernel image to load at 0x400000, and readelf shows that everything is what I expect it to be, however FILO says it doesn't recognise the image at that offset (when I do it as ELF or a straight bzImage.)
So now I'm stuck again, but it looks like it's my method of embedding files into the ELF image that's the problem - can someone point me in the right direction here? Google's not being too helpful for me with this.
Thanks, Adam.
collect_sys_info: boot eax = 0x100000 collect_sys_info: boot ebx = 0x800 collect_sys_info: boot arg = 0x4254 collect_linuxbios_info: Searching for LinuxBIOS tables... Can't get memory map from firmware. Using hardcoded default. malloc_diag: alloc: 0 bytes (0 blocks), free: 16376 bytes (1 blocks) malloc_diag: alloc: 40 bytes (1 blocks), free: 16336 bytes (1 blocks) collect_sys_info: 0000000000000000-00000000000a0000 collect_sys_info: 0000000000100000-0000000001000000 collect_sys_info: RAM 16 MB relocate: Current location: 0x100040-0x280ea7 relocate: Relocating to 0xe7f190-0xfffff7... ok setup_timers: CPU 134 MHz pci_init: Scanning PCI: found 7 devices malloc_diag: alloc: 136 bytes (2 blocks), free: 16240 bytes (1 blocks) pci_init: 00:00.0 8086:7100 0600 00 pci_init: 00:06.0 8086:1229 0200 00 pci_init: 00:07.0 8086:7110 0601 00 pci_init: 00:07.1 8086:7111 0101 80 pci_init: 00:07.2 8086:7112 0c03 00 pci_init: 00:07.3 8086:7113 0680 00 pci_init: 00:08.0 5333:8904 0300 00 Press <Enter> for default boot, or <Esc> for boot prompt... timed out boot: mem@0x400000 malloc_diag: alloc: 160 bytes (3 blocks), free: 16216 bytes (1 blocks) malloc_diag: alloc: 184 bytes (4 blocks), free: 16192 bytes (1 blocks) file_open: dev=mem@0x400000, path=<NULL> parse_device_name: offset=0x400000 length=0x0 devopen: after offset: start 8192, length 8380416 malloc_diag: alloc: 160 bytes (3 blocks), free: 16216 bytes (1 blocks) elf_load: Not a bootable ELF image malloc_diag: alloc: 184 bytes (4 blocks), free: 16192 bytes (1 blocks) file_open: dev=mem@0x400000, path=<NULL> devopen: already open malloc_diag: alloc: 160 bytes (3 blocks), free: 16216 bytes (1 blocks) load_linux_header: Not a Linux kernel image Unsupported image format malloc_diag: alloc: 136 bytes (2 blocks), free: 16240 bytes (1 blocks) boot: mem@0x400000,0x200000 malloc_diag: alloc: 168 bytes (3 blocks), free: 16208 bytes (1 blocks) malloc_diag: alloc: 200 bytes (4 blocks), free: 16176 bytes (1 blocks) file_open: dev=mem@0x400000,0x200000, path=<NULL> parse_device_name: offset=0x400000 length=0x200000 devopen: after offset: start 8192, length 8380416 devopen: after length: length 4096 malloc_diag: alloc: 168 bytes (3 blocks), free: 16208 bytes (1 blocks) elf_load: Not a bootable ELF image malloc_diag: alloc: 200 bytes (4 blocks), free: 16176 bytes (1 blocks) file_open: dev=mem@0x400000,0x200000, path=<NULL> devopen: already open malloc_diag: alloc: 168 bytes (3 blocks), free: 16208 bytes (1 blocks) load_linux_header: Not a Linux kernel image Unsupported image format malloc_diag: alloc: 136 bytes (2 blocks), free: 16240 bytes (1 blocks) boot: