Difference between revisions of "COMP 3000 2011 Report: CrunchBang"

From Soma-notes
Jump to navigation Jump to search
 
(130 intermediate revisions by the same user not shown)
Line 2: Line 2:


== Background ==
== Background ==
The Linux distribution I chose is [http://crunchbanglinux.org/ 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"/>.  
The Linux distribution I chose is [http://crunchbanglinux.org/ 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> GNU is a recursive definition which stands for "GNU is Not Unix." 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 [http://crunchbanglinux.org/forums/topic/14337/august-2011-screenshot-thread/ August 2011] and [http://crunchbanglinux.org/forums/topic/14874/september-2011-screenshot-thread/ September 2011] had over 1000 replies each. There is also a [http://crunchbang-linux.deviantart.com/gallery/ DeviantArt page] for users of CrunchBang to post their themes, screenshots, desktops and such.
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 [http://crunchbanglinux.org/forums/topic/14337/august-2011-screenshot-thread/ August 2011] and [http://crunchbanglinux.org/forums/topic/14874/september-2011-screenshot-thread/ September 2011] had over 1000 replies each. There is also a [http://crunchbang-linux.deviantart.com/gallery/ DeviantArt page] for users of CrunchBang to post their themes, screenshots, desktops and such.
Line 8: Line 8:
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 [http://crunchbanglinux.org/forums/ CrunchBang forums] and on [http://corenominal.org/ his blog]. Philip does all of the development himself.
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 [http://crunchbanglinux.org/forums/ CrunchBang forums] and on [http://corenominal.org/ 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 [http://crunchbanglinux.org/downloads/statler/20110207/ 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.
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 [http://crunchbanglinux.org/downloads/statler/20110207/ CrunchBang downloads page]. The installation CD (compact disc) images are between 640-690MB (Megabytes) in size, while a fresh installation of 64-bit CrunchBang took about 1.7 GB (Gigabytes) 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>
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>
Line 22: Line 22:
Both installations asked for: language, location, keyboard configuration, host name, user's full name, username and password, time zone, and partitioning options.
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 [http://crunchbanglinux.org/wiki/howto/virtualbox#installing_guest_additions 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.
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. According to their [http://crunchbanglinux.org/wiki/howto/virtualbox#installing_guest_additions how-to wiki page], the additions could be installed by performing the following:
# Boot CrunchBang in VirtualBox
# Install the <code>linux-headers-2.6-686</code> and <code>build-essential</code> packages
# In the VirtualBox menu, click on Devices/Install Guest Additions
# Open the terminal and run Thunar as root
# Navigate to the VBOXADDITIONS_* virtual CD
# Double click on VBoxLinuxAdditions-x86
# A terminal should open and display installation progress. Press enter to close it once complete
# Restart CrunchBang
However, this 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. Instead of the instructions listed above, one should instead:
# Boot CrunchBang in VirtualBox
# Run ''apt-get update'' and ''apt-get upgrade''
# Install the <code>linux-headers-2.6-686</code>, <code>build-essential</code> and <code>module-assistant</code> packages
# Run ''m-a prepare''
# Run ''sudo sh /media/cdrom/VBoxLinuxAdditions.run''
# Restart CrunchBang
After performing these steps, the VirtualBox guest additions were successfully installed. 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.
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 (which stands for "Linux, Apache, MySQL and PHP," and combines several commonly-used web-server packages together), an optional upgrade to the Liquorix/Zen kernel, as well as performing software updates.


== Basic Operation ==
== Basic Operation ==
[[File:desktops.png|thumb|left|Xfce4 desktop (left) compared to Openbox desktop (right)]]
[[File:desktops.png|thumb|left|Xfce4 desktop (left) compared to Openbox desktop (right)]]
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.
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 (random access memory) usage and total RAM, swap usage, disk usage and CPU usage, as well as a list of common shortcut keys.


[[File:menus.png|thumb|right|Openbox menu (left), xfce left side menu (center), xfce menu (right)]]
[[File:menus.png|thumb|right|Openbox menu (left), xfce left side menu (center), xfce menu (right)]]
Line 43: Line 59:
[[File:New_menu.png|thumb|right|Added a new sub-menu (Programming) with one item (Eclipse)]]
[[File:New_menu.png|thumb|right|Added a new sub-menu (Programming) with one item (Eclipse)]]
[[File:Theme.png|thumb|left|A custom desktop theme]]
[[File:Theme.png|thumb|left|A custom desktop theme]]
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.
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 graphical user interface (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.


[[File:Login.png|thumb|right|A custom login screen]]
[[File:Login.png|thumb|right|A custom login screen]]
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.
New themes for the window borders are basically a text file that contains colors and border sizes, similar to cascading style sheets in web pages, and images to be used as the icons on a window. The content of windows can by styled with GTK themes. GTK stands for GIMP Toolkit, and GIMP stands for GNU Image Manipulation Program.


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 [http://openbox.org/wiki/Help:Themes 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.
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 [http://openbox.org/wiki/Help:Themes 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.


== Usage Evaluation ==
== Usage Evaluation ==
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 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 (central processing unit) than Debian. I am not sure why Debian managed to compile the Linux kernel faster than CrunchBang did.


[[File:Insult.png|thumb|right|Statler periodically pops up on the desktop and insults the user]]
[[File:Insult.png|thumb|right|Statler periodically pops up on the desktop and insults the user]]
Line 60: Line 76:
One funny feature of the latest version of CrunchBang is related to its release name, [http://en.wikipedia.org/wiki/Statler_and_Waldorf 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.
One funny feature of the latest version of CrunchBang is related to its release name, [http://en.wikipedia.org/wiki/Statler_and_Waldorf 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.
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, Debian, 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.


= Part 2 =
= Part 2 =
== Software Packaging ==
== Software Packaging ==
=== Packaging Format and Utilities ===
=== Packaging Format and Utilities ===
As a distribution based off of Debian, it is not surprising that CrunchBang uses the same package format, [http://www.debian.org/doc/manuals/debian-faq/ch-pkg_basics .deb], and the same package manager, [http://www.debian.org/doc/manuals/debian-faq/ch-pkgtools.en.html 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 [http://wiki.debian.org/Apt Advanced Packaging Tool] (APT), [wiki.debian.org/Aptitude aptitude], [http://wiki.debian.org/Synaptic synaptic] and [http://wiki.debian.org/tasksel tasksel]. It also contains two utilities for manipulating .deb files: [http://manpages.ubuntu.com/manpages/hardy/man1/dpkg-deb.1.html dpkg-deb] and [http://manpages.ubuntu.com/manpages/oneiric/en/man1/dpkg-split.1.html dpkg-split].
As a distribution based off of Debian, it is not surprising that CrunchBang uses the same package format, [http://www.debian.org/doc/manuals/debian-faq/ch-pkg_basics .deb], and the same package manager, [http://www.debian.org/doc/manuals/debian-faq/ch-pkgtools.en.html 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 [http://wiki.debian.org/Apt Advanced Packaging Tool] (APT), [http://wiki.debian.org/Aptitude aptitude], [http://wiki.debian.org/Synaptic synaptic] and [http://wiki.debian.org/tasksel tasksel]. It also contains two utilities for manipulating .deb files: [http://manpages.ubuntu.com/manpages/hardy/man1/dpkg-deb.1.html dpkg-deb] and [http://manpages.ubuntu.com/manpages/oneiric/en/man1/dpkg-split.1.html dpkg-split].


=== Listing Installed Packages ===
=== Listing Installed Packages ===
[[File:Synaptic.png|thumb|right|The Synaptic Package Manager lists all the packages installed on the system]]
[[File:Synaptic.png|thumb|right|The Synaptic Package Manager lists all the packages installed on the system]]
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.
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 <nowiki>'~i'</nowiki>''. Aptitude can also open in a text-based shell by typing just ''aptitude'' and from within there it all installed software can be listed. Alternatively, open the Synaptic package manager by running ''synaptic'', click on the status button and then select 'Installed' from the list on the left.


=== Adding and Removing Packages ===
=== 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>.
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 can install and remove packages by clicking a checkmark on a package to be installed, or unchecking a package to be removed when the appropriate package is located from its GUI.
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.
 
=== Software Catalog ===
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. That being said, very few packages have been modified specifically for CrunchBang. Most of the CrunchBang-specific packages are extras such as wallpapers and Openbox themes.
 
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: Java Standard Edition (J2SE) Development Kit (JDK), Java Enterprise Edition (J2EE), OpenJDK, etc. It also contained 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 ==
== 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.
{| border="1"
! Package
! Version
! Latest Official Release
! Official Source
! Fork Source (If different)
|-
| Linux Kernel
| 2.6.32-38
| 3.1.2<ref>The Linux Kernel Archives. (No date). Retrieved November 23, 2011 from http://www.kernel.org/</ref>
| http://www.kernel.org/
| http://packages.debian.org/squeeze/kernel/linux-base
|-
| libc
| 2.11.2-10
| 2.14<ref>GNU C Library. (2011, Oct. 29). Retrieved on November 5, 2011 from http://en.wikipedia.org/wiki/GNU_C_Library</ref>
| http://www.gnu.org/s/libc/
| http://packages.debian.org/squeeze/libc6
|-
| X.org X Window System
| 7.5+8
| 7.6<ref>Releases. (2010, Dec. 21). Retrieved on November 5, 2011 from http://www.x.org/wiki/Releases?action=show&redirect=XorgReleases</ref>
| http://www.x.org/wiki/
| http://packages.debian.org/squeeze/xorg
|-
| GTK+
| 2.20.1-2
| 3.0.12<ref>GTK+ Sources. (No date). Retrieved November 5, 2011 from http://ftp.gnome.org/pub/gnome/sources/gtk+/3.0/</ref>
| http://www.gtk.org/
| http://packages.debian.org/squeeze/libgtk2.0-0
|-
| Qt 4
| 4.6.3-4+squeeze1
| 4.7.4<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>
| http://qt.nokia.com/
| http://packages.debian.org/squeeze/libqt4-core
|-
| Bash (Bourne-again Shell)
| 4.1-3
| 4.2<ref>Bash (Unix shell). (2011, Oct. 25). Retrieved November 5, 2011 from http://en.wikipedia.org/wiki/Bash_%28Unix_shell%29</ref>
| http://www.gnu.org/software/bash/
| http://packages.debian.org/squeeze/bash
|-
| Dash (Debian Almquist Shell)
| 0.5.5.1-7.4
| 0.5.7<ref>Dash files. (No date). Retrieved on November 5, 2011 from http://gondor.apana.org.au/~herbert/dash/files/</ref>
| http://gondor.apana.org.au/~herbert/dash/
| http://packages.debian.org/squeeze/dash
|-
| Coreutils (GNU core utilities)
| 8.5-1
| 8.14<ref>GNU Core Utilties. (2011, Oct. 12). Retrieved November 5, 2011 from http://en.wikipedia.org/wiki/GNU_Core_Utilities</ref>
| http://www.gnu.org/s/coreutils/
| http://packages.debian.org/squeeze/coreutils
|-
| Busybox
| 1.17.1-8
| 1.19.3<ref>Busybox. (No date). Retrieved on November 5, 2011 from http://busybox.net/</ref>
| http://busybox.net/
| http://packages.debian.org/squeeze/busybox
|-
| Chromium
| 9.0.597.45~r70550-1
| 17.0.948.0<ref>Index of /releases. (No date). Retrieved on November 23, 2011 from http://src.chromium.org/viewvc/chrome/releases/?sortby=date</ref>
| http://dev.chromium.org/Home
| https://launchpad.net/debian/+source/chromium-browser/9.0.597.45~r70550-1
|-
| Crunchbang-Dropbox64
| 1.0.10-1
| 1.2.48<ref>Dropbox (service). (2011, Nov. 22). Retrieved November 23, 2011 from http://en.wikipedia.org/wiki/Dropbox_%28service%29</ref>
| http://www.dropbox.com/
| None available
|-
| Openbox
| 3.4.11.1-1
| 3.5.0<ref>Openbox. (2011, Oct. 25). Retrieved on November 6, 2011 from http://en.wikipedia.org/wiki/Openbox</ref>
| http://openbox.org/
| http://packages.debian.org/squeeze/openbox
|-
| Xfce4
| 4.6.2
| 4.8.0<ref name=xfce>Xfce 4.8 Released. (2011, Jan. 16). Retrieved on November 6, 2011 from http://www.xfce.org/about/news/?post=1295136000</ref>
| http://www.xfce.org/
| Not a fork
|-
| Conky
| 1.8.0-1+squeeze1
| 1.8.1<ref>Conky. (No date). Retrieved on November 6, 2011 from http://conky.sourceforge.net/</ref>
| http://conky.sourceforge.net/
| http://packages.debian.org/squeeze/conky
|-
| Thunar
| 1.0.2-1+b1
| 1.2.3<ref>Thunar. (2011, Jan. 16). Retrieved on November 6, 2011 from http://en.wikipedia.org/wiki/Thunar</ref>
| http://thunar.xfce.org/
| http://packages.debian.org/squeeze/thunar
|}
<br>
=== Comparison of Packages to their Latest Stable Release ===
==== Packages at the the same version as in Debian ====
Most of the packages included in CrunchBang are the same versions included in Debian Squeeze, with very few that have been modified for or created for CrunchBang. This makes sense in the context of CrunchBang; it is a distribution about customizing the look and feel, not customizing the functionality, and is developed by one person. Of the packages listed above, most versions are forks made by the Debian team: the Linux Kernel<ref>“linux-2.6” 2.6.32-38 source package in Debian. (No date). Retrieved November 7, 2011 from https://launchpad.net/debian/+source/linux-2.6/2.6.32-38</ref>, Libc<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>, X.org<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>, GTK+<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>, Qt<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>, Bash<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>, Dash<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>, coreutils<ref>“coreutils” source package in Squeeze (No date). Retrieved November 5, 2011 from https://launchpad.net/debian/squeeze/+source/coreutils</ref>, Busybox<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>, Chromium<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>, Openbox<ref>“openbox” 3.4.11.1-1 source package in Debian. (No date). Retrieved on November 6, 2011 https://launchpad.net/debian/+source/openbox/3.4.11.1-1</ref>, Conky<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> and Thunar<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>. These are all the latest stable releases of the Debian forks. They were included as CrunchBang Statler is based on Debian Squeeze and there was no need for further modification of these packages. Debian included these versions since the Debian team modified/maintained them to ensure stability.
With the exception of Thunar, Conky, Chromium and Openbox, all of these packages come installed by default on Debian. They are included in CrunchBang because the functionality they supplied to Debian (kernel, graphical libraries, window system, shells, etc.) was a necessary part of creating a unified desktop environment. In addition, the features CrunchBang needed from them did not differ from the features Debian needed from them. This is in contrast to a package like GNOME (GNU Network Object Model Environment), which is included as part of Debian's standard installation, but replaced in favor of Openbox and xfce in Crunchbang, as these are central to the purpose of CrunchBang.
The following table will discuss some of the differences between these packages and their upstream counterparts, as well as the services they provide.
{| border="1"
! Package
! Purpose and Differences from Upstream Source
|-
| Linux Kernel
| While a list of the individual modifications done to version 2.6.32-38 would be too long to list (the diff file alone is almost 15MB), most of the changes listed in the change log inside the [https://launchpad.net/debian/+archive/primary/+files/linux-2.6_2.6.32-38.diff.gz diff file] are just driver updates. The Linux Kernel provides the core operating system functionality, notably a scheduler, resource management and drivers.
|-
| Libc
| After reading through the changed log in the [https://launchpadlibrarian.net/62706613/eglibc_2.11.2-10.diff.gz diff file], I have found that the Debian fork consists almost entirely of bugfixes and translations, and the developers give their releases amusing names (@!%$&! you, I use Debian, Perl Sucks, Smash Everything with a _Huge Steamroller_!). The sheer quantity of the changes was quite significant, with the diff file itself coming in just under 120,000 lines. Libc provides the functionality for the C programming language defined in the ANSI C standard.
|-
| X.org
| The changes to xorg in 7.5+8 (over 7.5) were fairly small, consisting of small typo and bug fixes, removing obsolete dependencies and adding support for new architectures. This is available from the changelog within the [https://launchpad.net/debian/+archive/primary/+files/xorg_7.5%2B8.tar.gz source package]. Xorg provides the basis for GUIs.
|-
| GTK+
| There were few changes to GTK+ 2.20.1-2 over 2.20.1, consisting entirely of bug fixes. Most of the fixes were not even made by the Debian team; they were cherry picked from an upstream source. This information is available from the [https://launchpad.net/debian/+archive/primary/+files/gtk%2B2.0_2.20.1-2.diff.gz diff file]. GTK+ is a toolkit that contains widgets used to make GUIs.
|-
| Qt 4
| The changes to Qt 4.6.3-4+squeeze1 over 4.6.3 are fairly minor. As reported in the changelog of the [https://launchpad.net/debian/+archive/primary/+files/qt4-x11_4.6.3-4%2Bsqueeze1.debian.tar.gz source], the fork is quite small and consists mostly of patches cherry picked from the upstream source and bug fixes, and includes a fairly major fix to decrease the failure rate of creating new processes in Qt. Similar to GTK+, Qt provides widgets for creating GUIs, as well as a framework for C++.
|-
| Bash
| Very few changes were made to Bash 4.1-3 compared to 4.1. According to the [https://launchpadlibrarian.net/43718282/bash_4.1-3.diff.gz diff file], it is composed entirely of incorporating five upstream patches, changes to the readme, small fixes of .bashrc and a crash fix. Bash is a Unix shell, which interprets and executes command-line arguments.
|-
| Dash
| Dash 0.5.5.1-7.4 contains numerous changes over 0.5.5.1. According to the [https://launchpadlibrarian.net/60686775/dash_0.5.5.1-7.4.diff.gz diff file], the changes are mostly bug fixes, translations and removing or adding dependencies. Dash is a Unix shell, like Bash, but smaller and with fewer features.
|-
| Coreutils
| Coreutils 8.5-1 includes very little on top of 8.5. It provides a workaround for a bug in fstat and stops a test from running due to a bug in gcc. This was taken from the [https://launchpadlibrarian.net/48769017/coreutils_8.5-1.diff.gz diff file]. Coreutils provides many basic Unix tools, such as ls, dir, cp and rm.
|-
| Busybox
| Busybox 1.17.1-8 incorporates many changes on top of 1.17.1. According to the changelog in the [https://launchpad.net/debian/+archive/primary/+files/busybox_1.17.1-8.debian.tar.gz source] there are updates to the configuration re-application of previous patches and many bug fixes and improvements. Busybox provides small versions of common Unix utilities, such as ls, ps, pwd and mkdir.
|-
| Chromium
| Though the table above states Chromium's "stable" release, all releases of Chromium are considered experimental; stable releases are released as Chrome. 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. Chromium 9.0.597.45~r70550-1 had no changes added to it specifically over 9.0.597.45. Instead, its purpose was to incorporate changes made by the Debian maintainers to previous versions of Chromium. This was taken from the change log in the [https://launchpad.net/debian/+archive/primary/+files/chromium-browser_9.0.597.45%7Er70550-1.debian.tar.gz source code]. Chromium is a web browser.
|-
| Openbox
| Openbox comes installed on CrunchBang since it provides a large part of CrunchBang's ability to be customized. Openbox 3.4.11.1-1 changes very little over 3.4.11.1. According to the changelog in the [https://launchpad.net/debian/+archive/primary/+files/openbox_3.4.11.1-1.debian.tar.gz source] the updates related mostly to packaging and installation, and removing files that were no longer necessary. Openbox is a window manager and replaced GNOME in CrunchBang.
|-
| Conky
| Conky is included in CrunchBang because it contributes to the ability to customize the look and usage of the system. Oddly enough, the package included in CrunchBang is maintained by Debian, but does not show up in Debian's package list by default. Conky 1.8.0-1+squeeze made numerous improvements over Conky 1.8.0. According to the change log in the [https://launchpad.net/debian/+archive/primary/+files/conky_1.8.0-1%2Bsqueeze1.debian.tar.gz source] the changes included crash and bug fixes, and support for a whole bunch of new configuration options and standard variables inside Conky scripts. Interestingly, this version of Conky bases itself off of an Ubuntu version, which itself bases itself off of the official Conky release. Conky is a system monitor which can be used to display the system status, such as CPU usage, RAM usage and internal temperature.
|-
| Thunar
| 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>. Thunar is listed by Debian's package manager, but not installed, while it comes installed by default on CrunchBang. According to the changelog in the [https://launchpadlibrarian.net/48984906/thunar_1.0.2-1.diff.gz diff file] Thunar 1.0.2-1 contains very little in the way of changes over 1.0.2. Essentially, this version just removed a patch applied in a previous fork of Thunar since it was originally taken from an upstream source and 1.0.2 already incorporates the change. It also added a dependency. Thunar is a file manager that is designed for usage with xfce, but works well with Openbox. It replaces Nautilus which is used in Debian.
|}
<br>
==== Other packages ====
The following are some packages included in CrunchBang that are not based off of Debian sources.
===== Crunchbang Dropbox =====
Crunchbang includes a modified version of Dropbox. There are no changes to the Dropbox code itself (the binary included with CrunchBang has the same md5sum as the official 1.0.10 Dropbox binary), it only added scripts that helped with installation and usage. Since Dropbox plugs in to the Nautilus File Manager in Linux and CrunchBang uses Thunar instead, the package uses xdg-open to install Dropbox without Nautilus. It also includes a script for adding a Dropbox pipemenu to the Openbox menu. This information was found by looking at the change log and scripts included in the package.
This package likely comes installed with CrunchBang for convenience. It's a very common program to install as it is probably the most popular file synchronization software, but difficult to install and run on CrunchBang judging by the number of topics on the forums having to do with troubleshooting the setup and installation.
===== Xfce =====
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>. Although the version of Xfce included with CrunchBang is not a forked version, I believe CrunchBang included this version of Xfce (4.6.2) since it is the same one included in Debian 6.0 Squeeze. Even though Xfce 4.8 was released on January 16, 2011<ref name=xfce/>, this was very likely not enough time in advance of Squeeze's release on February 6th to make it in to the distribution. It is odd that CrunchBang would not include the latest version of Xfce, one of the most important packages to the identity of the distribution, since it was released three weeks before CrunchBang Statler was.


== Initialization ==
== Initialization ==
CrunchBang uses LSBInit, the same dependency-based, concurrent boot sequence as Debian<ref>LSBInitScripts. (2011, Jul. 4). Retrieved November 6, 2011 from http://wiki.debian.org/LSBInitScripts</ref>. It uses order numbers from the names of the symbolic links to the script and prerequisites defined in startup scripts to choose what order scripts are to run in.
[[File:Processes.png|thumb|right|CrunchBang's process tree shortly after login]]
At startup, the primary processes that are run which give it the custom look-and-feel the user has configured are Openbox, Conky, Tint2, Nitrogen and Thunar. All of these are persistent processes, except for Nitrogen which will be run and then terminate.
Upon switching to a multi-user stat runlevel(2, 3, 4 or 5), one of the processes that LSBInit will run is gdm (GNOME Display Manager), which allows for sessions to be started on an X server<ref>X display manager (program type). (2011, Nov. 7). Retrieved November 24, 2011 from http://en.wikipedia.org/wiki/X_display_manager_%28program_type%29</ref>. Before it is run, all filesystems must be mounted and x11 has to already be running. Gdm will be run as root.
Once a user logs in, gdm launches Openbox. Openbox is a window manager, which controls the look-and-feel of windows, as well as their position within the GUI<ref>Window manager. (2011, Oct. 26). Retrieved November 24, 2011 from http://en.wikipedia.org/wiki/Window_manager</ref>. When Openbox is run, it launches its autostart script which is located in /home/<user>/.config/openbox/autostart.sh. This will cause numerous programs to be run, including Thunar, Conky, Tint2 and Nitrogen. All of these, including Openbox, are executed as the user.
Of the programs listed above that Openbox runs, the first to be run is Thunar as it appears first in the autostart script. It is run with the --daemon flag, starting it in daemon mode. This allows Thunar to stay running even when all windows have been closed which allows new windows to be opened up more quickly.
The next program run by Openbox's autostart is Nitrogen. It gets run with the --restore option which causes it to reset the display picture to a stored value. Essentially, this will set the wallpaper to what is set in ~/.config/nitrogen/bg-saved.cfg, returning the wallpaper to the same image that was used the previous run. After the wallpaper has been set, Nitrogen terminates.
After Nitrogen runs, tint2 is run in the background. Tint2 reads in a configuration file at ~/.config/tint2/tint2rc and creates a taskbar at the bottom of the screen by default, or wherever it has been configured. It is used to display panels and taskbars in Openbox.
One of the last programs that Openbox's autostart script runs is Conky. It is run in quiet mode (-q) to prevent it from displaying any output. Conky is a system monitor which is used to display configurable information on the desktop. By default, conky displays the host, uptime, RAM usage, swap usage, disk usage, CPU usage and various keyboard shortcuts on the upper right corner of the desktop. This can be changed by modifying ~/.conkyrc.


= Part 3 =
Unless otherwise specified, the information on the functionality of the programs was obtained from their respective manual pages.


= References =
= References =
<references />
<references />

Latest revision as of 16:22, 5 December 2011

Part 1

Background

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> GNU is a recursive definition which stands for "GNU is Not Unix." 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 (compact disc) images are between 640-690MB (Megabytes) in size, while a fresh installation of 64-bit CrunchBang took about 1.7 GB (Gigabytes) 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>

Installation/Startup

CrunchBang boot menu

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.

Choosing the language in a graphical installation (left) and a text-based installation (right)

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.

Installation progress of the graphical installer (left) and text-based installer (right)

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. According to their how-to wiki page, the additions could be installed by performing the following:

  1. Boot CrunchBang in VirtualBox
  2. Install the linux-headers-2.6-686 and build-essential packages
  3. In the VirtualBox menu, click on Devices/Install Guest Additions
  4. Open the terminal and run Thunar as root
  5. Navigate to the VBOXADDITIONS_* virtual CD
  6. Double click on VBoxLinuxAdditions-x86
  7. A terminal should open and display installation progress. Press enter to close it once complete
  8. Restart CrunchBang

However, this 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. Instead of the instructions listed above, one should instead:

  1. Boot CrunchBang in VirtualBox
  2. Run apt-get update and apt-get upgrade
  3. Install the linux-headers-2.6-686, build-essential and module-assistant packages
  4. Run m-a prepare
  5. Run sudo sh /media/cdrom/VBoxLinuxAdditions.run
  6. Restart CrunchBang

After performing these steps, the VirtualBox guest additions were successfully installed. 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 (which stands for "Linux, Apache, MySQL and PHP," and combines several commonly-used web-server packages together), an optional upgrade to the Liquorix/Zen kernel, as well as performing software updates.

Basic Operation

Xfce4 desktop (left) compared to Openbox desktop (right)

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 (random access memory) usage and total RAM, swap usage, disk usage and CPU usage, as well as a list of common shortcut keys.

Openbox menu (left), xfce left side menu (center), xfce menu (right)

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.

Customization

Added a new sub-menu (Programming) with one item (Eclipse)
A custom desktop theme

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 graphical user interface (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.

A custom login screen

New themes for the window borders are basically a text file that contains colors and border sizes, similar to cascading style sheets in web pages, and images to be used as the icons on a window. The content of windows can by styled with GTK themes. GTK stands for GIMP Toolkit, and GIMP stands for GNU Image Manipulation Program.

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.

Usage Evaluation

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 (central processing unit) than Debian. I am not sure why Debian managed to compile the Linux kernel faster than CrunchBang did.

Statler periodically pops up on the desktop and insults the user

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, Debian, 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.

Part 2

Software Packaging

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), aptitude, synaptic and tasksel. It also contains two utilities for manipulating .deb files: dpkg-deb and dpkg-split.

Listing Installed Packages

The Synaptic Package Manager lists all the packages installed on the system

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 shell by typing just aptitude and from within there it all installed software can be listed. Alternatively, open the Synaptic package manager by running synaptic, 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.

Software Catalog

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. That being said, very few packages have been modified specifically for CrunchBang. Most of the CrunchBang-specific packages are extras such as wallpapers and Openbox themes.

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: Java Standard Edition (J2SE) Development Kit (JDK), Java Enterprise Edition (J2EE), OpenJDK, etc. It also contained 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.

Package Version Latest Official Release Official Source Fork Source (If different)
Linux Kernel 2.6.32-38 3.1.2<ref>The Linux Kernel Archives. (No date). Retrieved November 23, 2011 from http://www.kernel.org/</ref> http://www.kernel.org/ http://packages.debian.org/squeeze/kernel/linux-base
libc 2.11.2-10 2.14<ref>GNU C Library. (2011, Oct. 29). Retrieved on November 5, 2011 from http://en.wikipedia.org/wiki/GNU_C_Library</ref> http://www.gnu.org/s/libc/ http://packages.debian.org/squeeze/libc6
X.org X Window System 7.5+8 7.6<ref>Releases. (2010, Dec. 21). Retrieved on November 5, 2011 from http://www.x.org/wiki/Releases?action=show&redirect=XorgReleases</ref> http://www.x.org/wiki/ http://packages.debian.org/squeeze/xorg
GTK+ 2.20.1-2 3.0.12<ref>GTK+ Sources. (No date). Retrieved November 5, 2011 from http://ftp.gnome.org/pub/gnome/sources/gtk+/3.0/</ref> http://www.gtk.org/ http://packages.debian.org/squeeze/libgtk2.0-0
Qt 4 4.6.3-4+squeeze1 4.7.4<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> http://qt.nokia.com/ http://packages.debian.org/squeeze/libqt4-core
Bash (Bourne-again Shell) 4.1-3 4.2<ref>Bash (Unix shell). (2011, Oct. 25). Retrieved November 5, 2011 from http://en.wikipedia.org/wiki/Bash_%28Unix_shell%29</ref> http://www.gnu.org/software/bash/ http://packages.debian.org/squeeze/bash
Dash (Debian Almquist Shell) 0.5.5.1-7.4 0.5.7<ref>Dash files. (No date). Retrieved on November 5, 2011 from http://gondor.apana.org.au/~herbert/dash/files/</ref> http://gondor.apana.org.au/~herbert/dash/ http://packages.debian.org/squeeze/dash
Coreutils (GNU core utilities) 8.5-1 8.14<ref>GNU Core Utilties. (2011, Oct. 12). Retrieved November 5, 2011 from http://en.wikipedia.org/wiki/GNU_Core_Utilities</ref> http://www.gnu.org/s/coreutils/ http://packages.debian.org/squeeze/coreutils
Busybox 1.17.1-8 1.19.3<ref>Busybox. (No date). Retrieved on November 5, 2011 from http://busybox.net/</ref> http://busybox.net/ http://packages.debian.org/squeeze/busybox
Chromium 9.0.597.45~r70550-1 17.0.948.0<ref>Index of /releases. (No date). Retrieved on November 23, 2011 from http://src.chromium.org/viewvc/chrome/releases/?sortby=date</ref> http://dev.chromium.org/Home https://launchpad.net/debian/+source/chromium-browser/9.0.597.45~r70550-1
Crunchbang-Dropbox64 1.0.10-1 1.2.48<ref>Dropbox (service). (2011, Nov. 22). Retrieved November 23, 2011 from http://en.wikipedia.org/wiki/Dropbox_%28service%29</ref> http://www.dropbox.com/ None available
Openbox 3.4.11.1-1 3.5.0<ref>Openbox. (2011, Oct. 25). Retrieved on November 6, 2011 from http://en.wikipedia.org/wiki/Openbox</ref> http://openbox.org/ http://packages.debian.org/squeeze/openbox
Xfce4 4.6.2 4.8.0<ref name=xfce>Xfce 4.8 Released. (2011, Jan. 16). Retrieved on November 6, 2011 from http://www.xfce.org/about/news/?post=1295136000</ref> http://www.xfce.org/ Not a fork
Conky 1.8.0-1+squeeze1 1.8.1<ref>Conky. (No date). Retrieved on November 6, 2011 from http://conky.sourceforge.net/</ref> http://conky.sourceforge.net/ http://packages.debian.org/squeeze/conky
Thunar 1.0.2-1+b1 1.2.3<ref>Thunar. (2011, Jan. 16). Retrieved on November 6, 2011 from http://en.wikipedia.org/wiki/Thunar</ref> http://thunar.xfce.org/ http://packages.debian.org/squeeze/thunar


Comparison of Packages to their Latest Stable Release

Packages at the the same version as in Debian

Most of the packages included in CrunchBang are the same versions included in Debian Squeeze, with very few that have been modified for or created for CrunchBang. This makes sense in the context of CrunchBang; it is a distribution about customizing the look and feel, not customizing the functionality, and is developed by one person. Of the packages listed above, most versions are forks made by the Debian team: the Linux Kernel<ref>“linux-2.6” 2.6.32-38 source package in Debian. (No date). Retrieved November 7, 2011 from https://launchpad.net/debian/+source/linux-2.6/2.6.32-38</ref>, Libc<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>, X.org<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>, GTK+<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>, Qt<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>, Bash<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>, Dash<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>, coreutils<ref>“coreutils” source package in Squeeze (No date). Retrieved November 5, 2011 from https://launchpad.net/debian/squeeze/+source/coreutils</ref>, Busybox<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>, Chromium<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>, Openbox<ref>“openbox” 3.4.11.1-1 source package in Debian. (No date). Retrieved on November 6, 2011 https://launchpad.net/debian/+source/openbox/3.4.11.1-1</ref>, Conky<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> and Thunar<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>. These are all the latest stable releases of the Debian forks. They were included as CrunchBang Statler is based on Debian Squeeze and there was no need for further modification of these packages. Debian included these versions since the Debian team modified/maintained them to ensure stability.

With the exception of Thunar, Conky, Chromium and Openbox, all of these packages come installed by default on Debian. They are included in CrunchBang because the functionality they supplied to Debian (kernel, graphical libraries, window system, shells, etc.) was a necessary part of creating a unified desktop environment. In addition, the features CrunchBang needed from them did not differ from the features Debian needed from them. This is in contrast to a package like GNOME (GNU Network Object Model Environment), which is included as part of Debian's standard installation, but replaced in favor of Openbox and xfce in Crunchbang, as these are central to the purpose of CrunchBang.

The following table will discuss some of the differences between these packages and their upstream counterparts, as well as the services they provide.

Package Purpose and Differences from Upstream Source
Linux Kernel While a list of the individual modifications done to version 2.6.32-38 would be too long to list (the diff file alone is almost 15MB), most of the changes listed in the change log inside the diff file are just driver updates. The Linux Kernel provides the core operating system functionality, notably a scheduler, resource management and drivers.
Libc After reading through the changed log in the diff file, I have found that the Debian fork consists almost entirely of bugfixes and translations, and the developers give their releases amusing names (@!%$&! you, I use Debian, Perl Sucks, Smash Everything with a _Huge Steamroller_!). The sheer quantity of the changes was quite significant, with the diff file itself coming in just under 120,000 lines. Libc provides the functionality for the C programming language defined in the ANSI C standard.
X.org The changes to xorg in 7.5+8 (over 7.5) were fairly small, consisting of small typo and bug fixes, removing obsolete dependencies and adding support for new architectures. This is available from the changelog within the source package. Xorg provides the basis for GUIs.
GTK+ There were few changes to GTK+ 2.20.1-2 over 2.20.1, consisting entirely of bug fixes. Most of the fixes were not even made by the Debian team; they were cherry picked from an upstream source. This information is available from the diff file. GTK+ is a toolkit that contains widgets used to make GUIs.
Qt 4 The changes to Qt 4.6.3-4+squeeze1 over 4.6.3 are fairly minor. As reported in the changelog of the source, the fork is quite small and consists mostly of patches cherry picked from the upstream source and bug fixes, and includes a fairly major fix to decrease the failure rate of creating new processes in Qt. Similar to GTK+, Qt provides widgets for creating GUIs, as well as a framework for C++.
Bash Very few changes were made to Bash 4.1-3 compared to 4.1. According to the diff file, it is composed entirely of incorporating five upstream patches, changes to the readme, small fixes of .bashrc and a crash fix. Bash is a Unix shell, which interprets and executes command-line arguments.
Dash Dash 0.5.5.1-7.4 contains numerous changes over 0.5.5.1. According to the diff file, the changes are mostly bug fixes, translations and removing or adding dependencies. Dash is a Unix shell, like Bash, but smaller and with fewer features.
Coreutils Coreutils 8.5-1 includes very little on top of 8.5. It provides a workaround for a bug in fstat and stops a test from running due to a bug in gcc. This was taken from the diff file. Coreutils provides many basic Unix tools, such as ls, dir, cp and rm.
Busybox Busybox 1.17.1-8 incorporates many changes on top of 1.17.1. According to the changelog in the source there are updates to the configuration re-application of previous patches and many bug fixes and improvements. Busybox provides small versions of common Unix utilities, such as ls, ps, pwd and mkdir.
Chromium Though the table above states Chromium's "stable" release, all releases of Chromium are considered experimental; stable releases are released as Chrome. 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. Chromium 9.0.597.45~r70550-1 had no changes added to it specifically over 9.0.597.45. Instead, its purpose was to incorporate changes made by the Debian maintainers to previous versions of Chromium. This was taken from the change log in the source code. Chromium is a web browser.
Openbox Openbox comes installed on CrunchBang since it provides a large part of CrunchBang's ability to be customized. Openbox 3.4.11.1-1 changes very little over 3.4.11.1. According to the changelog in the source the updates related mostly to packaging and installation, and removing files that were no longer necessary. Openbox is a window manager and replaced GNOME in CrunchBang.
Conky Conky is included in CrunchBang because it contributes to the ability to customize the look and usage of the system. Oddly enough, the package included in CrunchBang is maintained by Debian, but does not show up in Debian's package list by default. Conky 1.8.0-1+squeeze made numerous improvements over Conky 1.8.0. According to the change log in the source the changes included crash and bug fixes, and support for a whole bunch of new configuration options and standard variables inside Conky scripts. Interestingly, this version of Conky bases itself off of an Ubuntu version, which itself bases itself off of the official Conky release. Conky is a system monitor which can be used to display the system status, such as CPU usage, RAM usage and internal temperature.
Thunar 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>. Thunar is listed by Debian's package manager, but not installed, while it comes installed by default on CrunchBang. According to the changelog in the diff file Thunar 1.0.2-1 contains very little in the way of changes over 1.0.2. Essentially, this version just removed a patch applied in a previous fork of Thunar since it was originally taken from an upstream source and 1.0.2 already incorporates the change. It also added a dependency. Thunar is a file manager that is designed for usage with xfce, but works well with Openbox. It replaces Nautilus which is used in Debian.


Other packages

The following are some packages included in CrunchBang that are not based off of Debian sources.

Crunchbang Dropbox

Crunchbang includes a modified version of Dropbox. There are no changes to the Dropbox code itself (the binary included with CrunchBang has the same md5sum as the official 1.0.10 Dropbox binary), it only added scripts that helped with installation and usage. Since Dropbox plugs in to the Nautilus File Manager in Linux and CrunchBang uses Thunar instead, the package uses xdg-open to install Dropbox without Nautilus. It also includes a script for adding a Dropbox pipemenu to the Openbox menu. This information was found by looking at the change log and scripts included in the package.

This package likely comes installed with CrunchBang for convenience. It's a very common program to install as it is probably the most popular file synchronization software, but difficult to install and run on CrunchBang judging by the number of topics on the forums having to do with troubleshooting the setup and installation.

Xfce

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>. Although the version of Xfce included with CrunchBang is not a forked version, I believe CrunchBang included this version of Xfce (4.6.2) since it is the same one included in Debian 6.0 Squeeze. Even though Xfce 4.8 was released on January 16, 2011<ref name=xfce/>, this was very likely not enough time in advance of Squeeze's release on February 6th to make it in to the distribution. It is odd that CrunchBang would not include the latest version of Xfce, one of the most important packages to the identity of the distribution, since it was released three weeks before CrunchBang Statler was.

Initialization

CrunchBang uses LSBInit, the same dependency-based, concurrent boot sequence as Debian<ref>LSBInitScripts. (2011, Jul. 4). Retrieved November 6, 2011 from http://wiki.debian.org/LSBInitScripts</ref>. It uses order numbers from the names of the symbolic links to the script and prerequisites defined in startup scripts to choose what order scripts are to run in.

CrunchBang's process tree shortly after login

At startup, the primary processes that are run which give it the custom look-and-feel the user has configured are Openbox, Conky, Tint2, Nitrogen and Thunar. All of these are persistent processes, except for Nitrogen which will be run and then terminate.

Upon switching to a multi-user stat runlevel(2, 3, 4 or 5), one of the processes that LSBInit will run is gdm (GNOME Display Manager), which allows for sessions to be started on an X server<ref>X display manager (program type). (2011, Nov. 7). Retrieved November 24, 2011 from http://en.wikipedia.org/wiki/X_display_manager_%28program_type%29</ref>. Before it is run, all filesystems must be mounted and x11 has to already be running. Gdm will be run as root.

Once a user logs in, gdm launches Openbox. Openbox is a window manager, which controls the look-and-feel of windows, as well as their position within the GUI<ref>Window manager. (2011, Oct. 26). Retrieved November 24, 2011 from http://en.wikipedia.org/wiki/Window_manager</ref>. When Openbox is run, it launches its autostart script which is located in /home/<user>/.config/openbox/autostart.sh. This will cause numerous programs to be run, including Thunar, Conky, Tint2 and Nitrogen. All of these, including Openbox, are executed as the user.

Of the programs listed above that Openbox runs, the first to be run is Thunar as it appears first in the autostart script. It is run with the --daemon flag, starting it in daemon mode. This allows Thunar to stay running even when all windows have been closed which allows new windows to be opened up more quickly.

The next program run by Openbox's autostart is Nitrogen. It gets run with the --restore option which causes it to reset the display picture to a stored value. Essentially, this will set the wallpaper to what is set in ~/.config/nitrogen/bg-saved.cfg, returning the wallpaper to the same image that was used the previous run. After the wallpaper has been set, Nitrogen terminates.

After Nitrogen runs, tint2 is run in the background. Tint2 reads in a configuration file at ~/.config/tint2/tint2rc and creates a taskbar at the bottom of the screen by default, or wherever it has been configured. It is used to display panels and taskbars in Openbox.

One of the last programs that Openbox's autostart script runs is Conky. It is run in quiet mode (-q) to prevent it from displaying any output. Conky is a system monitor which is used to display configurable information on the desktop. By default, conky displays the host, uptime, RAM usage, swap usage, disk usage, CPU usage and various keyboard shortcuts on the upper right corner of the desktop. This can be changed by modifying ~/.conkyrc.

Unless otherwise specified, the information on the functionality of the programs was obtained from their respective manual pages.

References

<references />