How To Build 32-bit FLOPPINUX on a 64-bit Operating System

GNU/Linux Jun 6, 2021

Thanks to the help of pappp I now have the updated instruction for 64-bit operating systems. It is little bit more complicated and I still recommend using VM or some old hardware.

Follow my 32-bit tutorial and just make changes listed below. For ease let's make variable with the root of you workspace and processor cores:



Add ARCH=x86 to each command, like so:

make ARCH=x86 tinyconfig
make ARCH=x86 menuconfig

Additional setting. You only need xz support, uncheck all else than this:

General setup -> Initial RAM filesystem and RAM disk (initramfs/initrd) support -> select "Support initial ramdisk/ramfs compressed using xz"
make ARCH=x86 bzImage -j ${CORES}

Build kernel:


To be sure that you got 32-bit kernel use file command:

$ file bzImage
bzImage: Linux kernel x86 boot executable bzImage, version 5.13.0-rc3+ (kj@dell-g5) #1 Sun May 30 11:03:50 CEST 2021, RO-rootFS, Normal VGA


Download and extract musl:

cd $BASE
tar xvf i486-linux-musl-cross.tgz


BusyBox needs additional configuration to use musl.

cd $BASE/busybox
make ARCH=x86 allnoconfig
make ARCH=x86 menuconfig

Check same things as in 32-bit build. I added few extra things like help and alias.

Then after saving update those four paths:

sed -i "s|.*CONFIG_CROSS_COMPILER_PREFIX.*|CONFIG_CROSS_COMPILER_PREFIX="\"${BASE}"i486-linux-musl-cross/bin/i486-linux-musl-\"|" .config
sed -i "s|.*CONFIG_SYSROOT.*|CONFIG_SYSROOT=\""${BASE}"i486-linux-musl-cross\"|" .config
sed -i "s|.*CONFIG_EXTRA_CFLAGS.*|CONFIG_EXTRA_CFLAGS=-I$BASE/i486-linux-musl-cross/include|" .config
sed -i "s|.*CONFIG_EXTRA_LDFLAGS.*|CONFIG_EXTRA_LDFLAGS=-L$BASE/i486-linux-musl-cross/lib|" .config

Build the BusyBox.

make ARCH=x86 -j ${CORES}
make ARCH=x86 install


$ file filesystem/bin/busybox
filesystem/bin/busybox: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, stripped


Filesystem needs to be build with xz --check=crc32 using this command:

find . | cpio -H newc -o | xz --check=crc32 > ../rootfs.cpio.xz

Remember to change rootfs.cpio.gz to rootfs.cpio.xz from that point.


qemu-system-i386 -kernel bzImage -initrd rootfs.cpio.xz


Kernel size: 632KiB -> 594KiB
Tools: 552KiB -> 121KiB


Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.