selo (selo-) Linux began started as an idea for a Linux distribution that i'd come up with recently. it's born out of a distaste of the ideology of modern GNU/Linux distros, specifically for the usage of technically bloated and cumbersome software.
i'm not too sure whether this stems from a desire of preceived grandiosity, an accumulation of bad decisions, or something else enirely, but i felt sick of it all.
also, i am aware that creating a new Linux distro is a trite idea, but this isn't for you.
before i get started, i want to create a set of ground rules to prevent any irratation.
as with any set of rules, there are going to be exceptions. with this project that's the use of the Linux kernel and the gcc toolchain (the latter can be removed during stage 3).
selo (selo-) Linux is fundamentally opposed to the usage of GNU software. this is due to a myriad of reasons, but it mainly boils down to a pattern of exceedingly long and complex code, superfluous and wordy documentation, and some of Richard Stallman's personal beliefs. this is not to discredit the amazing work that the people at his organisation has done, but GNU software simply isn't a fit for selo (selo-) Linux.
as a result of this (and some other factors), there are going to be major changes from your typical Linux-based operating system, the main one being the use of a Plan 9 user space, provided by plan9port.
there is no /usr, /sbin, /media, /run, or /srv directories. this is because selo (selo-) Linux is primarily an exercise in minimalism and these directories are simply not necessary for the functionality of the system.
this is the portion of the article that's especially derivative of Suckless From Scratch and Linux From Scratch, where i'll start crafting a working operating system from the ground up. by the time you're reading this, you (probably) won't have to do this and a stage 3 tarball for your processor's architecture should be available somewhere for you to download.
as an aside, this section only really exists as a reference to my future self on how to build the system, but if you're curious, you're of course welcome to read (or even follow) along.
for this step, you'll need a few things:
for this installation, i'll be using Linux Mint as the bootstrapping environment because i'm lazy.
as is true with any typical Linux installation, the first step will be to partition and format the disks. because this is Linux, you can go about this in a few ways; i'll trust that if you're reading this, you've done something like before and not bore you with the details.
once you've partitioned and formatted your disk(s), mount the root partition somewhere on your live environment (i'll be using /mnt).
use the following shell command to recursively create the root subdirectories of the system:
mkdir -p /mnt/{proc,dev,sys,tmp,root,lib,include,bin,etc/ssl/certs} \
/mnt/var/cache/ante/{recipes,sources}
since this distro doesn't use (e)udev, you'll need to create the character special device files yourself:
mknod -m 600 /mnt/dev/console c 5 1
mknod -m 666 /mnt/dev/null c 1 3
mknod -m 666 /mnt/dev/zero c 1 5
mknod -m 666 /mnt/dev/random c 1 8
mknod -m 666 /mnt/dev/urandom c 1 9
if you're curious about where exactly some of these magic numbers come from, see mknod(1), null(4), and random(4). as for console, i have no idea.
W.I.P.
W.I.P.
W.I.P.