Site Contents

HOME Filesystem more1 more2 more3 more4

Meet RhuX: She's a distro

The name RhuX comes from Rhubarb, the RhuX mascot, and the 'X' part is both UNIXy and Linuxy. RhuX is a UNIX-like OS based on the Linux kernel and employing a host of open source goodies. RhuX was born of several years of Linux experience, and of the desire to make a distro that is personal and finely tuned.
RhuX is her Sunday-best name for use in documentation. For use in filesystems call her rhux. For a short prefix use Rx or rx-.

In the Beginning: PreRhuXstoric

The evolution of RhuX.

It started with Manjaro - a great escape from Windows. A very capable click and install Linux distro with the option of a lightweight environment by the name of xfce. An entirely adequate, everyday main-desktop Linux system.

The End

But no. Manjaro, as a general purpose distro, is not as light as it could be. And the many convenience GUI panels and applications, whilst making a solid distro, inconveniently hide the inner workings from the insanely curious. Fun can be had in building from a minimal but solid foundation. Enter Ali3 and Arch Linux. Just as Manjaro is built on top of Arch, so is Ali3. The name Ali3 is from Arch Linux running the i3 window manager.

The End

But no. Ali3 turned out to be a precursor to RhuX. A valuable stepping stone between building from a base distro and building totally from scratch. Start from a blank canvas and create a self-compiling, compiled-from-source, totally fresh distro. Hello RhuX.

The Start!

Philosophy: Lean, Functional, Yet Beautiful

Occam's razor. Cut the unnecessary, the overly complex, and the pointlessly fancy.

This philosophy describes the base, pure RhuX. Like any other distro, she's infinitely customizable.

  1. Install only software that is necessary and run only services that are necessary
  2. Install a good base of applications that fit well into the RhuX ecosystem
  3. Create a beautiful working environment that is simple, elegant, and uses clear and consistent colours.

RhuX does not employ Plymouth to provide a graphical boot environment because the scrolling boot progress is more geekly satisfying. She uses the UEFI bootloader to directly load the Kernel with no need to get Grubby. A Display Manager is not necessary - one can log in at the Linux console and simply run a script to start the window manager (or not). This process is neither less functional nor less usable, but is leaner, 'closer to the metal', and ensures that the window manager runs in user space. A big part of the philosophy of RhuX is to feel - to use an analogy - more like a driver's car than a luxury sedan. Vroom vroom.

The closer-to-the-metal philosophy is carried through to the Window Manager too. RhuX integrates simple Bash scripts into the Window Manager to manage features such as screen locking, snapshots, sleep, logout, volume control, and media key functionality. This is preferred to installing the usual convenience GUI applications to cover the same functionality. Closer to the metal.

The Window Manager of choice is Sway, a tiling WM that uses the Wayland display server protocol.

Standards

Rhux conforms to two standards:

  1. The Filesystem Hierarchy Standard v3.0 (FHS) for the RhuX filesystem.
  2. The Linux Standard Base v5.0 (LSB) for the RhuX base set of installed software.

Credits

A big hand goes to...

Free and open-source software for, hmmm, everything. The ArchLinux distro for the incredible learning experience and its expansive documentation set. The Linux From Scratch book-distro. Although RhuX was not created by following LFS, the project provided much valuable help in building the tool chain, and when Rhubarb got confused and was headbutting a brick wall.

Partitions and the Filesystem Hierarchy

The start of any build is to partition a storage medium and write a filesystem to each partition.

RhuX Partitions

Put different parts of the filesystem onto different partitions to separate logically distinct areas from each other.

For example, the /home directory, if separated from the actual operating system, can be preserved over re-installs, shared with another installation, or moved to a larger drive should /home become much bigger than anticipated. Different filesystems can be used for different directories, and static areas can be mounted read-only to enhance security.

The standard RhuX partitions are:

  1. / The root filesystem partition under which all other partitions are mounted
  2. /boot Essential UEFI boot partition with the VFAT filesystem. Contains everything needed to boot RhuX
  3. /home Users' home directories
  4. /srv Site specific data that is served by this host, such as web sites and RhuX source code
  5. /opt Add-on software application packages that are more extensive than the traditional binaries in the bin directories
  6. swap Essential for hibernation when the entire RAM contents are written out to disk. A swap file could be used instead of a swap partition.

The /usr and /lib directories are not on separate partitions. Separate partitions need be used only for a thin client installation where the boot media contains the boot-essential system. Everything else is mounted, and will probably be shared across many clients.

RhuX Filesystem Hierarchy

The RxFH follows the Filesystem Hierarchy Standard (FHS).

The RhuX filesystem contains every directory deemed essential by the FHS. This makes RhuX be FHS compliant and helps ensure that open source packages will build without modification. Note that as /bin and /lib are not on partitions separate from /, they can be symbolically linked to /usr/bin and /usr/lib. Additionally, the traditional separation between bin and sbin is by convention only and is not necessary, especially when a single user is both a user of, and the administrator of, the machine.
Directories mounted from a partition are marked with a 'p'.

p /
     bin -> usr/bin
p    boot
     dev/ (virtual)
     etc/
       opt
       sysconfig
p    home  
     lib -> usr/lib
     lib64 -> usr/lib
     media
     mnt
p    opt/
     proc (virtual)
     root
     run (virtual)
     sbin -> usr/bin
p    srv/
       rhux
     sys (virtual)
     tmp
     usr/
       bin
       include
       lib/
         firmware
         lsb -> services
         services
       lib64 -> lib
       libexec
       local/
         bin
         etc
         games
         include
         lib
         man
         sbin
         share
         src
       sbin -> bin
       share/
         man
         misc
       src
     var/
       cache
       lib/
         hwclock
         misc
       local
       lock -> ../run/lock
       log
       mail
       opt
       run -> ../run
       spool/
         cron
       tmp

p    swap

More1

More2

More3

More4