According to the wikipedia article CRUX is a lightweight, i686-optimized Linux distribution targeted at experienced Linux users. The primary focus of this distribution is keep it simple, which is reflected in a straightforward tar.gz-based package system, BSD-style initscripts, and a relatively small collection of trimmed packages. The secondary focus is utilization of new Linux features and recent tools and libraries. CRUX also has a ports system which makes it easy to install and upgrade applications. But here is missing something! CRUX by philosophy is similar to Gentoo Linux or NetBSD: it's users have an easy-to-distinguish taste, which is reflected by the distribution. CRUX is not the "ordinary" distro, where you install everything with next-next-next-yes. It's far from it, it has a specific style, which requires some experiences as well.
Unlike you might think after looking at the Handbook, there are several architectures supported: PPC (last version: 2.1), SPARC (last version: 2.1rc1), x86_64 (last version: 2.2test1), i586 (last version: 2.1) however there's only one official release, i686.
Packages on the official CRUX ISO image are compiled with optimization for i686 (Pentium-Pro/Celeron/Pentium-II or better) processors. Do not try to install it on an i586 (Pentium, AMD K6/K6-II/K6-III) or lower processor, since it simply will not work. I will only touch here the CD-ROM installation method, since it's the most common, but you should know that you can install CRUX from network, and with your own bootkernel too.
First, of course, you have to download crux-2.2.iso (El Torito), and check its integrity (check its MD5 checksum). If it's OK, you should then burn the images, and boot into it (set your primary boot device to CD-ROM!). Now you can login as root (no password required), and create the necessary partitions (at least a root and a swap). After making some directories and mounting the corespondent partitions you arrive to the setting of the root password (attention, this will be very important later). Edit your config files like /etc/fstab, /etc/rc.conf, /etc/rc.d/* and /etc/hosts.
Now it's time to compile your kernel.. CRUX 2.2 has linux-18.104.22.168 included, which is very new compared to the release date. After you compiled your kernel succesfully, you must set your /etc/lilo.conf (or grub.conf if you plan to use GRUB) so that you can boot to your new CRUX installation in the future. You can execute now your setup.sh script, which lets you select the packages you want.
CRUX organises packages in three groups:
-core: as it's name says, these are the base, necessary packages (like gcc, cron, zlib and binutils)
-opt: optional packages, which may be installed by the user if wanted (like WMaker, cdrtools, X.Org)
-contrib: user contributed packages (there aren't such on the official release disc)
There aren't too much packages on the disc, which can be seen by its size (2.2-i686: 230 MB), but no problem, there's ports and you can install thousands of packages later if you want.
According to the CRUX 2.2 Handbook a port is a directory containing the files needed for building a package using pkgmk. This means that this directory at least has the files Pkgfile (which is the package build description) and .footprint (which is used for regression testing and contains a list of files this package is expected to contain once it is built). Further, a port directory can contain patches and/or other files needed for building the package. It is important to understand that the actual source code for the package is not necessarily present in port directory. Instead the Pkgfile contains an URL which points to a location where the source can be downloaded.
If you've used BSD before, you might know (you have to know by the way..) what are ports, and how to use them (though there are some differences at CRUX). On your first-boot you should synchronize your ports collection, so that you can install the latest available packages then. Use this:
To see all your ports, so list them, use ports -l.To see if you should install a new port (so if there's a new port appeared) simply execute ports -d, where d mean "difference". Once you've found a port you might need, cd the directory of the respective port, and execute pkgmk -d, where d mean "download". Then you can install it with pkgadd -portname-#-portversion-, or simply executing pkgmk -d -i to install, or pkgmk -d -u to upgrade the port (note: this way you don't need the first command, but you still have to execute this in the port's directory).
After going through the installation procedure, I think you already know that CRUX doesn't have graphic configuration tools, you have to do yourself everything, just like during the installation. As I said, CRUX is for experienced users, so if you just began, and installed it using the handbook for every little step, you have two chances: you'll spend a LOT of time learning linux, or you'll simply feel CRUX annoying and delete it. I recommend the first, since if you don't learn using linux with pain and time, you'll never be able to use a fully graphic-enabled system well. CRUX doesn't modificate software packages, so you can optimize everything for your needs. If you're an advanced user, CRUX is the ideal ditribution for you.
As CRUX is the absolute antonym to bloat, it's amazingly fast. If you know what you do, you'll never have any problems with it, everything is in your hands, made by your hands. You have secure packages, since the CRUX ports collection is made of the latest stable releases, nothing unstable enters it. Final sentence: CRUX is wonderful.
Later edit: This post has been criticised by DevOne. Read his thougts here