COMP 3000 2011 Report: TinyMe
Part I
Background
TinyMe is an extremely lightweight Linux distribution based on Unity and Mandriva. Note that it is "TinyMe" and not "TinyME" as that would cause unwanted reminiscence of WinME. It was developed by KDulcimer and Gettinther with help from the Unity Linux development team to be as bloat and lag-free as possible. It exists to ease the installation of Unity Linux on older computers and provide a minimal environment for people who like fast/light systems. Unlike other Linux distributions, TinyMe is a rolling release, so once installed only rare circumstances would force a re-installation. There is currently no stable release version of the 250MB distribution, however there is a non-stable release on their website and a LiveCD with an older version can be purchased from On-Disk.com. The latest version boasts lightweight tools such as AbiWord, MuPDF and Parcellite. TinyMe has two planned versions, the Acorn release has programs included that are fitted for a minimalist distribution and is the only version currently available, while the proposed Droplet release would allow you to choose your programs. As of 06-04-2011 TinyMe is in hibernation due to the lead developer KDulcimer taking some personal time off. However, there is talk of revival and basing it on Linux Mint.
Installation/Startup
Upon obtaining the ISO, you must choose one of two installation routes: real or virtual. A real installation would install TinyMe as the operating system for the machine, replacing the previous operating system if there was one. A virtual installation would use a virtualization program such as VMWare Player or VirtualBox to create a virtual machine with TinyMe as the operating system, all on top of the existing operating system.
Real Installation
1. Burn the ISO to a CD.
2. Insert the CD into the machine.
3. Boot from CD.
Virtual Installation
1. Create a virtual machine using the ISO.
2. Power the new machine.
Allow the system to set itself up until you are prompted with choosing a language. After you choose a language, timezone and keyboard layout (Figure 1), you are given the login information (Figure 2). The root account has username and password 'root', and the guest account has username and password 'guest'. Click login and enter the desired information into the login screen (Figure 3). The specified account is then logged in and the desktop is presented. TinyMe is now fully functional on the machine.
Basic Operation
Since TinyMe is targeted at older computers, it was only allotted 256MB of RAM and a single processor for testing using VMware Player. Major slowdowns only occurred when doing something unreasonable such as creating text files millions of characters long. In such cases, the system freezes for a few seconds while the offending program is terminated and then it resumes normal operation.
The default desktop is very basic, as are most things with TinyMe. There are some system stats in the upper right hand corner and the task bar at the bottom with system clock and assorted icons. Task bars are the only places icons are allowed. The wallpaper is handled by Nitrogen and the system stats appear to be a permanent part of it (Figure 4). LXPanel handles the taskbar(s), and provides great customizability for those who want it while remaining easy to use. Openbox works well as the window manager, being both intuitive and customizable. It is interesting note that there are three options for viewing files: icons, compact list and detailed list, however there are options in preferences for the sizes of both big and small icons.
The start menu contains all the programs that come with the distribution that a normal user would require. Some of the major ones such as Midori, PCMan File Manager and LilyTerm are already on the task bar. They are grouped into six categories depending on their applications. Anything requiring an internet connection is grouped under 'Internet'. Workplace or school related programs are under 'Office'. 'Tools' contains programs that deal with the operating system, such as customization, system tools, managers and terminals as well as basic editors and the calculator. The other three categories are self-explanatory, they each contain programs related to their name.
Under the 'Tools', or on the task bar, is Medit. This little program provides functionality not expected of the system's basic text editor, including a popup terminal window. That means it can be used in place of vi or emacs, so all the editing is done outside the terminal with easy access between the two. It maintains a character count as well as the location of the cursor and the insertion mode in the bottom right corner of the window. It also provides functions such as find and replace, go to line, show line numbers and even allows multiple tabs.
What operating system would be complete without a few games? TinyMe, being the lightweight distribution it is, only provides two games: Sudoku Savant and ChickensForLinux. Sudoku Savant is a standard sudoku game which provides both randomly generated puzzles and the means to make your own. ChickensForLinux (Figure 5) is an apocalyptic shooter where chickens preparing to detonate the planet and you must stop them from running across the screen or it's all over. It is fast-paced, funny and makes up nicely for the lack of other games, although a mouse is highly recommended.
User Evaluation
Understandably, using Openbox as the session and window manager is the way to go when it comes to lightweight environments, but additional applications are required to handle the tasks that are not covered. LXPanel works well, but Nitrogen is not quite as user-friendly. When attempting to set a new wallpaper, the right-click option did nothing. As was discovered, Nitrogen is separate from Openbox, so any changes to a Nitrogen covered area had to be done by running Nitrogen itself. From there it becomes rather easy, but getting to that point was not so.
Openbox has its own issues when it comes to user-friendliness. While some of the things it provides are quite nice, the one thing it does not is a working search engine. The most immediate issue is that it is located in the 'Tool' drop down menu with the hotkey 'F3'; the norm for the search function is under the 'Edit' menu with the hotkey 'Ctrl+F'. There are some nice options when it comes to searching, such as searching in multiple folders or by file size, but when it comes to clicking 'Find' it rarely displays any files at all. Even searching in a folder with a single file, using the wildcard '*' turns up nothing. Searches can be done manually using some of the sort options, but such a search is extremely limited.
Midori is a great web browser, however there are a couple minor points to mention. By default Midori does not have scripts enabled, and when it starts it displays the last open tabs, but not the session. It also does not highlight the contents of the address bar when it is clicked on. Lastly, when downloading files, Midori warns you when you close the window that the transfer(s) will be cancelled even though they are complete. These problems are minor, but could come up often during everyday use.
Overall, TinyMe lives up to it's claims. It is by no means perfect (there is no GUI for shutting down), but it is hard to argue against a non-stable release.
Part II
Software Packaging
Software packaging for TinyMe is handled by Smart Package Manager, using the RPM package format. Smart also supports DEB and Slackware packaging formats if the user chooses to use them. A list of all packages currently installed on the system can be found by entering smart info
into the command-line, info
into the Smart shell, or on the Smart GUI. The Smart shell can be opened by entering su -c 'smart --shell'
into the command-line.
Packages can only be added from the command-line or the Smart shell by entering the command:
su -c 'smart install <package name>'
or
install <package name>
If installing from a url or a local disk, <package name> would be replaced with <url> or <path/to/rpm>, respectively.
Packages can be removed by using the GUI by right clicking on them and choosing remove, or by entering this command into the command-line or Smart shell:
su -c 'smart remove <package name>'
or
remove <package name>
The software catalog is extremely extensive, almost 800 packages, with trivial ones such as AbiWord or the Smart manager itself listed right next to ones for input/output drivers and development tools.
Major Package Versions
All package information was obtained by looking at the changelog for each package in the Smart Package Manager. Since the latest release of TinyMe was on 2010-08-20, it is understandable why some of the packages are so out-of-date. At the time, it is assumed most of the packages were as up-to-date as possible.
Software | Package Name | Version | Upstream Source | Vintage | Modifications | Details/Rationale |
---|---|---|---|---|---|---|
Kernel | kernel-firmware | 2.6.33.2-1 | http://www.kernel.org/ | Latest version: 3.1.1 <ref>The Linux Kernel Archive kernel.org 2011-11-16 (Last accessed 2011-11-16)</ref> 1 year and 7 months behind |
There is nothing that indicates this has been modified | Standard Linux kernel Rationale: standard kernel for a Linux system |
kernel-firmware-extra | 2010108-1 | |||||
kernel-headers | 2.6.33.4-1 | |||||
kernel-legacy-latest | 2.6.33.6 | |||||
Glibc | glibc | 6:2.11.1-8 | http://www.gnu.org/software/libc/ | Latest version: 2.4 <ref>GNU C Library gnu.org 2011-6-9 (Last accessed 2011-11-16)</ref> 5 months behind |
There is nothing that indicates this has been modified | Library that defines basic facilities Rationale: standard C library |
glib2.0-common | 2.24.1-1 | |||||
libglibmm2.4_1 | 2.22.1-1 | |||||
perl-Glib | 1.222-0.2 | |||||
X.org | xinitrc | 2.4.19-20 | http://www.x.org/wiki/ | Appears up to date | Modifications appear to have been made for use with Mandriva and for importation to Unity | Computer software system and network protocol that provides a basis for GUIs and rich input device capability for networked computers Rationale: GUI foundation |
xkbutils | 1.0.2-1 | |||||
Gtk+ | gtk+2.0 | r2.20.1-1 | http://www.gtk.org/ | Latest version: 2.24.8 <ref>GTK+ 2.24.8 gtk.org 2011-11-10 (Last accessed 2011-11-16)</ref> 1 year and 6 months behind |
There is nothing that indicates this has been modified | Multi-platform toolkit for creating graphical user interfaces Rationale: GUI toolkit |
libgtkmm2.4_1 | 2.17.1-1 | |||||
Bash | bash | 4.1-1 | http://www.gnu.org/software/bash/bash.html | Latest version: 4.2 <ref>Bash tiswww.case.edu/php/chet 2011-5-12 (Last accessed 2011-11-16)</ref> 1 year and 1 month behind |
There is nothing that indicates this has been modified | Free software UNIX shell Rationale: standard UNIX shell |
RPM | rpm | 5.2.1-0.20091118.10 | http://rpm5.org/ | Appears up to date<ref>RPM Project News rpm5.org 2009-7-7 (Last accessed 2011-11-16)</ref> | Modifications appear to have been made to prepare the repository for 64-bit packages | Package management system Rationale: package manager used by Unity Linux |
rpm-helper | 0.23.1-1 | |||||
rpmorphan | 1.8-2 | |||||
Midori | midori | 0.2.6-1 | http://www.twotoasts.de/index.php?/pages/midori_summary.html | Latest version: 0.4.2 <ref>Midori twotoasts.de 2011-11-11 (Last accessed 2011-11-16)</ref> 1 year and 5 months behind |
There is nothing that indicates this has been modified | Lightweight web browser Rationale: fast and lightweight |
Medit | medit | 0.9.4-3 | http://mooedit.sourceforge.net/ | Latest version: 1.0.93 <ref>Medit Source Code bitbucket.org/medit 2011-10-22 (Last accessed 2011-11-16)</ref> 1 year and 11 months behind |
There is nothing that indicates this has been modified | Programming and around-programming text editor Rationale: basic text editor |
Lilyterm | lilyterm | 0.9.9-0.pre7.1 | http://lilyterm.luna.com.tw/ | Latest version: 0.9.9-rc9 <ref>Lilyterm: Changelog: lilyterm.luna.com.tw 2011-7-14 (Last accessed 2011-11-16)</ref> 4 months behind |
There is nothing that indicates this has been modified | Terminal emulator designed to be fast and lightweight Rationale: fast and lightweight |
Openbox | openbox | 3.4.11.2-1 | http://openbox.org/ | Latest version: 3.5.0 <ref>Openbox: Changelog: openbox.org 2011-8-1 (Last accessed 2011-11-16)</ref> 1 year and 3 months behind |
There is nothing that indicates this has been modified | Highly configurable, next generation window manager with extensive standards support Rationale: lightweight window manager |
Initialization
Once the machine is powered, the Basic Input/Output System (BIOS) performs system integrity checks before loading the Master Boot Record (MBR) from /dev/sda
and executes it. MBR loads and executes the GRand Unified Bootloader (GRUB). GRUB loads the kernel image from /boot/vmlinuz-2.6.33.6-unity1.lgc
and the initrd image from /boot/initrd-2.6.33.6-unity1.lgc
, and executes the kernel. The kernel mounts the initrd image specificed by GRUB as the root file system and executes /sbin/init
. Init determines the Linux run level from /etc/inittab
, in this case 5, and begins executing programs from /etc/rc.d/rc5.d
. Only programs that start with an 'S' are executed, and it is done in alphanumeric order. <ref>The Linux Boot Process thegeekstuff.com 2011-2-7 (Last accessed 2011-12-16)</ref>
The following daemons are executed in order, but not always immediately following one another. When /etc/rc.d/rc5.d/S12syslog
is executed it runs /etc/rc.d/init.d/syslog
which initializes the system logging daemon syslogd and the kernel logging daemon klogd. These daemons are the facilities used by other daemons for logging messages. When /etc/rc.d/rc5.d/S14acpid
is executed it runs /etc/rc.d/init.d/acpid
which initializes the acpi daemon acpid. This daemon's job is to listen and dispatch Advanced Configuration and Power Interface (ACPI) events from the kernel. When /etc/rc.d/rc5.d/S54avahi-daemon
is executed it runs /etc/rc.d/init.d/avahi-daemon
which initializes the daemon avahi-daemon. This is a Zero Configuration networking (ZeroConf) daemon, which implements a multicast DNS (mDNS) stack, that allows programs running on a local network with no specific configuration to publish and discover services and hosts. When /etc/rc.d/rc5.d/S90crond
is executed it runs /etc/rc.d/init.d/crond
which initializes the cron daemon crond. This daemon is a time-based job scheduler commonly used for system maintenance or administration. Any cron jobs that were left out due to downtime are run by anacron. Once these and the other daemons (Figure 6) are initialized, the Simple Login Manager (SLiM) /usr/bin/slim.real
is executed. /sbin/dhclient
and the getties /sbin/mingetty
for tty(1-6) are loaded at this time. The Dynamic Host Configuration Protocol (DHCP) Client dhclient provides a means for configuring network interfaces and mingetty manages its assigned physical or virtual terminal. After logging in, slim.real loads the device drivers /etc/X11/X
and executes ck-launch-session. This starts openbox /usr/bin/openbox
which loads the task bar lxpanel, the system monitor conky and the library /usr/lib/menu-cached
, which speeds up menu generation. Finally, the desktop is presented.
References
<references />