A Custom Linux Build: Corelinux On The Way
07 Aug, 2026
I was always a Linux fan. Since my first discoveries in the world of UNIXes.
When I was teenager, I used to program a little bit of Basic on MS-DOS 5.22, in my father’s office.
Curiously, my first UNIX-like system was Mac OS 10 (Panther).
I had no idea what UNIX or BSD was about. But a friend of mine, had.
He was studying computer science and showed me all the amazing commands on my Mac OS (Darwin inside) terminal. I became so excited by such amazing things.
But Darwin was an entirely different beast, much closer to original UNIX shells.
Unfortunately my iBook had many issues with the HDD and I had to abandon it. Even after replacing the storage unit, it was always hanging at some point, until finally the display went unusable.
This a little bit of my past, which explains why I’m always looking for alternatives.
The only computer I had to connect to the internet was my father’s computer then.
At that time, I’ve found Windows a true piece of crap, I hated that shit so much that I thought “ok enough with this, I’ll build my own OS” LOL… So naive I could never guess what’s the destiny of such endeavours.
So one day, my cousin gave me an Ubuntu distro’s installation disk, and that was finally what I was looking for all the time.
A working Linux, at least!
After that, I paved my way to kernel compilation and grub setup. Started to learn all the basics of shells, scripting languages, an entire universe of shiny things.
Since then I never stopped learning about Linux and testing new distros.
I tried many of them, Debian, Fedora, Arch, Alpine, to name a few. My last one was Artix (a great distro by all means).
But there’s always something about them, either is the packaging system, or the repositories, maybe it’s the rolling release or the stale old packages from stable versions, etc.
Honestly, rolling releases are cool for those who are always testing edge features of everything, but for me it was more of a burden than anything else.
Another thing is to create expectations about what package will be available or not, compatibility with the already installed packages, etc.
I needed something simpler, yet somewhat stable and customizable.
So I decided to try building my custom Linux from scratch. Maybe not exactly following the recipes on LFS site, but trying something different.
We’ve AI nowadays right? So the task that was unthinkable, of massive effort now it just takes… a few days.
The worst part was fixing all the configure steps for compiling each package.
There are infinite flags and options, much beyond the order of compilation.
Step by step, I created a directory for building scripts, which I called simply ports.
The first directory tree for Corelinux was looking like:
corelinux/
dist/
ports/
templates/
Every package I needed to compile is in ports/, with the following files:
ports/
coreutils/
BUILD
coreutils-x.x.x.tar.gz
Where BUILD is the “recipe” for compiling it. For example:
#!/bin/sh
# ports/coreutils/BUILD
PKG_NAME="coreutils"
PKG_VERSION="9.11"
build() {
./configure --prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--disable-nls \
--disable-acl \
--disable-xattr
make
}
package() {
make DESTDIR="$PKG_DEST" install-strip
}
Now I also added a bunch of scripts in the bin/ directory, so my current tree is like this:
corelinux/
bin/
env
fetch
unpack
build
_install
dist/
ports/
templates/
To load the executables that make all the process, I use “source bin/env” at the root folder of Corelinux.
For example, to build the coreutils package, I call:
[corelinux] $ build coreutils
The build script loads (includes) the BUILD recipe, and run the functions build() and package() inside the __src directory of each package. This directory is generated by the unpack command.
While still experimental, I’m already using Corelinux as my main OS.
I’m really happy with the result so far.
Still missing some apps and libraries, and some language support, but I already have everything to startup, connect to the internet and even making some music:
- wpa_supplicant
- jackd
- pulseaudio
- X11 with Xlibre server
- librewolf browser
And many other utilities and my custom stacking window manager, lesswm, which is inspired by Suckless DWM.
While the future of Corelinux is a bit uncertain, I’ll probably use it for at least a couple months.
It’s really cool to have an entire system totally customized, without dependency on a third-party package system or being a hostage from other people, sometimes much different in world views as yours.
There’s also the political/ideological wars nowadays, so much of what I really liked about open source is going away because of stupid disputes.
If you stand for freedom, you also could try building your own “corelinux” from scratch.
I already have this blueprint so you can get inspired and test your own settings as you wish.
If any of this resounds to you, feel free to clone Corelinux at my Git repo: https://git.grumpydog.dev/corelinux.
See you next time!