zlacker

[parent] [thread] 3 comments
1. st_gol+(OP)[view] [source] 2026-02-03 17:14:02
Have you tested this on an actual 486?

Sadly, it does not seem to boot on my 486 DX2, I even stuffed 32M of RAM into the machine (8*4M, maximum the mainboard supports), more than the recommended 20M.

I have copied the floppy image from the site. It churns for about a minute and a half, loading kernel and initrd, then says "Booting kernel failed: Invalid Argument" and drops into SYSLINUX prompt.

EDIT: I tried a few more floppies to rule that out as the cause of the problem.

Here are some screenshots: https://imgur.com/a/floppinux-0-3-1-Mdh1c0w

EDIT 2: I cloned SYSLINUX, checked out the specific commit and did some prodding around.

The function `bios_boot_linux` in `com32/lib/syslinux/load_linux.c` initializes errno to EINVAL. Besides sanity checking the header of the kernel image, there are a few other error paths that also `goto bail;` without changing errno.

Those other error paths all seem to be related to handling the memory map. I know that the BIOS in my machine does not support the E820h routine. I have a hunch that this might be the reason why it fails.

The website has an image gallery where people ran it on actual hardware: https://krzysztofjankowski.com/floppinux/floppinux-in-the-wi...

Most of those machines seem to be newer systems which probably support E820h, except for another 486 DX2 with a similar vintage as mine, that also failed to boot.

replies(1): >>snac+cL2
2. snac+cL2[view] [source] 2026-02-04 11:15:43
>>st_gol+(OP)
What’s your board and BIOS? Syslinux 6.x COM32 Linux loader goes through the memmap layer syslinux_memmap_find() to place the kernel/initrd. If INT 15h E820 is missing and/or buggy on a 486 BIOS, it can surface as “invalid argument”.

For my 486 distro[see snacklinux.org], I use syslinux 4.07 due to similar issues. I never had any luck with syslinux 6.x, I’d recommend a similar path. It always seems funny to me when I see similar projects, claiming it runs on 486 hardware but rarely do I see people actually doing that, and just fire up qemu instead. Running Linux in a vacuum isn’t realistic, especially when we’re talking old hardware and configuring IRQs manually.

replies(1): >>st_gol+wY2
◧◩
3. st_gol+wY2[view] [source] [discussion] 2026-02-04 12:53:50
>>snac+cL2
It's a DataExpert OPTI-495SX: https://theretroweb.com/motherboards/s/dataexpert-opti-495sx

It is running some AMI BIOS variant with a copyright date of 1992, I currently don't have the exact version string around to compare with the ROM dumps on retroweb. vbindiff says the "F" and "M" images are identical and the "H" only has a few 1-byte differences, mostly typos in ASCII strings.

I've written a small boot sector program once that tries out memory and CPU information gathering techniques, so I know the INT 15h, E820h, E801h are not implemented but INT 12h and INT 15h AH=88h return something sane. When I have more than 16M installed, the later reports the full 31M of HIMEM, but I'm not sure how the ISA memory hole factors into this.

From what I saw glancing at the scanning code yesterday, syslinux 6.x should fall back onto AH=88h if AX=E820/E801 doesn't work. It's interesting to know that this worked in older SYSLINUX, I'm curious to check out what changed.

replies(1): >>snac+Nm4
◧◩◪
4. snac+Nm4[view] [source] [discussion] 2026-02-04 19:40:40
>>st_gol+wY2
Yeah, even if syslinux 6.x “falls back” when E820/E801 aren’t there, AH=88h is just a number, not a hole aware map. It can’t describe ISA/ROM/reserved regions, so the loader still might not be able to build something it trusts. If you want to prove it yourself, stick a log right around syslinux_memmap_find() and dump the memmap entries it thinks it has on that BIOS. Its interesting to notice that syslinux 6.03 had a fix for your same issue: "Fix hand over to kernel: "Booting kernel failed: Invalid argument" error." https://www.linuxquestions.org/questions/slackware-14/%5Bann...

Based on the POST strings of your motherboard versus mine (https://theretroweb.com/motherboards/s/fic-486-jal-rev-c), we both have an AMI BIOS so I might be able to run a similar test for my board. You're right that syslinux 6.x should fall back if E820 doesn't work but that hasn't been my experience on my motherboard hence the reversion to 4.x, I can reliably boot with 4-16MB of RAM.

[go to top]