CRUX is a rather unknown distribution that escaped the swallowing waves of major GNU/Linux trends, like systemd and pulseaudio. It consists of the bare essential components, in their simplest form, that make GNU/Linux a bit more than just the kernel. Services are handled by shell scripts and are meant to start/stop/restart processes spawned in daemon mode, like dhcpcd, crond, etc. The syntax is well-established in Unix-like operating systems and easy to follow. Esentially, anyone could write their own service init script.
Package management, as we know it from other GNU/Linux distributions, was originally not part of CRUX. Much like Gentoo and BSD systems it employs a source-based ports tree located in /usr/ports (though Gentoo has it elsewhere). Building, adding and removing packages is achieved via ‘pkgmk’, ‘pkgadd’ and ‘pkgrm’, respectively. The main tool is ‘ports’ for checking differences between the local and remote trees and notifying which applications may require an update. In recent years, however ‘prt-get’ was written to simplify the management process, especially package dependency resolution. Though I found running ‘ports -u -d’ and ‘pkgmk -d -u’ or ‘pkgmk -d -i’ fun at first, for more complex applications the dependency web and often ‘not found’ errors would get to me. Nevertheless, the BSD feels are surely there. I’m loving it!
Speaking of ports management, there are 3 central repositories that offer the most basic tools and applications – core, opt and xorg. If one wants to go with a minimal system, everything is within those repositories, even utilities like mplayer and feh. Therefore, it is possible to build a rather functional desktop, without the need for extra software. However, in case core, opt or xorg don’t contain all that we need, there is always the ‘contrib’, ‘compat-32’ and user repositories to fill the gaps. Shortly browsing through the full ports collection using either ‘portdbc’ or the website, I noticed a lot is actually available. If not, writing a Pkgfile (basic text file containing information on source code whereabouts, version number, description, etc.) is as simple if not simpler than producing a PKGBUILD (Arch Linux) or ebuild (Gentoo Linux). Speaking of the latter, CRUX is less barebones than Gentoo, because the base system already contains all of the standard tools to get things running. This is favorable, as less things have to be compiled from source, which by the way seems faster than on Gentoo Linux.
Boot time is always a bit of a red herring argument and I would not mention it, unless I were impressed. I can tell you, I really am. Getting from the GRUB2 screen to the login prompt takes 5-10 seconds. Since CRUX doesn’t really use a service/process management system like openRC or systemd, the initial log is quite short and somehow resembles that found in FreeBSD. Connecting USB ports, mounting drives, attaching drivers to devices and the likes.
On the downside, everything must be configured by the user. For instance, I tried to install xfce4 as my desktop environment. For some functionalities I had to produce proper polkit .rules myself as the polkit package did not contain any. This is not really the fault of CRUX, but rather that of the software developers who did not add the necessary lines to the sources. Somewhat strange, since those .rules are always necessary for ‘shutdown’, ‘suspend/resume’ and ‘reboot’ desktop buttons to work. Another thing was the kernel for CRUX 3.2 (version 4.1.13). Surprisingly, the .config lacked full information on the graphics stack, though this should have been available since kernel version 3.x at least. In addition, every time I reinstalled and compiled its sources, something would go wrong after reboot. Of course, new kernel sources can be promptly downloaded, from for instance kernel.org, during install and a new kernel compiled. Nevertheless, this is tricky business and one can get easily lost in the plethora of modules and features.
To sum it up, I think CRUX works as advertised. It’s relatively easy to install if someone already went through Arch Linux and the painstik ritual of Gentoo. Software selection is modest, though sufficient to build a functional operating system. I guess the only gripes I would have are against the intrinsic chaos of GNU/Linux rather than CRUX itself. Lastly, it does not promise mind-boggling user-friendliness like Ubuntu or openSUSE and really stays away from the Red Hat extravaganza.