TinyCore Linux Review

More current review and notes about Tiny Core 6.4.1

In my ongoing search for a very small but functional Linux distribution (I really miss Damn Small Linux, which was very good - a fine balance of size, usability, passable looks, and a decent selection of tools), I'm revisiting Tiny Core Linux. Version 6.1 was released March 7, 2015. To make it boot in VirtualBox I had to choose the waitusb=5 "for slow systems" from the GRUB menu. For a 15 MB download, you get a live CD with a functional (but unpleasantly ugly) graphical environment (flwm). It won't do anything particularly useful without your using the Application downloader, because there's almost nothing installed. You have a functional terminal program and busybox, so it's not totally useless, but you'll want to download something to do anything practical.

Packages are stored as squashfs files - read-only blobs that are mounted as loopback file systems. Each is mounted separately, so a TC system with a lot of packages can have hundreds of mounts. The good part of this is that packages are nearly impossible to tamper with in place. Lots of links are used to bring all these packages together into a coherent Linux-like filesystem.

Installation

The installer is NOT intuitive: it took several attempts to get what I expected. You have to download the installer ("tc-install") with the "App" application, and the installer asks a bunch of questions that aren't translated from TC's paradigm to normal English - which is tough when you know very little about TC. I thought I was installing TC to learn about TC, but that's not the way it works here ... Learn first, then install. I did a "Frugal" install at their encouragement. I should probably have read this (their install guide) more, although I'd argue that in this day and age you shouldn't need to spend more than five minutes reading to achieve a good default install - all the major distros' installers are workable without reading about them. The stall-out is on the Bootcodes, which are extensive, not well explained, and only comprehensible if you have a good understanding of the unusual construction and behaviour of TC Linux.

I think the set of boot options I used that I was happy with was waitusb=5 tce=sda1 restore=sda1 home=sda1 opt=sda1 showapps. The /mnt/sda1/tce/optional/ folder then holds all the package files: the default Tiny Core install has 26 loop mounts.

Packages "installed" to the live version won't be copied over to an HD installation.

The default behaviour of the live CD - booting straight into the user "tc" without a login prompt - is replicated with the HD install. And since tc can "sudo" to root without a password as well, this is not initially a particularly secure HD distro. Not placing blame here: they're oriented to the Live CD view of the world, and the normal tools ("passwd" and "adduser", through busybox) are available to you to fix the problem.

Packages

Installing packages is done with the "Apps" application that sits prominently on wbar at the bottom of the screen. Its operation isn't particularly obvious. Most likely the first thing you want to do is click the "Apps" button, then choose "Cloud (Remote)" and "Browse". The other options under "Cloud (Remote)" are "Select Mirror" (the default is ibiblio.org) and "Select fastest mirror" (which for me in Toronto has always chosen ibiblio.org anyway). This will - not immediately, and without giving any indicator that it's doing anything - eventually give you a list of installable packages. The next non-obvious detail is the drop-down menu in the lower left of Apps, which by default says OnBoot. This means that if you select a package and install it, the package will be downloaded and will always be loaded at boot. This is the most obvious choice, and should be the default: the other choices, "OnDemand," "Download + Load," and "Download Only" take you down the rabbit hole of TC functionality. "Download" does what it says: the package is fetched and placed on the hard drive, but isn't loaded and doesn't become available unless you specifically ask for it to be loaded - we'll get to that. "Download + Load" does a download, but also makes the package immediately available, BUT - it won't be available next boot unless and until you load it by hand. "OnDemand" packages aren't loaded at boot, but are loaded when they're requested by an attempt to use them. This sounds good, but in practise seems to require two attempts to run the "OnDemand" binary. The first fails silently, and after that the binary runs when you request it. To load a downloaded application, you have to fire up Apps again and tell it to load the application ("Apps" -> "Load App Locally", which gives you a menu of locally available applications). On a very low resource system (say 256 MB) this might make sense with a big package like Firefox. I have yet to determine how to shift an OnDemand or Downloaded package to OnBoot: this would seem like a fairly common desire, but doesn't appear to be easy. More information.

As previously mentioned, the default TC install has 26 loopback-mounted files: add bash, vim, and python and we're up to 55.

Miscellaneous package notes: tmux isn't available, only screen. There doesn't appear to be any VirtualBox Guest Additions package, and compiling it would take a huge wad of dev packages needing to be installed. Although I could make them all OnDemand ... But building it yourself may be impossible, as it requires the X headers ... and TC uses a specialized miniature X imposter. Some reading turns up the fact that the 4.x series of TC had the Guest Additions, but they weren't available in the 5.x series, and still aren't available in the new 6.x series.

Firefox is an odd case: their last packaged "firefox" is v21, which is ancient and deprecated. The package you want is "firefox-latest" which turns out to be a shell script that runs an install that hauls down a huge number of deps before going to a Mozilla site to get v37 and then builds it into a TC package. It seems to work well: it successfully got me FF 37.0.2, which is current as I write. But ... despite my telling it I wanted FF OnDemand, it's all OnBoot: kind of understandable as my selection is probably only applied to the script that's downloaded, not the final product that's generated by the script, but I'd like a say in the matter ...

Miscellaneous

On both Windows and Linux with TC as a guest OS in VirtualBox I've had a problem with the pointer getting misaligned - it will pop out the edge of the guest window, even though within the window you were nowhere near the edge. This can generally be quickly and easily recalibrated by moving the mouse pointer to the opposite edge of the window from the one you're having trouble with, but it's annoying. I'd be inclined to blame this on VirtualBox, but I've never had this problem across several other guest OSes, and several versions of VirtualBox.

I've spent a lot of time and struggle on getting a Dvorak keymap in TC: I've yet to succeed. They have a kmap.tcz package, and a way to specify the keymap to the kernel on boot, and I even know it worked on real hardware on a 4.x(?) series TC the last time I ran it ... but it has so far entirely refused to work in VirtualBox. So I learned how to get into a TC package: mount -o loop /mnt/sda1/tce/optional/kmaps.tcz /mnt/tmp, then cd /mnt/tmp/usr/share/kmap/dvorak/ and loadkmap < ANSI-dvorak.kmap ... which has zero effect. "loadkmap" is a soft link to busybox, and these are a binary keymaps: not the same as the ones on Debian, which are plain text (okay, they're gzip-compressed) ... keeping in mind (as always) that I'm using VirtualBox - but that hasn't interfered with keymaps with several other distros.

Past Crimes

TC used to store a lot of stuff in memory (a couple years ago when I last played with it) - both system and user - and didn't save anything to the HD until you shut down: I really hated this idea (what if you have a crash?). I'm not sure if it still does this: I haven't deliberately crashed the system to find out, and - with me using their default shutdown dialogue - everything has been working as expected.

Conclusion

I've tried several other small(ish) distros recently, and while I don't love TC, it's the only one that hasn't driven me away completely. With the added advantage that it's the smallest of the lot, by a wide margin. So I'll probably be tinkering with it some more. It's an interesting piece of work.