June 6th, 2016

Tiny Core Linux 7.1: Big Where It Counts

Jesse Smith

There’s an old cliché that promises “big things come in small packages.” Our reviewer takes a look at Tiny Core Linux and finds a lot of wallop in its 16MB size.

Most software grows and expands, taking on new features over time. While this can make software applications more useful, it also means more resources are required to run our programs. However, there are some software projects which strive to become ever more lean, more efficient and use fewer resources. One such project is Tiny Core Linux, a minimalist distribution which packs a lot of functionality into a very small system. The project’s website states:

“Our goal is the creation of a nomadic ultra small graphical desktop operating system capable of booting from CD-ROM, pen drive, or frugally from a hard drive. The desktop boots extremely fast and is able to support additional applications and hardware of the user’s choice. While Tiny Core always resides in RAM, additional applications extensions can either reside in RAM, be mounted from a persistent storage device, or installed into a persistent storage device.”

There are three editions of the Tiny Core distribution: Core, TinyCore and CorePlus. The Core edition is a mere 11MB download and offers users just a command line interface with a few tools. The TinyCore edition (16MB) provides a minimal desktop environment on a live disc. CorePlus offers a larger image (it is a little over 100MB and can be installed on a hard drive). I found Tiny Core Linux can be downloaded as a 32-bit or 64-bit x86 build and there are also Raspberry Pi builds. Something I found interesting was the 64-bit builds had “Pure” in their names (e.g., “TinyCorePure”). I did some looking around the project’s website and wiki, but could not find any explanation for this.

Speaking of the wiki, I highly recommend bookmarking and making use of Tiny Core’s documentation. The miniature distribution does a lot of things differently from its mainstream Linux counterparts and I find the wiki helps when navigating the unique characteristics of Tiny Core.

The latest release of the distribution, version 7.1, does not feature many new changes. The release announcement mentions some minor updates, but not a lot about Tiny Core’s design has changed in recent years. I decided to download the TinyCore edition of the distribution, which provides a live disc with a minimal desktop environment. In an effort to try to avoid confusion, I refer to the distribution as a whole as “Tiny Core” with a space between the words while I call the specific edition I used “TinyCore” without a space.

Booting from the distribution’s live disc brings up a menu asking if we would like to launch a desktop environment or boot into a command line only interface. Taking the desktop option brings us to the Fast Light Window Manager (FLWM) in under five seconds. The desktop interface is mostly empty. The background is made up of soft colors with a little branding in the center. At the bottom of the display is a quick-launch bar. This launch bar features icons that will log us out, launch a text editor, open the control panel, open a virtual terminal and launch the package manager. We can right-click on the wallpaper to bring up an application menu.

One aspect of the FLWM environment I found interesting was that the title bars on windows are arranged vertically, down the left side of open windows. This is done to reduce the amount of vertical space used by the interface. It took a while for me to adjust to this, but I can see how it would be useful, especially on laptop computers with screens that feature high width-to-height ratios. The only drawback I found to having title bars on the sides of windows is that text in the title bar is rotated 90 degrees. In other words, the letters are all on their sides and reading must be done bottom-to-top, which is more difficult (for me) than if the letters were upright and arranged top-to-bottom.

I experimented with running Tiny Core in two test environments, as a VirtualBox virtual machine and on a laptop. While Tiny Core ran in both environments, there were some quirks relating to hardware. For instance, Tiny Core does not ship with VirtualBox modules, so screen resolution is somewhat limited in the virtual environment. I also found mouse integration did not work properly, causing the mouse cursor to weave all over the screen until I disabled the VirtualBox mouse integration feature.

When running on the laptop, Tiny Core worked fairly well, operating quickly and smoothly. However, the distribution would not work with my wireless network card and did not support my laptop’s full screen resolution. The distribution does not ship with Intel wireless firmware, meaning I had to plug into a wired connection until I could download the proper firmware from the project’s repositories.

In either environment, with no extras installed Tiny Core used approximately 20MB RAM. As more packages are installed and more services run, the distro’s memory footprint expands. For example, once I had firmware, OpenSSH and Firefox installed, memory usage grew to approximately 50MB.

When I first started exploring the Tiny Core distribution a few characteristics stood out. One was that Tiny Core runs a single user system by default; the live disc automatically logs us in. We have the ability to run administrator tasks using the sudo command without a password. Most tasks, such as getting online and installing packages, do not require any special permission or a password. This makes the system fairly open, and from a security standpoint, hassle-free.

