COMP 3000 2011 Report: CrunchBang
The Linux distribution I chose is CrunchBang which is commonly referred to as '#!'. CrunchBang is "designed to offer a modern, full-featured GNU/Linux system without sacrificing performance."<ref name="About CrunchBang">About Crunchbang Linux. (2011, Feb. 18). Retrieved October 14, 2011 from http://crunchbanglinux.org/wiki/about</ref> CrunchBang boasts that it is faster than Debian, while still being compatible with all Debian packages. Another key feature is that it is highly configurable due to its usage of several highly-customizable components (Openbox window manager, Thunar file manager and Conky system monitor in particular are all mentioned on the about page)<ref name="About CrunchBang"/>.
From browsing the forums, it appears that CrunchBang appeals to users who like to customize their desktop appearance. Some of the most popular threads on the forums are those for screenshots of the users' desktops. In fact, they have monthly threads solely for this purpose, and the threads for August 2011 and September 2011 had over 1000 replies each. There is also a DeviantArt page for users of CrunchBang to post their themes, screenshots, desktops and such.
CrunchBang was created and continues to be developed by Philip Newborough<ref name="wiki">CrunchBang Linux. (2011, Sep. 26). Retrieved October 14, 2011 from http://en.wikipedia.org/wiki/CrunchBang_Linux</ref> who goes by the name "corenominal" on the CrunchBang forums and on his blog. Philip does all of the development himself.
The latest release of CrunchBang, called CrunchBang 10 "Statler" R20110207, is available in 32-bit and 64-bit versions with either the Openbox window manager or the Xfce4 desktop manager. They are available for download as torrents from the CrunchBang downloads page. The installation CD images are between 640-690MB in size, while a fresh installation of 64-bit CrunchBang took about 1.7 GB of hard disk space.
CrunchBang is based on Debian GNU/Linux,<ref name="About CrunchBang"/> with the latest release being based on Debian 6.<ref>CrunchBang 10 “Statler” r20110207. (2011, Feb. 8). Retrieved October 14, 2011 from http://crunchbanglinux.org/blog/2011/02/08/crunchbang-10-statler-r20110207/</ref> Previous to this, CrunchBang was based off of Ubuntu releases, up to Ubuntu 9.04.01.<ref>Development release: CrunchBang 10 “Statler” Alpha 1. (2010, March 19). Retrieved October 14, 2011 from http://crunchbanglinux.org/blog/2010/03/19/development-release-crunchbang-10-statler-alpha-1/</ref>
After booting CrunchBang from an installation image, it gives you the option of running it as one of two live sessions, performing a text-based installation, or a graphical installation (as well as running a memory test). As there were two versions of CrunchBang, one using the Openbox window manager, and another using xfce4, I chose to install both, doing the graphical installation for the Openbox version, and text-based for xfce.
I performed both installations from VirtualBox, giving both systems identical hardware (16 GB hard disks, 512 MB of memory). Aside from the obvious difference in appearance between the two installation methods, there was no difference in the installation.
Both installations asked for: language, location, keyboard configuration, host name, user's full name, username and password, time zone, and partitioning options.
The time taken for both installation methods was roughly 10 minutes and, just after installation, used roughly 1.7 GB of space on the virtual hard drive (though their virtual disk files on the host operating system were around 1.9 GB). No problems were experienced during either installation of CrunchBang, though there were problems installing the VirtualBox guest additions afterwards. Following the steps listed on their how-to wiki page did not work. Even after installing the appropriate packages as instructed, running the VBoxLinuxAdditions.run script simply produced no output. Following the instructions found on their forums at http://crunchbanglinux.org/forums/post/129314/#p129314 solved the issue. The same issue occurred in Debian, so it is not just a CrunchBang issue.
One feature I particularly liked was the startup script that it came with. Upon the first launch of a CrunchBang installation, a terminal is open running a script to automatically install a number of extra pieces of software, such as Java, OpenOffice, printer drivers, LAMP, an optional upgrade to the Liquorix/Zen kernel, as well as performing software updates.
Both versions, Openbox and xfce, have a minimalist look and feel, showing simply a black background with the CrunchBang logo in the center and a dark task bar on the bottom. Notably, system information is displayed on the right side of the desktop, containing such things as the RAM usage and total RAM, swap usage, disk usage and CPU usage, as well as a list of common shortcut keys.
The main menu can be reached by a keyboard shortcut (super+space with openbox, super+alt with xfce), while the xfce version also has a small menu that pops open from the left side of the screen when the mouse is brought near.
Comparison to Debian
As CrunchBang boasts that it is a fast distribution, and since it is based upon Debian, I installed Debian in VirtualBox, giving it the same amount of memory as CrunchBang so as to compare the two. The Debian installation was much slower and larger, taking about an hour to install and occupying 3.2 GB of hard disk space. To be fair, Debian's installation disk was smaller (172 MB) and it had to download more than CrunchBang did which accounts for some of the difference in installation time.
To compare the speed of the two distributions I timed how long they took to compile the Linux kernel, using the latest stable release: 3.0.4. CrunchBang took 2 hours, 53 minutes and 4.917 seconds to compile while Debian took 2 hours, 39 minutes and 11.651 seconds to compile which somewhat belies CrunchBang's claim of being faster than Debian.
CrunchBang does boot up significantly faster than Debian. It took about 19 seconds for CrunchBang to boot to the login screen, whereas Debian took about 37 seconds. With only the startup processes and terminal running, Debian hovered around 324 MB of memory usage and 0.3-1.0% CPU usage, while CrunchBang used 267 MB of memory and 2-3% CPU usage. Killing the Conky process (which displays system information on the desktop) dropped CrunchBang to roughly 1% CPU usage.
CrunchBang boasts that it is highly configurable, so I took a look at some of the things that can be customized. The menu does not automatically add programs when they are installed but items can be added to it by editing an xml file or from a GUI utility. Using the GUI utility, obconf, it was easy to add new items to the menu. One neat thing it could do is have scripts run from the menu, for example to list all the files that had recently been opened.
New themes for the window borders are basically a text file that contains colors and border sizes, similar to CSS, and images to be used as the icons on a window. The content of windows can by styled with GTK themes.
Other things, such as the login screen, Conky information and menus can all be configured. The learning curve for getting getting started with customization can be steep. The Openbox theme guide alone is over 5500 words. Since each of these custom elements use their own specification, changing all of them to one's liking would take a not insignificant amount of time to develop proficiency.
CrunchBang does feel more responsive than Debian while running in VirtualBox. Starting programs feels like it takes less time, and the boot process is certainly faster. Out of the box, it has fewer running processes than Debian and the lower memory usage reflects that. Running Conky, causing the desktop to display constantly-updating system information does cause it to use slightly more CPU than Debian. I am not sure why Debian managed to compile the Linux kernel faster than CrunchBang did.
CrunchBang is a nice platform for those who like customizing the look of their system. That is not to say that the same could not be done on other systems. All of the customizable pieces of software contained in CrunchBang could be installed on Debian or other Linux distributions allowing for the same level of customization. CrunchBang itself does not actually help with the configuration, aside from including the different packages as part of the installation.
I really liked the startup script that goes lets the user pick a number of commonly-used packages to install. I wish other platforms had this; it would make installing Windows quite a bit faster.
One funny feature of the latest version of CrunchBang is related to its release name, Statler, who is a character on the Muppets. Periodically, a little window will appear on the desktop delivering insults and backhanded compliments to the user.
CrunchBang is almost as easy to use as some of the more popular distributions, such as Debian and Ubuntu. The only thing I've found to be less intuitive was the main menu since it is accessed via a keyboard shortcut or a right mouse click, as opposed to the normal way of having the menu open by clicking on a button on a task bar, as in Windows, Ubuntu, Debia, etc. It might not look as pretty out of the box as more popular distributions, but that is easily remedied by applying custom themes. Personally, I like the clean, minimalist appearance it presents.
Packaging Format and Utilities
As a distribution based off of Debian, it is not surprising that CrunchBang uses the same package format, .deb, and the same package manager, dpkg. This package manager installs, removes and supplies information about .deb packages<ref name=dpkg>dpkg. (2011, 16 Sept.). Retrieved November 3, 2011 from http://en.wikipedia.org/wiki/Dpkg</ref>. CrunchBang comes installed with several higher level package management tool that rely on dpkg and other tools, including Advanced Packaging Tool (APT), [wiki.debian.org/Aptitude aptitude], synaptic and tasksel. It also contains two utilities for manipulating .deb files: dpkg-deb and dpkg-split.
Listing Installed Packages
Using the tools that come with CrunchBang there are several ways to get of installed packages. From the command line, you can use "dpkg --list" or "aptitude search '~i'". Aptitude can also open in a text-based shellby typing just 'aptitude' and from within there it all installed software can be listed. Alternatively, open the Synaptic package manager, click on the status button and then select 'Installed' from the list on the left.
Adding and Removing Packages
Packages can be added with dpkg by using 'dpkg --install <package_name>.deb' where the package is a file in your current working directory. They can be removed by using 'dpkg --remove <package_name>' (which will leave its configuration file) or 'dpkg --purge <package_name>' (which will remove the configuration file as well). This method is somewhat inconvenient for adding packages since they must first be downloaded. Using APT, 'apt-get install <package_name>' will install a particular package along with all of its dependencies, while 'apt-get remove <package_name>' will remove the package. Apt-get remove has an optional --purge flag (apt-get --purge remove <package_name>) that will remove configuration files, similar to dpkg --purge<ref name=pkgtools>The Debian Package Management Tools. Debian GNU/Linux FAQ. (2011, 27 Aug.). Retrieved November 3, 2011 from http://www.debian.org/doc/manuals/debian-faq/ch-pkgtools.en.html</ref>.
Aptitude can install packages from the command line via 'aptitude install <package_name>' and remove them with 'aptitude remove <package_name>' and 'aptitude purge <package_name>'. Once again, remove leaves the configuration files intact while purge removes them. Aptitude can also add and remove packages from its shell, launched by typing 'aptitude' at the command line. Synaptic provides a lists of all the packages that are installed and can be installed. Installing new packages is as simple as clicking on the package to be installed and marking it for installation, then clicking apply. Installed packages can be marked for removal (which leaves configuration files intact) or for complete removal (which removes configuration files), which are then removed when apply is clicked.
Without adding any update sites manually, Synaptic found 28751 packages, of which 1168 were installed. Note that this is after the post-installation script ran, which did update the list of available packages (apt-get update). To compare, I ran apt-get update on Debian and then checked the number of packages known by my Debian installation and Synaptic listed 28130, of which 1304 were installed. CrunchBang had mostly the same packages available as Debian, with the addition of having some closed source software that Debian excludes, such as Java.
CrunchBang comes installed with several packages that contribute to the goal of a customizable distribution, such as various Openbox and GTK+ sciprts, CruncBang wallpapers, Conky (which is not even Debian's package list), Thunar (along with a modified package that adds context-menu items for Dropbox to Thunar), and a modified Dropbox binary for use with CrunchBang.
I checked if the package list contained developer software that I had used in the past, and it had Git (already installed), Eclipse, Mercurial, Python, QT libraries and QT creator, Boost libraries and Java in many flavors (J2EE, OpenJDK, etc.) and many libraries and services used with Java (Glassfish, Spring, JBoss). Some of these were not the most recent versions. For example, the version of Eclipse listed was 3.5.2 whereas the latest release is at 3.7.1, and for the Java JDK only J2EE 6u26 was listed which is three updates behind, as well as Java 7 having been released.
Major Package Versions
Here are the version numbers and upstream sources of various major software packages included in CrunchBang, and packages that are central to the system. Notably, CrunchBang comes with no email client. The Liquorix/Zen Kernel is not part of the installation itself, but is included as an option in the post-installation script so I included it in this list.
|X.org X Window System||7.5+8||http://www.x.org/wiki/ (Debian-specific version: http://wiki.debian.org/XStrikeForce)|
|Dash (Debian Almquist Shell)||0.5.5.1-7.4||http://gondor.apana.org.au/~herbert/dash/|
|Coreutils (GNU core utilities)||8.5.1||http://www.gnu.org/s/coreutils/|
Comparison of Packages to their Latest Stable Release
The Linux Kernel included in CrunchBang is version 2.6.32-38 which was committed on April 15, 2011<ref>Commit information. (Nov. 5, 2011). Retrieved November 5, 2011 from http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=commit;h=b3c054cfafca5b01027c88baf0f3bcc8a992c101</ref>. The latest stable release, as of November 4, 2011, is 3.0.8 which was released on October 25, 2011<ref>The Linux Kernel Archives. (No date). Retrieved November 5, 2011 from http://www.kernel.org/</ref>. This has not been modified at all for CrunchBang, and is included as it is the same kernel that Debian 6 Squeeze uses.
CrunchBang includes the Liquorix/Zen Kernel version 2.6.36-25 which was released on December 10, 2010<ref>No title. (No date). Retrieved November 5, 2011 from http://biglinux.c3sl.ufpr.br/packages/maverick/main/linux/source/linux-liquorix-2.6_2.6.36-25_i386.changes</ref>. The latest release, 3.0.0-10, was released on October 9, 2011<ref>Liquorix Sources. (No date). Retrieved November 5, 2011 from http://liquorix.net/sources/3.0/</ref>. This package was not modified for inclusion in CrunchBang. It was included as an optional install since many CrunchBang users were installing this kernel and so Corenominal wanted to make it easier for users to install<ref>[Why drive when you can FLY?] Liquorix/Zen Kernel. (2011, Jan. 1). Retrieved November 4, 2011 from http://crunchbanglinux.org/forums/topic/10817/why-drive-when-you-can-fly-liquorixzen-kernel/</ref>. It appears to be a popular kernel choice among CrunchBang users due to its promises of increased desktop performance.
CrunchBang includes version 2.11.2-10 of glibc which is a fork of the main branch made by Debian developers. It was release on January 29, 2011<ref>“eglibc” 2.11.2-10 source package in Debian. (No date). Retrieved November 5, 2011 from https://launchpad.net/debian/+source/eglibc/2.11.2-10</ref> and is the latest stable release of this fork. The latest stable release of libc proper is 2.14 which was released on June 1, 2011<ref>GNU C Library. (2011, Oct. 29). Retrieved on November 5, 2011 from http://en.wikipedia.org/wiki/GNU_C_Library</ref>. This has not been modified at all for CrunchBang, and is included as it is the same version of libc that is included in Debian 6 Squeeze.
The version of X.org included in CrunchBang is 7.5+8 which was released on October 15, 2010<ref>“xorg” 1:7.5+8 source package in Debian. (No date). Retrieved on November 5, 2011 from https://launchpad.net/debian/+source/xorg/1:7.5+8</ref>. The latest stable release of X.org is 7.6, released on December 20, 2011<ref>Releases. (2010, Dec. 21). Retrieved on November 5, 2011 from http://www.x.org/wiki/Releases?action=show&redirect=XorgReleases</ref>, however the version included in CrunchBang is a forked version maintained by the Debian team. 7.5+8 is the latest stable release of the Debian fork. It has not been modified by the developer of CrunchBang. It's included as it is the same version that is included in Debian 6 Squeeze.
CrunchBang includes version 2.20.1-2 of GTK+ which is a fork of 2.20.1 made by the Debian developers. It was released on October 25, 2010<ref>“gtk+2.0” 2.20.1-2 source package in Debian. (No date). Retrieved on November 5, 2011 from https://launchpad.net/debian/+source/gtk+2.0/2.20.1-2</ref>. This is the latest stable release of the Debian fork, but GTK+ proper is at 3.0.12 which was released July 28, 2011<ref>GTK+ Sources. (No date). Retrieved November 5, 2011 from http://ftp.gnome.org/pub/gnome/sources/gtk+/3.0/</ref>. It's included as it is the same version that is included in Debian 6 Squeeze.
The version of Qt included in CrunchBang is 4.6.3-4+squeeze1 which was accepted by Debian on May 21, 2011<ref>Accepted qt4-x11 4:4.6.3-4+squeeze1 (source all amd64). (2011, May 21). Retrieved on November 5, 2011 from http://lists.debian.org/debian-changes/2011/05/msg00018.html</ref>. This is a modified fork of Qt made by the Debian developers and is the latest stable release of their fork. The latest stable release of Qt is 4.7.4, released on September 1, 2011<ref>Qt 4.7.4 released. (2011, Sept. 1). Retrieved on November 5, 2011 from http://labs.qt.nokia.com/2011/09/01/qt-4-7-4-released/</ref>. It's included as it is the same version that is included in Debian 6 Squeeze.
CrunchBang includes version 4.1-3 of Bash which is a fork of 4.1 made by the Debian team. It was released on May 19, 2010<ref>“bash” 4.1-3 source package in Debian. (No date). Retrieved November 5, 2011 from https://launchpad.net/debian/+source/bash/4.1-3</ref>. This is the latest stable release of the Debian fork, but Bash proper is at 4.2 which was released February 13, 2011<ref>Bash (Unix shell). (2011, Oct. 25). Retrieved November 5, 2011 from http://en.wikipedia.org/wiki/Bash_%28Unix_shell%29</ref>. It's included as it is the same version that is included in Debian 6 Squeeze.
The version of Dash included in CrunchBang is 0.5.5.1-7.4 which was released on December 20, 2010<ref>“dash” 0.5.5.1-7.4 source package in Debian. (No date). Retrieved on November 5, 2011 from https://launchpad.net/debian/+source/dash/0.5.5.1-7.4</ref>. This is a modified fork of Dash made by the Debian developers and is the latest stable release of their fork. The latest stable release of Dash is 0.5.7, released on July 8, 2011<ref>Dash files. (No date). Retrieved on November 5, 2011 from http://gondor.apana.org.au/~herbert/dash/files/</ref>. It's included as it is the same version that is included in Debian 6 Squeeze.
CrunchBang includes version 8.5-1 of coreutils which is a fork made by the Debian team. It was released on May 19, 2010<ref>“coreutils” source package in Squeeze (No date). Retrieved November 5, 2011 from https://launchpad.net/debian/squeeze/+source/coreutils</ref>. This is the latest stable release of the Debian fork, but the official stable release of coreutils is at 8.14 which was released October 12, 2011<ref>GNU Core Utilties. (2011, Oct. 12). Retrieved November 5, 2011 from http://en.wikipedia.org/wiki/GNU_Core_Utilities</ref>. It's included as it is the same version that is included in Debian 6 Squeeze.
The version of Busybox included in CrunchBang is 1.17.1-8 which was released on November 20, 2010<ref>“busybox” 1:1.17.1-8 source package in Debian (No date). Retrieved on November 5, 2011 from https://launchpad.net/debian/+source/busybox/1:1.17.1-8</ref>. This is a modified fork of Busybox made by the Debian developers and is the latest stable release of their fork. The latest stable release of Busybox is 1.19.3, released on October 29, 2011<ref>Busybox. (No date). Retrieved on November 5, 2011 from http://busybox.net/</ref>. It's included as it is the same version that is included in Debian 6 Squeeze.
CrunchBang includes version 9.0.597.45~r70550-1 of Chromium which is a fork made by the Debian developers. It was released on January 1, 2011<ref>“chromium-browser” 9.0.597.45~r70550-1 source package in Debian. (No date). Retrieved November 5, 2011 from https://launchpad.net/debian/+source/chromium-browser/9.0.597.45~r70550-1</ref>. This is an experimental release of the Debian fork, just as all releases of Chromium could be considered experimental, since it is for testing and development of the Chrome browser. As of the writing of this on November 5, 2011, the latest release of Chromium is 17.0.930.0<ref>Index of /releases. (No date). Retrieved on November 5, 2011 from http://src.chromium.org/viewvc/chrome/releases/?sortby=date</ref>. Chrome used to be included in CrunchBang and I believe they switched to Chromium since it's open source and therefore easier to customize, which fits in with the goals of the distribution.
The version of Openbox included in CrunchBang is 188.8.131.52-1 which was released on May 19, 2010<ref>“openbox” 184.108.40.206-1 source package in Debian. (No date). Retrieved on November 6, 2011 https://launchpad.net/debian/+source/openbox/220.127.116.11-1</ref>. This is a modified fork of Openbox made by the Debian developers and is the latest stable release of their fork. The latest stable release of Openbox is 3.5.0, released on August 1, 2011<ref>Openbox. (2011, Oct. 25). Retrieved on November 6, 2011 from http://en.wikipedia.org/wiki/Openbox</ref>. This particular version is used since it is the same one included in Debian, however the package included in Debian as an optional install. Openbox comes installed on CrunchBang since it provides a large part of CrunchBang's ability to be customized.
CrunchBang includes version 4.6.2 of Xfce which was released on May 22, 2011<ref>Index of /xfce/ (No date). Retrieved November 6, 2011 from http://archive.xfce.org/xfce/</ref>. The latest release of Xfce is 4.8 which was released on January 16, 2011<ref>Xfce 4.8 Released. (2011, Jan. 16). Retrieved on November 6, 2011 from http://www.xfce.org/about/news/?post=1295136000</ref>. Xfce was included with CrunchBang as an alternative to Openbox since they both provide similar features, aside from Xfce having a less customizable menu system but having a more stable compositor, and are both largely customizable<ref>Openbox vs XFCE? (2010, Mar. 1). Retrieved November 6, 2011 from http://crunchbanglinux.org/forums/post/57087/#p57087</ref>
The version of Conky included in CrunchBang is 1.8.0-1+squeeze1 which was released on October 8, 2010<ref>“conky” 1.8.0-1+squeeze1 source package in Debian. (No date). Retrieved on November 6, 2011 https://launchpad.net/debian/+source/conky/1.8.0-1+squeeze1</ref>. This is a modified fork of Conky made by the Debian developers and is the latest stable release of their fork. The latest stable release of Conky is 1.8.1, released on October 5, 2010<ref>Conky. (No date). Retrieved on November 6, 2011 from http://conky.sourceforge.net/</ref>. This particular version was included since it is the latest stable release made for Debian 6 Squeeze, but oddly enough this package is not listed in Debian's package maner. It is included in CrunchBang because it contributes to the ability to customize the look and usage of the system.
CrunchBang includes version 1.0.2-1+b1 of Thunar which was released on Jun 3, 2011<ref>“thunar” 1.0.2-1 source package in Debian. (No date). Retrieved November 6, 2011 from https://launchpad.net/debian/+source/thunar/1.0.2-1/</ref>. The latest release of Thunar is 1.2.3 which was released on January 16, 2011<ref>Thunar. (2011, Jan. 16). Retrieved on November 6, 2011 from http://en.wikipedia.org/wiki/Thunar</ref>. Thunar was included in CrunchBang since it is a highly configurable file manager that was designed for the Xfce Desktop Environment, but also works well with other desktop managers, such as Openbox<ref>How To Set Thunar As The Default #!Crunchbang Filemanager. (2009, Nov. 11). Retrieved November 6, 2011 from http://crunchbanglinux.org/wiki/howto/set_thunar_as_default_filemanager</ref>. Like Xfce, Thunar is listed by Debian's package manager, but comes installed by default on CrunchBang.
CrunchBang uses the same dependency-based boot sequence as Debian, where the individual init.d scripts contain a block at the top (LSB fields) that determine which processes the script should run before or after, in what run levels the script should be started or stopped and more<ref>LSBInitScripts. (2011, Jul. 4). Retrieved November 6, 2011 from http://wiki.debian.org/LSBInitScripts</ref>.
At boot up, CrunchBang executes init which checks the configuration file /etc/inittab<ref>The Debian Boot Process. (2007, Jan. 18). Retrieved on November 6, 2011 from http://qref.sourceforge.net/quick/ch-system.en.html#s-boot</ref>, which tells it to run the script /etc/init.d/rcS (which just runs the script /etc/init.d/rc with the argument 'S') and then run the script /etc/init.d/rc 7 more times with the arguments 0 through 6, in ascending order.
The script /etc/init.d/rc will, when given an argument X, run all the kill scripts in /etc/rcX.d (scripts starting with K) followed by all the start scripts in /etc/rcX.d (scripts starting with S). All the script names, which are just symlinks to scripts in /etc/init.d, follow the format of the regular expression '[KS][0-9][0-9].+'. The scripts are executed in ascending order based on the number that comes after the K or S so long as the conditions laid out in the LSB fields are satisfied, which may not be the case as the various init scripts might run concurrently. I figured this out by examining the inittab and rc files, as well as the files in the /etc/rcX.d directories.