While most Linux distributions have been growing in the last years to the size of a DVD, others go in the other direction and try to minimize their footprint. Most Linux users will know Puppy Linux and Damn Small Linux, but one of the more recent and even more minimalist projects is Tiny Core Linux, the brainchild of Robert Shingledecker who used to work on Damn Small Linux.
Tiny Core Linux is a Linux distribution that aims to be a minimal but usable desktop operating system. The minimal system requirements are a 486DX processor and 48 MB RAM. Your author downloaded Tiny Core 2.1, which comes in a 11 MB iso file. Users can burn it on CD or install it to a USB pen drive. Unsurprisingly, the distribution boots very fast and shows a minimal desktop with a one-color background. There's no simple installer to write Tiny Core to the hard drive, but there is a step-by-step installation guide on how to partition a hard drive, copy Tiny Core and install the GRUB boot loader.
Under the hood we see the Linux 2.6.29 kernel, Busybox, Tiny X, FLTK, and the not so flashy but useful JWM window manager. By clicking on the desktop the user gets a menu with access to the minimal set of applications. The wbar panel at the bottom gives access to the Aterm terminal, Tiny Core's control panel application "cpanel" with access to some system tools and the "appbrowser" for installing applications.
From less to more
Tiny Core's philosophy seems to be: start small and add programs only as needed. This means that the user doesn't get bothered with a bloated set of applications that are rarely used and has complete control over which applications or drivers (e.g. for an Atheros wireless card) are installed. Tiny Core is contained in a compressed cpio archive populating the initial ramdisk upon booting of the Linux kernel and runs entirely in RAM. Additional applications can reside in RAM or be installed into a storage drive.
Tiny Core essentially has four "modes of operation", one volatile and three persistent ones:
- Cloud/Internet: This is the default mode, where Tiny Core boots entirely into RAM. If the computer has a working internet connection, the user can explore the application extension repository and install extensions at will. Of course, the downloaded applications are not persistent, as they are installed into RAM.
- PPR/TCE: In this mode, Tiny Core uses a writable persistent storage partition, which can be specified with the boot option tce=hdXY. The storage partition becomes a "Persistent Personal Repository" (PPR) for so-called TCE extensions. When the user installs extensions, they will be saved on the storage partition into the directory tce. When Tiny Core boots, all TCE extensions on the partition will automatically be loaded into RAM. A disadvantage is that adding many TCEs may quickly exhaust system memory.
- PPR/TCZ: In this mode, Tiny Core also uses a Persistent Personal Repository on a storage partition, but it uses the TCZ extension type, which is more RAM-friendly.
- PPI/TCE: In this fourth mode of operation, extensions are installed into a Linux partition or a loopback file, which can be specified with the boot option local=hdXY. The developers call this mode "Persistent Personal Installation". It boots faster than the other modes, because no loading or mounting occurs during boot. Moreover, it has the same RAM savings as the PPR/TCZ mode.
As mentioned above, applications can be installed in Tiny Core in two ways: as a TCE extension or as a TCZ extension. A TCE extension is basically a tar.gz archive with optional menu and/or icon, which gets loaded from the partition into RAM completely. In contrast, a TCZ extension consists of a cramfs or ziofs compressed mountable image of an application directory, that becomes mounted in /tmp/tcloop and symlinked into the root filesystem. For example, after installing alpine the alpine.tcz image is mounted in /tmp/tcloop/alpine and /usr/local/bin/alpine is a symlink to /tmp/tcloop/alpine/usr/local/bin/alpine. Therefore, a TCZ extension only uses RAM when the application is running. The user can mix and match both extension types, but some extensions are not available as a TCZ type.
Installing packages can be done by clicking the Apps icons and choosing
TCE or TCZ in the "Connect" menu item. This "appbrowser" program is a (too)
basic package manager with dependency resolution. When the user has
installed an application it gets an icon in the Apps menu on the desktop
and maybe in the wbar panel. Tiny Core Linux has hundreds of
applications, including Abiword, Audacious, Filezilla, Firefox, gFTP, Gimp,
Java, MPlayer, Opera and X-Chat, and it is rather up-to-date as the
inclusion of Firefox 3.5 shows.
Just like Tiny Core has an option to make the downloaded applications persistent, there's also a boot option for a persistent home directory: home=hdXY. This will mount /dev/hdXY/tchome to /home/tc. Tiny Core also offers an encrypted home directory: the user first chooses "Make Crypto Home" from the Tools menu to create an encrypted loopback file with a chosen password. Once this is created, the boot option cryptohome=hdXY will make Tiny Core prompt for the password during boot.
For the adventurous users
On the project's wiki there's a guide for creating extensions and guidelines for extension submission. Even more, adventurous users can remaster Tiny Core and make their own distribution. This is easy as it comes down to copying the iso's contents and adding or removing files or integrating extensions. Then the directory is packed into an iso image. There's even documentation about using a custom kernel, for example if you need real-time performance. For the even more adventurous ones, there is Micro Core Linux, which is Tiny Core Linux without an X environment. The 7 MB iso file boots into a BusyBox prompt and extra applications can be downloaded and installed with the tce-wget command.
Probably the best use case for Tiny Core Linux is a sort of portable environment that the user carries in his pocket on a USB pen drive. Tiny Core Linux isn't really beautiful or fancy, but it does what it has to do and has a fair amount of well-known software packages. That said, it still looks a bit too rough. One illustration of this is that there's no wireless support out-of-the-box, although the user can solve this problem simply by installing the wireless and wireless_tools extensions via a fixed network. Another problem is the package manager, which could use some work. Hopefully we'll soon see some spin-off distributions coming out of the Tiny Core community. At least one has been started already: NetbootCD, which allows the user to download and run several Linux netboot installers.
to post comments)