Apart from the applications mentioned above, Tiny Core ships with very little software. The FLWM environment, some configuration tools and a handful of command line programs are available. Documentation, compilers and other conveniences are not present on the live disc. In the background, Tiny Core 7.1 runs on version 4.2 of the Linux kernel.

The Tiny Core control panel is a fairly simple application with a grid of buttons on it, each one labelled with a task. Clicking one button will open a service manager which simply enables us to toggle on/off three services. Another module handles networking and opens a window where we can either input network settings or enable DHCP to get us online. There are other modules which will provide us with system information, allow us to configure where to store backups (more on backups in a moment) and customize the launch bar. We can also change the date and time, and alter the wallpaper if we wish. Though the look of the control panel may seem rough, it functions well.

As far as I could tell, there is no installer to copy the TinyCore edition of the distribution to a local hard disk. We could use the larger edition the project provides to work around this, or we can set up what Tiny Core calls “backups” to save our application and data files to a local disk. This backup process is handled by the Backup/Restore utility from the distribution’s control panel. The first time I launched the Backup/Restore program I realized I would have to set up a partition where my files could be saved. Backup/Restore will not do this for us. Tiny Core ships with the fdisk command line partition manager which can be used to create a partition and the mkfs utility will format the partition for us.

Since fdisk is a bit cryptic to work with, I tried installing the GParted partition manager from Tiny Core’s software repository. While GParted did install, I was unable to run it, either as a regular user or via sudo . GParted always claimed it was already running, though a check of the active processes on the system confirmed it was not running. In the end, I went back to fdisk .

After I set up a data partition, I still was unable to save my backups using Backup/Restore. A trip back to Tiny Core’s wiki revealed I would need to specify the location of my data partition at boot time prior to making backups. After that, I found Tiny Core could locate and restore existing backups automatically by scanning the hard drive.

The Apps program, a graphical package manager, is a key component of the Tiny Core distribution. Apps can be used to show locally installed applications or packages available in the project’s repositories. Available packages are displayed in alphabetical order on the left side of the Apps window. Details about the highlighted package are displayed on the right. There is a search feature that will help us find packages based on their names. There is a pretty good selection of software to be had, including larger programs like the Firefox web browser, GIMP, OpenSSH and the Apache web server.

For the most part, Apps worked well, helping me locate and install new programs. However, I did run into a few bumps along the road to installing a full application menu. For example, sometimes Apps failed to find a working repository mirror. This happened on a semiregular basis during my trial and since I was able to confirm each time that I was online and that my DNS settings were correct, I am not sure what caused the failure. Resetting my network connection and relaunching Apps did not work. The only cure for the missing mirror error I could find was rebooting the distribution.

Earlier I mentioned setting up persistent data storage via the Backup/Restore utility. Initially I thought having automatic backups in place would cause my installed packages to survive a reboot. I was mistaken. A trip back to the valuable Tiny Core wiki reveals that two settings need to be correct in Apps for packages to survive a reboot. First, new packages must be installed with the “OnBoot” flag set, just having packages set to download and install is not enough. Second, Apps will default to placing new packages in temporary storage. The location of package downloads must be changed to match the location of our backups from within the Apps package manager. Once these steps have been taken, installed software survives a reboot and is available upon booting the distribution.

I played around with installing and running various applications and desktop programs. These generally worked well and I was happy to find that I could set up Tiny Core to fill just about any role other distributions perform. There is definitely more up front configuration as we are building and crafting the operating system from a minimal foundation into whatever we want. But Tiny Core is fast, small and acts as a good, stable base for whatever we wish to accomplish.

Conclusions

Tiny Core is quite an achievement in developing a small Linux distribution that offers a lot of functionality with very low resource requirements. Just the fact that Tiny Core runs and provides a desktop environment with 20MB of memory is impressive. If a person has need for a small yet powerful operating system, Tiny Core is an obvious choice.

At the same time, this distribution, being so minimal, leaves us to fend for ourselves a bit. If we want additional software, password protected accounts, extra services or even to have our data survive a reboot, then we need to roll up our sleeves and configure the operating system. There is a strong do-it-yourself element to Tiny Core. In a way, its small size and hands-on approach reminds me of building with Lego blocks. It’s fun and educational if you are into crafting your own operating system, but it does mean a lot more work up front to get what you want.

For people who like efficient systems and who are interested in exploring Tiny Core, I recommend exploring the project’s wiki, and for the more adventurous, reading Into The Core which talks about the inner workings of Tiny Core and how to build one’s own extensions to the operating system.

**********

Hardware used in this review

The physical test equipment for this review was a debranded HP laptop with the following specifications: