zlacker

[return to "Floppinux – An Embedded Linux on a Single Floppy, 2025 Edition"]
1. st_gol+gT1[view] [source] 2026-02-03 17:14:02
>>Galaxy+(OP)
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.

◧◩
2. snac+sE4[view] [source] 2026-02-04 11:15:43
>>st_gol+gT1
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.

◧◩◪
3. st_gol+MR4[view] [source] 2026-02-04 12:53:50
>>snac+sE4
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.

[go to top]