General notes on a lightweight Linux distribution

CRUX Linux

CRUX Linux is a lightweight linux distribution with a simple .tar.gz based package and ports system, and relatively simple initscripting. I chose to use this distribution on some of my virtual machines.

Installation

The most difficult part of a CRUX install is the kernel compilation. Beside this, everything should be easy.

Get the .iso from the official website or get an updated one from crux.ninja to save time on your updates.

First, you should create four paritions for {home,boot,fat,root} and mount the system on /mnt/. The next step is to launch the install script and enter chroot.

# setup
# setup-chroot

Essential setups

Once you are in the mounted system, edit /etc/fstab to add you partition scheme without modifying the uncommented lines.

Edit /etc/rc.conf as you like. You should specify your timezone, keymap, and services there.

Generate your locales. Replace en_US with the locale you want like fr_FR or ja_JP

# localedef -i en_US -f ISO-8859-1 en_US
# localedef -i en_US -f ISO-8859-1 en_US.ISO-8859-1
# localedef -i en_US -f UTF-8 en_US.UTF-8

Kernel compilation

The hardest part of the installation. Go to /usr/src/linux, and launch the configuration menu. You should check the internet; maybe someone made a list of options for your setup. Gentoo users made published a lot of examples.

# make menuconfig

Save and leave the menu. Once you are back to the shell, you can compile the kernel, move it to the boot partition with its modules.

# make all
# make modules_install
# cp arch/x86/boot/bzImage /boot/vmlinuz
# cp System.map /boot

Boot options

User creation

Change the root password, create a new user and add it to essential groups.

# passwd
# useradd -G audio,video,wheel -m -U $USER
# passwd $USER

Manage your users permissions with visudo.

Now you can exit and reboot your machine.

# exit
# shutdown -r now

Post installation

Now, you have a basic CRUX Linux installation. But it misses some steps to be convenient.

Package management

Create a user dedicated to package management.

# groupadd pkgmk
# useradd -m -g pkgmk pkgmk
# usermod -aG pkgmk $USER

Make sure you use fakeroot to build ports by adding the following line to /etc/prt-get.conf.

makecommand sudo -H -u pkgmk /usr/bin/fakeroot /usr/bin/pkgmk

Packages directories should be defined as such in /etc/prt-get.conf.

PKGMK_SOURCE_DIR="/home/pkgmk/distfiles"
PKGMK_PACKAGE_DIR="/home/pkgmk/packages"
PKGMK_WORK_DIR="/home/pkgmk/work/$name"

Create those directories and set their access permissions.

# chmod 775 /home/pkgmk/*

You can now enable the contrib repository and update your package database if you are conected to the internet.

# mv /etc/ports/contrib.rsync.inactive /etc/ports/contrib.rsync
# ports -u

Install fakeroot.

# prt-get install fakeroot
# cd /usr/ports/opt/fakeroot
# pkgmk -d -i
n.b. Use the last two commands if you are not connected to the internet.

Goodies

User ports

There official repository is not really big. You can add user repositories by editing /etc/prt-get.conf. Use CRUX's port database to find what you need. Just like the contrib repository, you have to get their .rsync or .httpup sync file, add it to the /etc/ports/ directory, and edit /etc/prt-get.conf like this.

# the following line enables the user maintained contrib collection
prtdir /usr/ports/contrib
prtdir /usr/port/$USER_CONTRIB

We placed the user contribued repository below the contrib one because prt-get will install the package from the repository placed higher in the configuration file. If you are absolutely sure about the package you want, you can change the order to install it.

Package it yourself

This is true for most distribution: you can make it better if you contribute to the package manager.

Most of the time, it's an easy task. Update your package when you realize that you are behind some updates, you'll make this world a better place.

crux links

Questions or corrections? Send an email to roy@royniang.com.