Smashing Square Pegs into Round Holes! Because yet another Linux Distro would just be Bloody Stupid!

This is the second pseudo-release of Bloody Stupid Linux, which of course has nothing to do with the first release. The first BSL was a 50Mb ISO Live run CD based on DamnSmall Linux. I had a lot of fun hacking around DamnSmall, and apparently it drew a little attention. John, the lord master of DamnSmall, even was kind enough to link to me off of the DSL relatives page. I got a few mails, most about the image to the right, about a hundred downloads or so, and some of those were even people I didn't know. However, making a DSL mod distro was just too useful, I needed to do something Stupid, so here we go with 0.02a:

Introducing Bloody Stupid Linux 0.02alpha

BSL 0.02a is based around an initramfs compiled into the kernel. ( for specifics on setup, take a look at the README) Here's how it works:

  • 1. The BSL kernel boots, this can be using the provided floppy image, ISO, or if you like, CF, or if you're feeling really sexy: PXE booting. The BSL kernel doesn't need to turn around and have support for whatever it just booted from, so basically anything you can get an x86/x86-64 BIOS to boot, you can get the BSL kernel to work.

  • 2. The kernel unpacks its 800kb root filesystem cpio archive into ramfs. This was compiled into the kernel, and was basically the whole reason for this project. Once I read the menuconfig description it seemed too neat not to try. Now that's stupid!

  • 3. Init fires off on the mini filesystem (which is built entirely on BusyBox), its a very short ash script that:

  • A. Looks to see if there's 256Mb of system RAM available. If not, it makes fun of you and drops to a shell.

  • B. Tries to get a DHCP lease, failing that it will prompt for the usual: IP, gateway IP, netmask, and the IP of the image server (we'll get to that in a minute.)

  • C. Mounts some ramdisk, wget's a tarball of its modules from the image server, unpacks that, and then tries to modprobe all of them.

  • D. Mounts some more ramdisk, wget's a 53Mb tarball of a Slackware root filesystem from the image server, unpacks that, pivot_root's over to that and fires off the local Slackware /sbin/init.

  • 4. The 53Mb tarball unpacked to a 170Mb-ish Slackware that runs through its init up to runlevel 3, starting sshd and no other network daemons. The root password, unsurprisingly is "bsl". The only differences between it and a fresh Slackware install are:

  • A. /etc/rc.d/rc.S has been edited not to overwrite /etc/motd at boot.

  • B. /etc/motd has been changed to display a Bloody Stupid message.

  • C. /etc/hosts and /etc/HOSTNAME have been set to bloodystupid.bloodystupid.org

  • D. /etc/rc.d/rc.udev has been chmod'd non-executable. I was having issues with udev and the fact that / was tmpfs.

  • E. /etc/inittab has been changed so that instead of agetty you just get bash on all 6 of the basic ttys. No need to login, thanks again to Knoppix for making that easy.

  • Why go to all this trouble? The BSL kernel is basically a life support system for ram and network cards, since it wget's support for everything else on the machine the kernel is very small. The initial aim was to fit it on a single floppy, then PXE booting became attractive, and really, since the kernel doesn't need to support whatever it just booted from in order to have its root filesystem, its very flexible. Yeah, I know an initrd can do the same thing, but its more fun this way. As it stands, BSL makes for an excellent repair system, the framework for a bulk installer, a neat toy, and an alright thin client ( as long as you've got a gob of RAM handy.)

    Most of all, this whole thing is incredibly hackable. If you wanted to use a different slackware image, just tar one up, name it image.tar.gz and stick it in the /bsl directory of your image web server. If you need that image to unpack to larger than 170Mb, hack up the init script in the cpio archive, rebuild the archive, then recompile the kernel... sounds like a lot, but it really isn't. Want to replace the whole image with Debian/SuSe/Fedora/Arch/DSL/Gentoo? Go to it!

    For anyone interested in how bad of a DSL/Knoppix Hacker I was, the old 0.1 ISO is Here

    2b22a51f24ad91176d8e2d276adbb3cc BSL-0.1.iso

    Right now 0.1 looks marginally functional.

    root: bsl
    bob: whatever

    Cheers,

    Finegan

    fin@bloodystupid.org