I got nerdsniped bad.
floppinux, a one-floppy busybox filled initrd based Linux “distribution” that Krzysztof Krystian Jankowski made from modern parts did the rounds the other day, and I was excited to try it on real old hardware.
Yesterday I pulled my ThinkPad 560E out, dd’d a floppinux on to a real floppy, booted it up and… it traps on an invalid opcode as soon as it tries to load init.
A little thinking made me realize that the way they were building their busybox binary was contaminating it with libraries from the system they were building on (which was apparently i686), so despite all their “will work on a 486 or later” option selections, the images they produced only work on i686 or later boxes.
I opened an issue then got obsessed and decided to fix it myself, and … you can read the details in my followup to the issue.
The magic lazy out for this kind of thing now is the pre-built musl based cross toolchains provided by https://musl.cc/
I made a couple other suggestions (about using musl, about configuring the kernel for xz and using it for the initrd, etc.) while I was hacking, because putting together little cross-compiled Linuxes is something I used to know what I was doing with. It did take a couple hours to spin back up, there are always picky cross-environment things to remember, and things have changed, mostly for the easier.
I’ve posted a copy of my generated i486-clean image. (Subsequently swapped out for a rebuild with slightly more useful busybox and kernel options, but only about 450k free)
Reality is that which, when you stop believing in it, doesn’t go away.— Philip K. Dick
Unless otherwise noted, this work is licensed under a Creative Commons Attribution-ShareAlike 3.0 United States License.