The way we use computers is changing, but Linux isn't standing still. Tiny Core is a minimal Linux distribution that boots a complete live system for every day use. Its foundation and unique approach to the desktop helps it achieve certain goals like preventing system rot and ensuring your system is fresh every time it boots.
Every now and again there comes along an amazing piece of technology that is really quite impressive. Tiny Core is a tiny live Linux system and one such marvel. What makes it so special is the way it works and how it treats the system that it loads.
Tiny Core is a live Linux environment which boots from an array of devices. It’s designed to be run from a CD or USB device, but it can also be installed to and loaded from a hard drive. The operating system centers around a main philosophy, that the system should always remain in a pristine state.
Some complain that there are too many Linux distributions, but others disagree. In an interview earlier this year, Linus said:
“I think multiple distributions aren’t just a good thing, I think it’s something absolutely required! We have hundreds of distros, and a lot of them are really for niche markets. And you need that – simply because different markets simply have different requirements, and no single distro will take care of them all.”
A little history
So when it comes to Tiny Core, one can ask the same question as to whether yet another distribution is warranted. Hopefully, this will show that it certainly is. Founder Robert Shingledecker was heavily involved in the development of a well known mini distro, Damn Small Linux (DSL). He created many of the features which made it such a loved distro, including the ability to backup and restore your data on the live system.
From January 2004 until he left the project, he was responsible for creating and releasing every version. All of the major structural improvements from version 0.6 through to 4.x were a result of his efforts, although he had little to do with the application side. In a recent interview Robert explained some of his contributions:
“I went on to create the frugal install, used GNU’s Coreutils to replace BusyBox, wrote the “Getting Started” documentation, created and introduced the MyDSL extension system, as well as mountable compressed loop extensions which later became UCI. I introduced Lua/FLTK (Flua) to create some 50 or so GUI front-ends for DSL.
I also integrated QEMU with DSL and created a separate SYSLINUX version. I added the single or double-click icons, an icon layout manager, and introduced a drag-n-drop desktop. I added Winmodem support for the popular Lucent devices, support for adding users, implemented Unionfs and the UNC extension type, set up the repositories, created the PXE version, created the boot floppies with USB support, and included PCMCIA support.
I coded and implemented many new boot codes like secure, protect, legacy, desktop, icons, and waitusb. I created the libraries used by Bash scripts and Lua, as well as the pen drive install scripts, both ZIP and HDD. I created the dpkg-restore capability, the multi-user support for hard drive installation, and the web backup and restore.
I also stripped KNOPPIX twice (v3.3 for DSL v0.6 and later v3.4 for DSL v2.0) and compiled the 2.4.31 kernel and all modules to keep DSL updated.”
After some internal issues within the development team, Robert decided to leave the project and shift his focus onto a new system. The idea of Tiny Core was actually originally born in 2005 with the goal of furthering some of the ideas he had introduced to DSL, but with the added ability of letting the user decide what applications they wanted on the system. These ideas were originally meant for DSL, but having been rejected by the lead developer a new distro was required to explore these avenues. As Robert put it:
“Tiny Core’s genesis was from a meeting at Linux World 2005, with myself, Kent Porter, and Chris Livesay. We discussed what we all thought would be an ideal environment. One that would easily support the concepts and philosophy that I had introduced to Damn Small Linux, but without the added burden of those GTK+ applications. Let the user decide; GTK+, or GTK+ 2, command line for servers, minimal desktop, or specialized appliance.”
From these beginnings, Tiny Core has become a popular lightweight and flexible modern Linux distribution. Linux Magazine approached Robert to ask how he felt the project is going and he replied, saying:
“The project is progressing faster than I had anticipated. We have an active community that helps find bugs and offers suggestions for improvements. I have incorporated many while I still make some major improvements as well. For example, we now have an upgrade tool which will make sure that all of your extensions are upgraded to the latest in the repository.”
So Tiny Core is exactly what the name suggests, a tiny core of an operating system which boots to a fully functional desktop. From here, the user is able to configure the system as they please. It’s a “from the ground up” approach that aims to be extremely flexible. The core system provides most of what the user needs to boot to a working environment, which they can then tweak from there. This is one of the no-so-tiny core philosophies of the distro – it must be small, fast, efficient, and let the user turn it into whatever system they desire.
Let’s face it. Most Live CDs collected along the way just tend to sit on the shelf, or get used as a rescue system. Tiny Core on the other hand, is meant to be used in a completely different way. The OS is the live system. It’s a live environment for every day use, designed to be your main operating system running on your main computer. Of course that’s what it’s designed for, but there’s nothing to stop a user from using it as a rescue system. It’s just that Tiny Core is much more than that and is indeed a completely different way of looking at Linux.
Driving computing philosophies
Through his efforts with DSL, Robert started to develop a few philosophies around computing which continue to drive the development of Tiny Core today. For example, he states:
“My philosophy is to offer a unique way to run Linux. I do not promote traditional hard drive installations. I now call that method, the “scatter mode” of installation. You will not find it listed in the core concepts methods of operating Tiny Core.”
That might sound complicated, but remember that Tiny Core is a live system. It doesn’t actually install to your hard drive but runs entirely in memory.
Another issue he and his team are tackling with Tiny Core is the issue of “system rot”. Robert explains:
“Over the years, I have seen all operating systems, suffer from “system rot”. Over time the performance is impacted or becomes corrupt. Whether it be from system software or hardware malfunction, user/operator error, sun spots, solar flares, whatever. I believe that booting a computer should be fast. It should always start from a known pristine state. I believe that one should have control of the processes that are running at boot time and the collection of applications that one wishes to use. Whereas, most distributions become larger and larger. Mostly offering more eye candy than functionality and dictating the runtime environment and application selection. I find these too slow, too many unneeded processes, and not my desire of applications. The other tiny distributions still dictate a collection of applications. Most I never use.”
This idea is also central to Tiny Core, that the system is always reverted to a pristine state whenever the system is booted. Many of these core concepts are explored further on the project’s website. With all of these thoughts in mind, Robert and his development team set out to create their ideal Linux operating system.
How it works
Tiny Core consists of a small kernel and initial RAM disk, which boots into a basic FLTK graphical environment. The computer’s hardware is configured on boot and should mostly work out of the box. Some options however, such as a choice of either an ALSA or OSS sound server, are left up to the user (true to the philosophy of the distro). Once inside the environment, the user is then able to connect to the online repositories in order to install the applications they desire and configure their system. The package manager is very simple, it connects to a database and provides a list of available packages to install. The user need only select a package and the manager will download it with all required dependencies and install them to the system.
Although a very minimal environment, the system does include a basic control center which allows the user to graphically perform functions like configuring the network, setting the background as well as the date and time. It also provides the option to start the included SSH, TFTP and Cron daemons, includes a device mounting tool, and lets the user backup and restore the system. All in all, it’s a neat little environment which provides a solid working base which the user can then expand to their liking.
When installing is not really installing
Tiny Core doesn’t actually install anything onto the system in a traditional way. The system is live, so that wouldn’t make much sense! Instead it stores the binary packages in memory which are then laid over the top of the existing system. These packages are actually called extensions and when the system boots each and every time it will load these extensions from a location you specify. This is how it helps to prevent system rot. Every time it boots, each package is “installed” for the very first time. There’s no chance of corrupt or deleted files as they are fresh each time as included in the package.
Simply booting the system in its default configuration will run in RAM and store any installed packages there. There are a number of boot time options available, including specifying a partition that the system can use to store any extensions which are installed. On boot up, it can look there to load any existing extensions into the system. This is an easy way to manage what packages are needed on the system. In fact, there is no concept of uninstalling an application as such either, because it’s not actually written to the system permanently. A reboot will wipe all installed programs and provide a clean slate, so removing them from here means that it’s no longer installed!
Tiny Core provides two different types of extensions – TCE and TCZ. The former is a compressed tarball which is extracted into RAM over the booted system environment. The disadvantage of this method is that it uses up more RAM the more programs you have installed. The latter is more efficient as it actually loop mounts the packages onto the system, rather than extracting them into RAM. This means that they are only loaded into memory when you actually use them, similar to that of a more traditional install where they sit on a hard drive. If you’re going to have many applications installed, this is the better option.
So if you’re constantly loading each of these packages on boot, how do you make any changes? And what about your data? Seeing as Robert introduced these features into DSL, it would stand to reason that he would include them in Tiny Core also! Yes, his system has the ability to save your data and restore it on boot. You can also change system files and on boot these will also be restored, just after the extensions are loaded. So if you do want to customise a package, you can do so and have it stay that way each time you boot. The system also takes mount point arguments at boot time, so users can specify a partition to use as their /home directory, for instance. Pretty neat. It’s a whole new way of running Linux on the desktop.
The project has been expanding at a rapid pace with new features and improvements constantly being introduced. Robert told Linux Magazine where the project is heading in the near future, saying:
“I am currently working on a major improvement for 2.3, an extension audit tool. Some may call this a “package manager”, however I still don’t see it that way. It will be able to do reporting on extensions and their dependencies, will check for missing dependencies and provides for clean removal of an extension and any unencumbered dependencies. I feel that this will be a value tool for Tiny Core. The team and I are in the early planning stages for v3.0 with some major overhauls being discussed.”
It looks like development won’t be stagnating any time soon and if the popularity of other small distros such as DSL are anything to go by, Tiny Core has a bright future indeed. Although website founder Ladislav Bodnar often warns not to take these statistics too seriously, Tiny Core is currently sitting at number seventeen of the sites page hit rankings, and rising.
Expanding your mind
In conversations with Linux Magazine, Robert explained why Tiny Core may appeal to certain Linux users. He said:
“If you believe, like I do, that most Linux distributions are getting too big and trying to look and feel too much like Windows, and long for the days of “Small is Beautiful” then you may like Tiny Core.
If you wish to control exactly which processes and applications are running, if you like to be challenged to run on the smallest resources, then you may like Tiny Core/Micro Core.
If you like an open development environment where our user community builds extensions, share ideas and uses for Tiny Core/Micro Core then you may like our project.
And finally, if knowing that the state of your machine is pristine upon each boot then you should consider our project.”
Tiny Core really is very tiny and it’s well worth taking the small amount of time required to look into it. The project has just released version 2.2 and the main ISO is only 11MB. If that’s too large for your liking, then Micro Core might be more your style at only 7MB. Simply download the ISO image, burn it to disk and boot.
Although Tiny Core is a relatively new distro, it has a great deal of history behind it already. It is developing at a rapid pace and implementing new features along the way. It really can change the way you think about running Linux over a more traditional method. It’s an exciting project and really worth playing with. It’s lots of fun and it does deliver on its promises. Try it out and see how fast, stable, clean and fun a Linux system can be!