Finnix Blog

Behind the scenes of Finnix 120

The hammer is never praised.

That’s a saying I’ve attached to Finnix for many years. A hammer is a tool, and when it does its job, you may consciously or unconsciously appreciate it for doing its job, but there are very few hammer fan clubs.

Finnix was born out of a need, retrieving data from broken PCs when I worked at a dialup ISP in the 90s. Throughout the 2000s, I worked in a sysadmin role where I managed hundreds of physical servers, and Finnix continued to help with my needs. Finnix was downloaded millions of times, people would occasionally (but consistently) express their appreciation, and I loved that it’s served as a useful tool for so many others. However, Finnix was never heavily mentioned by its users in the same way a desktop like, say, Linux Mint was. Why does the tool need to be praised?

The 2010s were much different for me than the 2000s. I managed many thousands of physical machines (without ever stepping into the datacenters which housed them) and hundreds of thousands of cloud instances. The individual instance was less important now than in the past. If it was misbehaving, delete it and add another. I had less drive to work on Finnix because of this, and usually just used an Ubuntu installation on a USB stick for the rare times I needed to boot into a machine at home.

The hammer is never praised. In the light I just described, that might sound depressing, but it was pride for me. I’m not usually one to seek attention. I do something which interests me, I hope it will be useful (or at least interesting) to others, and I move on. I find it amusing that people will often refer to me as “that guy who does X”, where X is different each time.

In late 2018, I had indented to officially discontinue Finnix. I had even written a blog post detailing why, but never ended up committing to post it. LiveCD work is difficult. The majority of the functionality is contained in the initramfs and early init, and had to handle a whole range of hardware and software scenarios. In Finnix’s case, these systems were homegrown over the course of over ten years, and were showing their age. In particular, Finnix was missing UEFI support. UEFI is really, really difficult, especially in a portable boot scenario, hybridized with BIOS. I never ended up getting anything I was satisfied with.

I never ended up explicitly discontinuing Finnix, but I slowly worked toward it. Most recently, a few months ago finnix.org was converted from MediaWiki to a static snapshot of itself.

The hammer is never praised. Then again, hammers don’t suffer from bit rot.

Over the last year or so, I’ve had a variety of people ask me about the future of Finnix. An updated kernel and UEFI support were, understandably, the main sticking points. Over the weekend of May 9th, a friend asked me, and I told her it was unlikely there would be a new Finnix release. I started looking at alternative to recommend, but there really weren’t any. There’s the debian-live project, but they’re stretched thin and pretty much just committed to the desktop CDs. (There had been talk in the past for a utility CD, but not much explicit interest by anyone to maintain it, so it never got off the ground.)

However, I had started looking at live-build itself. It’s got some problems (though there is fresh blood in debian-live giving it some needed updates), but honestly, it was about 95% of what I needed. I stepped back and asked what Finnix needed:

  • High boot compatibility
  • Quick boot into a root prompt
  • Lots of console-based utilities
  • Relatively small size
  • That iconic blue and white root@tty1:~# prompt

live-build produced good compatibility BIOS+UEFI images (with Secure Boot, even). live-config handled the initramfs and early init stuff well (and quickly). I had the old list of utilities included in previous Finnix releases, along with a mental list of more modern utilities to add. “Small size” was important but relative; for most of Finnix’s life, “small” was about 100MB, but inflation had caught up. I figured keeping it under CD size would be a fine goal (under 700MB, though I’m old enough that I still think a CD is 650MB / 74 minutes).

Using live-build and live-config meant giving up some autonomy, but it also meant a lot less dev. So much so that Finnix 120’s development occurred entirely on Monday, May 11, 2020. Hardware testing and some minor tweaking took place on Tuesday, release prep tasks were done on Wednesday, and it was released on Thursday.

Yes, Finnix 120 was developed in a day, and I went from “Finnix is dead” to “here’s a new Finnix” in under a week.

There are some loose ends, of course. Finnix 120 is architecturally quite different from previous releases, and the web site will need a lot of documentation updates. I just noticed the Launchpad bug tracker has had a number of issues filed, which I didn’t even know about. (Last time I checked 5 years ago, it was only used by me for goal management.) I’m going to work on verifying they’re still relevant and moving over to the GitHub project repository if so. Not going to CADT that.

One thing I will be retiring is the concept of remastering Finnix. I have published what I used to build Finnix 120, but honestly it’s a few scripts and an invocation of live-build. Want to remaster Finnix? Just make something similar instead!

As for community interaction, something I’ve never been great at maintaining… I don’t want the hassle of a mailing list, especially one not likely to be (or historically been) used often. (Hammer.) With some hesitation, I’ve created a Discord server for Finnix. Feel free to join and say hi. I’ve listed two rules: be nice, and a mantra I’ve had for a long time, “don’t be afraid to ask a question, but don’t block on an answer”. I’ve know so many people who are afraid to publicly ask questions. Don’t be! But, once you’ve asked the question, don’t assume the answer will just come. Keep working toward a solution. Maybe the answer comes from someone else, maybe you figure it out yourself, maybe both happen and they’re different solutions!

Thank you all for your support of Finnix. Speaking of which, free stickers by mail is still a thing, and I’m pretty sure I’m caught up on everyone who sent a letter. (If you sent an SASE and never received stickers, please get in touch.) You can also attempt to donate via that page… I think payments to that will go into my account, though PayPal has locked me out of my account and refuses to fix it until the apocalypse is over, whenever that is. (Yes, really.)

The hammer is never praised. But I’m glad it’s still on my belt.

Finnix 120 released... wait, what?

That’s right: after a 5 year hiatus, Finnix — the LiveCD for system administrators and the oldest LiveCD in production — is back to celebrate its 20 year anniversary in 2020 with Finnix 120.

Finnix 120 is a complete overhaul, with a number of major changes (as well as too many minor changes to enumerate). From the Finnix 120 release notes:

  • Finnix 120 is now a native 64-bit amd64 userland and kernel system. For older 586/686/PowerPC support, Finnix 109 is recommended as the last Finnix release which was well-supported on those 32-bit platforms.
  • Both BIOS and UEFI booting are now available, with Secure Boot.
  • Hundreds of new utility packages have been added.
  • Automatic setup attempts of complex block device layouts have been removed, in favor of management via udisksctl with tab-completion.
  • Other legacy features and boot modes have been discontinued or are no longer supported, in favor of core USB/CD booting.
  • ISO size has increased (477 MiB, from 160 MiB), but the goal is to continue to keep it under the size of a CD-R.
  • NEALE, the bespoke build system used by Finnix, has been discontinued. Finnix is now built as a customized system based on the debian-live build software.

Please visit finnix.org to download Finnix 120 today!

The future of Finnix

Finnix has a unique place in history. The project was started in 1999, with its first public release in March 2000, making it one of the oldest LiveCDs (predated by DemoLinux and immediately preceded by the Linuxcare Bootable Toolbox). Indeed, Finnix even predated the term “LiveCD”. It’s currently the oldest actively maintained LiveCD distribution.

However, you may notice that the last release was in June 2015, in contrast to the usual release frequency of once or twice per year. I just wanted to let Finnix users know that the project is still expected to be updated, albeit with some changes, hopefully for the better.


EFI support: In contrast to a few years ago, an increasing number of (mostly mass consumer) computers these days are EFI only, and do not have a legacy BIOS bootloader. Finnix currently uses isolinux for the x86 bootloader, which precludes EFI support. I am planning on switching to the GRUB bootloader which will allow for EFI boot support.

AMD64 userland and single kernel: Finnix’s main x86 ISO currently contains a 32-bit userland and two kernels: a 32-bit and a 64-bit kernel. This allows for the most flexibility when working on x86 systems; 32-bit CPUs/userlands are supported, and 64-bit userlands can be chrooted into by booting the 64-bit kernel, even though the CD userland is 32-bit.

However, modern kernels are very large; and two built-in kernels take up a good majority of the space on a Finnix CD. AMD64 CPUs have been in consumer usage for 13 years now, and for most tasks, a single AMD64 kernel and 64-bit userland will be sufficient. For working with AMD64 systems with 32-bit userlands (which are still a common minority), this will still be supported.

Of course, this means future main Finnix releases will not support CPUs released before 2004 (and even some 32-bit CPUs released after that), but for such “classic” systems, older Finnix releases will still be usable for most tasks. In addition, Project NEALE will still be capable of building Finnix CDs with a 32-bit kernel and userland. And indeed, NEALE is already capable of building pure-AMD64 ISOs and has been for years, so this is not much of a change from a development perspective.

Upstream Debian kernels: Since 2005, Finnix has used kernels based on Debian, but modified out of necessity. This was usually to add support for code needed for an efficient LiveCD experience which had not been upstreamed (cloop, then SquashFS; UnionFS, then AUFS, then OverlayFS). As of Finnix 111, the main requirements are SquashFS and OverlayFS, both of which are now upstreamed into the vanilla kernel, so there is no technical need for patched kernels.

Finnix still used modified kernels, mostly to remove modules which are not needed on a text-mode LiveCD (such as sound and video modules) to save space. However, creating and packaging modified kernels is a time and labor intensive process, and with the space saved by only shipping one kernel on the CD, removing modules to save space is no longer a great concern. As such, future Finnix releases will use unmodified Debian-based kernels.

(Sadly, this also means the end of the custom Finnix kernel CPU logos displayed on initial boot.)

systemd init: Finnix currently uses runit as a system init, which was small and let me sidestep sysvinit and Debian’s distro rc assumptions. (Prior to runit, Finnix build procedures involved cutting out most of the sysvinit rc functionality and putting Finnix replacements in.) But it’s very much a manual process, and as all distros are or are in the process of transitioning to systemd, now would be a good time to do the same.

systemd is large and has a reputation of wanting to consume everything, but as I’ve found out with a few days of research and testing, it’s actually rather conducive to distribution management. For example, one thing Finnix needs to be able to do is attempt DHCP on all network interfaces, but not block on it (getting to the command prompt quickly is the most important consideration). I was able to quickly write a service which depended on systemd-udev-settle.service, ensuring all boot interfaces were available, write interfaces.d definitions and trigger starts of ifup@$INT.service without blocking on the getty process. It even has the ability to pivot-root back to an initramfs at the end of system shutdown, something I needed to patch manually into runit.

Size bloat: Finnix’s main stated goal is to be a small – but useful – utility LiveCD. To keep the size down and remain a quick option for download, maximum size goals are attempted. This was originally 100MB, and then for years the stated target was under 185MB – the size of a Mini CD. (This was mostly an arbitrary designation as Mini CDs were never widely popular.)

Finnix releases have always been small, but have included a lot of semi-hand optimization to keep the size down. For example, the mastering process has a trick which is to decompress all .gz files, then to “recompress” them as gzip level 0 (which essentially adds a small header to the uncompressed file). This sounds counterintuitive, but allows the XZ-compressed root filesystem to more efficiently compress that data later on.

In the interest of ease of maintenance and natural upstream size bloat, the new target is to keep Finnix releases under 300MB. This is unlikely to be approached any time soon – Finnix 111’s x86 CD is 160MB, and the removal of a second kernel as mentioned above will allow for size concessions in other places – but it’s a good goal to allow for future expansions.

PowerPC discontinuation: Years ago, I attempted to discontinue Finnix for the PowerPC, but quickly learned there were a number of PowerPC fans who relied on Finnix. I re-introduced the architecture, but with a caveat that it would not be a release blocker (i.e. if a large bug were discovered which affected PowerPC close to release, that particular release would not get PowerPC support). That ended up never happening, but it was still policy.

However, things in the last year have complicated development. Mainly, Debian has announced it is dropping PowerPC from its next release, and has already removed binary-powerpc from its testing line (which Finnix uses as a base). NEALE builds still work against Debian unstable (neale-ppc-unstable-standard, neale-ppc-unstable-minimal, though even unstable’s PowerPC future is uncertain.

Finnix for PowerPC will continue to be buildable via NEALE using unstable as long as this is possible, and again, older Finnix releases will still be usable if you need to work on a PowerPC system.

Once a new Finnix release is made, I plan on rearranging the front page to highlight the latest working release for any particular architecture.

Mirror updates: The Finnix mirror network currently mirrors all Finnix releases, going back to version 0.03 back in 2000, and the total mirror size is about 8GB. I plan on splitting this up into two sets of mirrors, one which contains all historical releases, and one which contains the last 2 releases, plus the last usable release for discontinued architectures as mentioned above. Mirror administrators can then choose if they want to mirror everything, or just the most downloaded releases.


I’ve fixed all of the problems which have been preventing NEALE builds from completing in the last 9 months, and will be starting main development on this new iteration of Finnix, hopefully with a release later in the year.

Finnix 111 released

Finnix is a small, self-contained, bootable Linux CD distribution for system administrators, based on Debian testing. Finnix 111 includes support for the ARM architecture, OverlayFS support, as well as other features and bugfixes.

ARM support

Finnix 111 introduces support for the ARM (armhf) architecture, in addition to existing x86 and PowerPC archicture support. Finnix 111 for ARM is currently classified as a “technology preview”, and primarily targets the Versatile Express A9 platform, as emulated by QEMU. This makes it easy to download and test via QEMU on a standard PC without special hardware.

Additional platforms are planned for the future. Finnix for ARM has been successfully tested on the Raspberry Pi 2, when combined with Raspberry Pi firmware and a custom kernel.

OverlayFS support

Finnix 111 includes Linux kernel 4.0, which includes OverlayFS functionality. Previous Finnix releases used AUFS to overlay a ramdisk on top of a compressed root filesystem, but required a kernel patch, as AUFS is not in the upstream Linux kernel. Finnix 111 now uses OverlayFS directly, which means that special (non-upstream) kernel functionality is no longer required in Finnix kernels. This will help VPS providers better integrate Finnix into their platforms, and will make kernel maintenance easier for future releases.

Finnix 110 released

Finnix is a small, self-contained, bootable Linux CD distribution for system administrators, based on Debian testing. I am pleased to announce the release of Finnix 110, which includes Linux kernel 3.13, updated Debian upstream software, bug fixes and feature enhancements.

« All posts