CRUX describes itself as a...Update July 7, 2009: Though written fro CRUX 2.4, this "How-To" also works generally the same for CRUX 2.5 with a few obvious modifications. As always, refer to the CRUX handbook when there is a question.
Having run CRUX for a few years now (beginning with 2.2), I can attest that this statement is right on the mark, and pretty much sums up why it has become my distro of choice. I've been running 2.3 for a good while. It has performed so well for me that I've resisted the urge to upgrade. However, being the inveterate Linux tinkerer I am, I just couldn't put off installing 2.4 any longer!Quote:
...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.
As has been the case since 2.2, the install of 2.4 went pretty much without a hitch. The CRUX website has very useful documentation you should keep close to hand while installing. I usually follow along with their directions and recommendations, but do stray slightly from the officially documented way. Since the install went easily enough for me, I thought I'd share my method if you are perhaps considering this blindingly fast and simple distro.
Among other distros on my hard drive, Slackware 12 was at sda5 and sda6, and CRUX 2.3 at sda9 and sda10. Since Slackware 12 is rarely booted on this box, I elected to install CRUX 2.4 to those partitions, root directory to sda5 and /home to sda6. Your situation will of course depend on where you want to install. For this "How To" let's pretend you also want to use the same partitions.
Normally, I format with ReiserFS or XFS. This time though, I wanted to try something different and used Gparted from CRUX 2.3 to reformat the target partitions with JFS which I've not used before. If it's to your liking, you can use fdisk from the install disk, directions being found in the 2.4 handbook.
I downloaded the CRUX 2.4 .iso and burned it, then rebooted with the newly created live CD in the beverage tray. (The following includes install screenshots recreated by way of VirtualBox so you can get a visual of the process).
The initial boot screen will appear. Press enter. After booting up you will get a login screen. Type in “root” and press enter.
First thing to do at the command prompt is to mount your target root partition to /mnt:
I want to have my home directory on a seperate partition so to do that:Code:
mount /dev/sda5 /mnt
Turn on your swap partition if you still use one:Code:
mount /dev/sda6 /mnt/home
Type “setup” and press enter. You will be greeted with the intuitive and easy to follow CRUX install utility welcome screen. It will ask if you want to continue with the install. Choose yes if you want to proceed.Code:
The next screen will ask if you want to install or upgrade. Of course, choose number 1, “install.” You will then get a screen asking where to install. As you can see here, I chose /mnt/sda5.
Next in line, you are given a choice of what to install. At minimum, you must at least choose the “core” packages. This alone will give you the extreme minimum. I also choose the “opt” and “xorg” ports packages. After making your group selections, you will be asked if you want to choose individual packages to install. I chose “no.” The following screen inquires if you really want to do the install. Choose yes and you're off!
From booting the live CD to the end of installation takes about five to ten minutes depending on the abilities of your machine and your level of proficiency. Afterwards though, you'll still need to do some configuration to get a functional OS when rebooting.
Now it's time to “chroot” into the new installation. CRUX has a neat little app to do this automatically for you:
Or you can setup chroot manually:Code:
Once "inside" your new installation, set the root password:Code:
mount --bind /dev /mnt/dev
mount --bind /tmp /mnt/tmp
mount -t proc proc /mnt/proc
mount -t sysfs none /mnt/sys
chroot /mnt /bin/bash
Now, open your /etc/fstab and edit it. You can use either vim or nano for this. CRUX provides a template /etc/fstab that is easily customized for your situation. Here's mine as a reference. (My edits are un-commented):Code:
At this time, you can also set up services and network connection. Consult the CRUX 2.4 handbook for instruction. You'll also need to compile the kernel. With CRUX, kernel compilation is a piece of cake.Code:
# /etc/fstab: static file system information
# <file system> <dir> <type> <options> <dump> <pass>
#/dev/#REISERFS_ROOT# / reiserfs defaults 0 0
#/dev/#EXT3FS_ROOT# / ext3 defaults 0 1
/dev/sda5 / jfs defaults 1 1
#/dev/#XFS_ROOT# / xfs defaults 0 0
#/dev/#SWAP# swap swap defaults 0 0
#/dev/#REISERFS_HOME# /home reiserfs defaults 0 0
#/dev/#EXT3FS_HOME# /home ext3 defaults 0 2
/dev/sda6 /home jfs defaults 1 2
#/dev/#XFS_HOME# /home xfs defaults 0 0
#/dev/cdrom /cdrom iso9660 ro,user,noauto,unhide 0 0
/dev/dvd /mnt/dvd udf ro,user,noauto,unhide 0 0
#/dev/floppy/0 /floppy vfat user,noauto,unhide 0 0
devpts /dev/pts devpts defaults 0 0
none /sys sysfs defaults 0 0
none /proc proc defaults 0 0
tmp /tmp tmpfs defaults 0 0
#shm /dev/shm tmpfs defaults 0 0
usb /proc/bus/usb usbfs defaults 0 0
# End of file
Make sure to include whatever drivers you need for your hardware! CRUX's default .config file is very minimal. You shouldn't assume your hardware drivers are already enabled in the configuration as is the case with many mainstream distros.Code:
EDIT: In the months since this "How To" was written, it seems the above point is a particular stumbling block for many. This is understandable as most mainstream distros come standard with support for most all file systems and hard drive configurations already present in the kernel. This is not the case with CRUX. It is up to you to determine what kernel support is needed for your hardware and build it into the kernel when compiling.
To elaborate: You must compile file system and hardware support in the kernel. This means making sure your chosen file system has a (*) beside it when doing "make menuconfig" and not as a module or (M). I make it a point to compile in kernel support for all the major file systems. You must also make sure your hard drive's configuration is also supported in the kernel and not as a module. Whether your drive is ATA, SATA, SCSI or what have you, make certain support is built into the kernel (*) and not as a module (M). If you do not ensure this, your fresh CRUX install simply will not boot unless you plan on initiating initramfs.
How to install CRUX continued...
Save your new configuration and exit menuconfig. Next do:
After the compile is done:Code:
make all && make modules_install
I use GRUB from my Ubuntu install so I edited its grub/menu.lst:Code:
cp arch/i386/boot/bzImage /boot/vmlinuz
cp System.map /boot
If you need to install the GRUB boot loader, see this page for detailed instruction. For LILO, consult the handbook.Code:
title CRUX 2.4
If everything has gone according to plan, you'll now have a shiny new minimum CRUX install, a great foundation from which to custom build your OS from source packages! See the CRUX 2.4 handbook for how to set up your ports and install packages through ports, prt-get or yapo. Yapo, (Yet Another Ports Overview) is a friendly ncurses front end for prt-get. Prt-get does resolve dependencies in most cases but, as is the case with other source based distros, there will be times when "hands on" dependency solving will be necessary.
This method works for me. You will likely have to change some things to accommodate your particular needs and situation. I cannot guarantee this "How To" will also work for you. As they say in the used car business, "If it breaks in half after you buy it, you get to keep both halves." ;)
Good luck! :)