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 which 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. The default desktop is very basic, as are most things with TinyMe. There are some system stats in the upper right hand corner, the taskbar at the bottom with system clock and assorted icons. 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.
Midori is the web browser that comes with the distribution. It uses the WebKit rendering engine and the GTK+ 2 interface, and aims to be lightweight and fast.
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,
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 some would 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 it considering it is 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 for programs like AbiWord or the Smart manager itself are 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 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: UNIX shell |
RPM | rpm | 5.2.1-0.20091118.10 | http://rpm5.org/ | Appears up to date<ref>RPM5 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 |
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: 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: lightweight |
Openbox | openbox | 3.4.11.2-1 | http://openbox.org/ | Up to date <ref>Openbox: News: openbox.org 2010-2-8 (Last accessed 2011-11-16)</ref> | There is nothing that indicates this has been modified | Highly configurable, next generation window manager with extensive standards support Rationale: program for managing windows |
Initialization
When the system is started up, the processor begins by executing the Basic Input/Output System(BIOS). The BIOS's job is to preform a check of the hardware then search for an active and bootable device in order of preference to load into memory. In this case the device is the hard disk, where the first 512 bytes contain the Master Boot Record (MBR) which is given control by the BIOS once it has been loaded into RAM. The job of the MBR is to find an active partition then load it's boot record into RAM and execute it. The first 446 bytes of the MBR is program code, the next 64 bytes are the partition table, and the final two server as a validation check of the MBR. Once an active partition has been found in the partition table and all other partitions are inactive, it's boot record is loaded and given control. This boot loader's job is to load the Linux kernel. These two boot loaders make up the GRand Unified Bootloader (GRUB), which has the option of displaying available kernels to the user. GRUB does this by booting a boot loader in between the two that understands the file system containing the kernel image. After consulting the file system, the default, or chosen, kernel image and initrd
image are loaded into memory and the kernel image is invoked. The kernel image is more of a compressed image than an executable. TinyMe's image is a zImage, meaning it is smaller than 512KB, that was previously compressed with zlib. The head of this image does some minimal hardware setup and then decompressed the kernel image into memory. The initial-RAM disk(initrd
) that was in memory is copied into RAM and mounted. This initrd
serves as a temporary root file system so the kernel can boot without having to mount any physical disks. Once the kernel finished setting up interupts, performing memory configuration and loading the initial RAM disk, a call is made to kernel_thread
to start the init
function. This starts the first user-space applications which are compiled with the standard C library. Once /sbin/init
has been started, the login screen is displayed. <ref>Inside the Linux boot process ibm.com 2006-5-31 (Last accessed 2011-11-16)</ref>
References
<references />