There was an error in this gadget

+1

Saturday, September 04, 2010

Minimalistic Computing: TinyCore Linux 3.0

4 comments
This is first of series of articles I intend to write focused on lightweight, less resource hungry GNU/Linux distributions and applications. One might be tempted to ask - why would I need less resource hungry minimalistic applications ?; especially considering the fact that operating systems these days occupy GB(s) of disk-space and need huge amount of RAM to function properly.

There isn't a simple answer to this, while running some of these applications might give life to some of older hardware lying around, the other possible use include in low powered devices like cheap tablets, routers etc, or they might be useful on a device which provides access to services off cloud with all the applications hosted online instead of at client side, and finally, the reason could very well be emotional - these minimalistic applications might satisfy most of your needs while still being lightning fast.

If you thought Damn Small Linux or Puppy Linux are small, hold your breath. Tiny Core Linux is a minimalistic GNU/Linux distribution based on Linux kernel 2.6, it comes with graphical environment and provides facility to download and install applications from the Internet and it fits into 10MB of ISO file ( Mini Core or console only version of Tiny Core Linux fits in 6MB of ISO file) . One of the reasons it fits into such a small compressed ISO file is owing to it using lightweight minimalistic libraries and applications which only implement a subset of most essential features.

Tiny Core Linux uses Tiny X as a replacement for X Server to reduce memory footprint and occupy lesser space. To significantly reduce memory required by library files Tiny Core Linux uses uClibc instead of glibc. uClibc is primarily meant for embedded platform which have to work under sever memory constraints and hence uClibc has a much smaller footprint as compared to libc, while providing most of the functionality as provided by libc; Infact most of the applications compiled using glibc could be easily compiled with uClibc with no or little modification. Tiny X also uses uClibc.

To further reduce size Tiny Core Linux uses BusyBox instead of GNU tools, BusyBox provides most of the functionality as provided by GNU Tools in a much smaller size and thus is specifically optimized for a resource constrained environment like that of embedded systems.
One of the ways BusyBox has managed to reduce size overheads is by having a single program take care of all the functionalities needed, instead of having separate program for each functionality with each having its file header, also this approach(of having one single application taking care of all the functionality) does away with the need to have separate library to share code between different applications; Thus reducing memory footprint and significantly cutting down space required. BusyBox was started way back in 1996 by Iconic Open source figure - Bruce Perens and since then it has been actively developed.

For providing graphical toolkit for applications which in turns calls primitives as provided by Tiny X, TinyCore Linux uses fltk or Fast Light Toolkit. Fast Light Toolkit is a cross-platform C++ based toolkit that provides graphical environment without being overly expensive on resources. It even supports 3D using OpenGL.

As for the Window Manager, As of version 3.0 TinyCore Linux has switched to flwm from jwm . flwm or Fast Light Window Manager, is based on fltk toolkit and provides a very basic window management functionality. It is completely written in C++ and has an extremely small footprint.

TinyCore Linux runs completely of RAM, which makes it extremely fast. Having bare minimum applications in a fully operational system further helps this. TinyCore Linux is not all hardware compatible nor does provide a complete desktop with all kind of fancy applications, it provides just enough functionality for someone to download and install application of Internet and customize distribution according to his needs.

I tested version 3.0 of TinyCore Linux which is their latest stable release, it came as a 10MB sized ISO. The test environment was (formerly) Sun VirtualBox running atop Ubuntu 10.04.


Different boot parameters for TinyCore Linux

Before TinyCore loads entire environment including GUI, one is offered number of options to configure system before booting into the system. These options take care of things like configuring graphical parameters, or configuring different aspects of TinyCore system before loading entire environment.

TinyCore offer four different modes of operation:
(a) Cloud/Internet
(b) Mount Mode: TCZ/Install
(c) Copy Mode: TCZ/Install + copy2fs.flg/lst
(d) Hybrid Mode: persistent /usr/local

The default mode of operations is Cloud/Internet, in this mode TinyCore Linux loads entirely in RAM, it further uses appbrowser and internet to download applications. The applications downloaded remain in RAM and are removed once session is closed i.e system is restarted.Any modification made to the system is lost when system boots.

In the next two mode of operation i.e Mount Mode and Copy Mode, a Personal Persistent Repository is maintained which houses modifications(downloaded applications for instance) made to the system during last sessions. This prevents you from re-downloading needed application again whenever you start new session. Difference between Mount Mode and Copy Mode is, in mount mode applications stored in PPR which are marked to be mounted are mounted in RAM , this saves disk space and when one needs an application it is loaded in the RAM. In case of Copy Mode applications in PPR are copied into the RAM instead of being mounted, this makes boot process tad slower but there is increase in performance of system once system loads up fully. Copy Modes allows you to selectively load some applications in RAM and mount other. In Hybrid Mode applications are installed as loopback on local file system.

One can choose different boot modes by specifying boot parameters at the boot loader screen.
A more detailed description of different modes of operation and how to activate them is provided here.

Once you boot into TinyCore Linux you are greeted with an impressive GUI desktop, impressive because for 10MB distribution it looks really good. There is a neat looking wallpaper with TinyCore Linux logo and banner which reads - Toolkit for linux, which is very apt considering that TinyCore Linux allows you to download and install different applications and build the system the way you want it to be and comes with almost no applications preinstalled but comes with enough framework to allow you to download and install application off internet.

TinyCore Desktop

There is a simple bar that allows you to chose commonly used applications at the bottom of the screen, there is xterminal which provides you console, and control panel which allows you to configure different parameters of the system(including installing TinyCore onto different media), and an appbrowser which allows you to download and install application from Internet. These are the basic applications TinyCore Linux comes preinstalled with.

TinyCore Linux, in screen shot Appbrowser,control Panel and Terminal


Appbrowser is an application in TinyCore Linux that allows you to install different applications onto the system from the Internet, there are limited number of applications available in repository, however the list includes some of the more useful open-source applications. Appbrowser also takes care of dependency issues, if it finds that certain application requested to be downloaded and installed needs particular set of libraries and application, it will automatically download and install them as well.

AppBroswer Installing application abiword-dependencies, before installing abiword.

If one wants, one can easily install TinyCore Linux onto hard-disk; Though it is not something I would recommend, as TinyCore Linux is more apt running from USB Drive or CD-Drive, and to be used for specific specialized purpose. There are better general purpose distribution with relatively smaller footprint(compared to distributions like Fedora or Ubuntu) that could be installed for desktop needs. However, in case you decide to install TinyCore Linux onto hard-disk, there is a really good walk through here, hosted at TinyCore Linux website.

In Conclusion, TinyCore Linux might not be suitable or recommended for a modern computer with humongous amount of resource as there are better distributions for such a platform, but for computer severely lacking in resources, TinyCore Linux could prove to be savior. On such a resource constraint system you could customize distribution with your own choice of applications, having only the required applications and services should makes things faster. TinyCore Linux uses applications like TinyX , BusyBox which are meant for Embedded Platform , this makes it as possible alternative for embedded platform(like Intelligent Panels, Netbooks (Maybe ? ), Kiosks. Overall, I had lots of fun playing around with a distribution with footprint of 10MB.

Useful Links:

TinyCore Linux
fltk
flwm
BusyBox


Article Written by : Ambuj Varshney (blogambuj@gmail.com)
For Linux on Desktop Blog , http://linuxondesktop.blogspot.com
(C) 2010 , Ambuj Varshney