ROCK Philosophy

From RockWiki

Jump to: navigation, search

Contents

The ROCK Linux Philosophy

by Clifford Wolf 04/27/2001


Revised by Stefan Fiedler 11/20/2005

The original article can always be found here.

Introduction

In the Summer of 1998, I was so disappointed with the existing Linux distributions that I started to develop my own distribution. Don't misunderstand me -- there are good distributions out there. But none of them gives a seasoned system administrator full control over his system. I would like to explain the main differences between ROCK Linux and most other Linux distributions in this article.

User-friendliness versus admin-friendliness

Unix/Linux is becoming more and more popular to the masses. The mainstream distributions are becoming increasingly user-friendly. But what does user-friendly really mean? In my opinion, it means that an end-user does not need an administrator to do basic administrative tasks.

That is a big improvement if you happen to be such an end-user. But it does not help you much if you are an administrator. In most cases an administrator spends a lot of time disabling all the user-friendly functionality of modern distributions. So I thought we also needed an admin-friendly distribution.

ROCK Linux aims to be admin-friendly. There is no YaST, Linuxconf, or Control-Panel. Configuration is done where it has to be done: in the config files. A configuration tool has to help an administrator -- not replace him (I don't think that it's possible to replace an administrator with a config tool.).

Size

Most distributions try to be (or to become) complete distributions bundled with all the packages available on the Internet. That is nice if you do not know what packages you need and would like to play around with. But it has also a few disadvantages:

  • The distribution becomes complex and can't be always up-to-date because of the big maintenance overhead.
  • It's much harder to keep the distribution clean and simple.
  • It's harder for the user to separate the important stuff from the toys.

This is why ROCK Linux is split into two parts. Base distributions and extended distributions:

Base distributions contain all the really common and widely used stuff (about 250 to 280 packages). Every patch and every line of ROCK Linux-specific code in the base distributions has been checked by a single person to make sure that everything fits together and works as it should. The base distributions are solid like a ROCK.

Extended distributions include customized collections of packages. Most of these packages are maintained by other people independent of base distributions. This makes sure there can be a big number of extension packages. (Extending distributions is a work in progress. Currently there are more than 1500 packages available, and the number is still growing.)

Backward compatibility

Most Linux distributions try to be backward compatible (old libraries, old tools, etc). ROCK Linux doesn't. In ROCK Linux there is always one (the most up-to-date) version of the system libraries and utilities.

There are two reasons for ignoring compatibility issues in base distributions:

  • Most users don't need them. (Who is using a.out binaries or libc5 these days?)
  • If you need them, it doesn't work well. (Have you ever tried to run complex a.out/libc4 or elf/libc5 applications on a modern Linux system?)

Patches

Every distribution comes with its own patches to various packages. In some cases, there are so many patches and changes to the original packages that distributions become incompatible.

In ROCK Linux, I try to have a small number of patches: These are only there where they're needed to

  • make the package compile at all,
  • fix a bug or,
  • add an absolutely necessary feature.

Most Linux distributions add a big number of features to a package without contacting the package maintainer. So this feature stays distribution-specific and is not available on other distributions. In my opinion this is wrong. Traditional package development should be up to the package maintainer. If a Linux distributor changes something, it should be added to a package. The first step should be to contact the package maintainer and ask him to include the patch.

In most cases, package maintainers are happy about improvements or -- if they disagree to include them -- have a good reason for not including them.

Packaging

Unlike other Linux distributions, ROCK Linux does not use a special package format. The packages are simple *.tar.bz2 archives. The package metadata is stored under /var/adm/*:

  • /var/adm/flists/<pkg-name> List of files
  • /var/adm/md5sums/<pkg-name> MD5 checksums
  • /var/adm/cksums/<pkg-name> CRC checksums
  • /var/adm/descs/<pkg-name> Package description file
  • /var/adm/packages/<pkg-name> Extended package description
  • /var/adm/dependencies/<pkg-name> Build-time dependencies

This makes the package metadata easy to parse by third-party scripts.


However, ROCK Linux comes with the rpm and rpm2cpio programs -- so it's easy to install RPM packages by hand or to convert RPM packages to ROCK Linux *.tar.bz2 files.

Since version 2.0, ROCK Linux can also create packages in *.gem format and convert them to and from *.tar.bz2 archives.

Sub-distributions

ROCK Linux can build a variety of targets (formerly known as sub-distributions). These are Linux distributions adapted for a special application. Currently available targets include:

  • The install disks,
  • the ROCK Router distribution (a modular distribution on floppy disks designed for routers),
  • the Crystal 'general-purpose' desktop distribution,
  • a Linux Live-System which boots from CD (for surf-stations),
  • a very small Live-System designed to play video files on diskless machines,
  • an advanced rescue system in-a-tar,
  • and a distribution specifically for Via Epiam processors.

The following sub-distributions are planned for the near future:

  • ROCK NC Linux -- a Linux based NC which mounts all its data over the network using the Coda distributed filesystem.

Auto-build process

The focus of ROCK Linux was always to allow easy rebuilds of the entire distribution by typing a single command.

This auto-build process makes it easy to port ROCK Linux to new architectures, to optimize it for a special processor, and to update the whole system to a new system library or kernel.

The ROCK Linux Alpha port is being worked on.

System administration

While there is no central configuration or administration utility in ROCK Linux, there are little helper applications which can be very useful for administrators:

  • stone is a menu-based tool for common configuration tasks.
  • The shadow package comes with some command-line tools for user and group administration (useradd, groupadd, ...).
  • ROCK Linux is using a SysV-like init concept. The tool stone contains a module to help you configure your runlevels. There are no side effects if you are mixing this with setting the symlinks by hand.
  • There are some utilities (bize, mine) for installing, removing, and updating packages. There are also two utilities to check for modified, added, and removed files on the system. This is useful for intruder detection and making backups of your configuration.

Installation

ROCK Linux can be installed from CD, local disk, or the network (NFS, FTP or HTTP). The install disks (and the bootable CD) come with a big number of modules (SCSI, network, and PCMCIA). It gives you a root shell where you can create your partitions, format your filesystems and mount them under /mnt. This is done by fdisk, mkfs, and mount. Alternatively you can use stone for installation. Package installation itself is done by a helper application (the "ROCK Linux Install Shell") that lets you select your packages (using shell patterns) and install them.

Getting ROCK Linux

You can download the sources from the ROCK Linux homepage and the Mirrors. Binary distributions can be downloaded from the mirrors listed on the homepage. Currently there are only unofficial binary distributions for the development snapshots.

Have fun with ROCK Linux!

Personal tools