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.
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.
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.
Pleasantly surprised about the ease of porting to new platforms. Being able to inline assembly, nevermind call regular C functions (eg from an OEM SDK) is incredibly handy. I recently wrote a pure Nim implementation for the CH32V003 microcontroller https://github.com/snacsnoc/nim-on-ch32v003
This is a cool idea for a website/repo for boilerplate scripts. I’ve used LLMs for boilerplate scripts and it’s saved me so much time, but sometimes required more effort (to edit, correct, etc) than I expected. Boilerplate code for the same scripts in multiple languages would be incredibly helpful.
This is right up my alley, I’d love for a more programmatic way to generate initramfs. Being able to template different use cases would be great for specific appliances.
One of my projects aims to create a hackable minimal Linux distro, and thinking about extension has always been on my mind.
https://github.com/snacsnoc/snacklinux
Have you found any specific niches that scratch an itch with your tool?
It uses musl and builds using a musl cross compiler, working x86 and arm64 builds. You could easily build a toolchain for your desired arch and make a simple distro, adding in any user space tools.
Wow, this is just up my alley. I started a side project recently using Tesseract to read book spines for inventory purposes and hooked it up to ChatGPT to clean up the text, having it "fill in the blanks" so to speak. I'll definitely give this a go, having using two OCR engines I should get better results.
- https://github.com/clovaai/donut -- While it's primarily an "OCR-free document understanding transformer," I think it's worth experimenting with. Think I can sort this out by letting the LLM reason through it multiple times (although this will impact performance)
- yesterday got a suggestion to consider https://github.com/kakaobrain/pororo -- don't think development is still active but the results are pretty great on Korean text
That's really cool! There are situations where data is unreliable or congested, having a backup is very handy. SMS is very common LMICs as data can be expensive, nevermind the devices themselves are difficult to come by. I could see a UCS-2 implementation being a great feature for a project like this.
I built something similar recently (inspired by this project), a SMS to DuckDuckGo search [1] and weather lookup [2]. The submitted repo's app is Android only, so having a more universal approach is fun to have. I live and work remotely, my closest neighbour's km's away do not have internet but only cell phones with unlimited SMS. With no internet, they would not be able to download the app. Sort a chicken and the egg problem.
Thanks for the praise, and yes a UCS-2 based solution would be the natural progression of this project. Unfortunately it becomes much more complicated to encode because of how many code points are available! Your DuckDuckGo and Weather solutions look great, especially since they are focused on specific problems, they are space-efficient and easy to use without an app. It's interesting that you bring up your case of rural neighbors with unlimited SMS but not internet - I do see your point about the chicken-and-egg problem, but my intentions were that since the app is packaged as an apk, the file could be shared around when people meet up over Bluetooth or similar protocols.
In the video you posted, the host talks about Magnasanti a project to create the perfect city (in the eyes of the game). There is no crime, abandoned buildings, or traffic. A population of 6 million with no hospitals, and no public funding except mass transit and police. Ultimately we can see that the game does not reward citizen happiness, but industry.
The "black box" nature of the simulation within SimCity is fascinating, thank you for the rabbit hole.
Thanks for the comment! We started with subscribing to some brands manually with our own number to see if the idea was viable for about a month before trying to do it at scale by looking for which brands offered SMS and using something like a Twilio virtual phone number to get the message they send to us via API to put in the database. We currently spend a few hours every month to do that and to add more features.
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.
reply