Linux from scratch
Linux
From Wikipedia, the free encyclopedia
Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).
Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.
Rules
- Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.
- No misinformation
- No NSFW content
- No hate speech, bigotry, etc
Related Communities
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
From the list ... I would go with:
Arch Linux - if you want to learn how to partition you drive, setup bootloader, manage packages from terminal, setup EFI, and such, probably tasks that will help you for example in cases when windows would override bootlaoder/efi and you want to recover/fix your Linux OS without reinstall, or you broken it and you want to fix it.
Nix OS - if you want to learn how to serialize your OS to an reproducible state with later ways to use Nix packages on other distros if needed. If you break it, you will just revert to older revision or reinstall everything in a matter of minutes (if not seconds) from few files. You will learn way different set of skills than Arch as you will only 'define' what you want your partition and bootloader should look, and NixOS will take care of that almost magically, but you could use Nix packages on top of Arch or any other distro.
Gentoo - if you want to learn how all those packages are build and installed from sources, how to patch and modify them when needed, how much time you gain with distro with prebuild packages if you decide to build everything, but on the other hand how much performance you 'could' gain from optimized builds or how easy is to install anything you want in any way you want. (Didn't use Gentoo myself, as installing stuff from AUR on my desktop Arch is all I need to experience how much time it could take :) So Gentoo would probably not be the hardest but most time consuming, but I could be wrong)
Operating Systems are lame, I use butterflies like a real programmer
Real programmers simulate butterflies in emacs.
You could always go down the Slackware route. It's only hard because it's different and doesn't have a huge userbase.
How hard is it? I really want to try Slackware one day but I'm not the most adept at linux yet. Really only have experience with Fedora, Tails, Puppy, and antix so far.
Hard to find people to ask about it, as you said because of the smaller userbase. I did look yesterday though and there are some youtube videos on slackware 15 set up, so I may be ok with those. Still kinda nervous lol.
If you want to know the story of Slackware, this is a really well researched and condensed history. There are daily users that can chime in better than I can, but Slackware was my first exposure to Linux and it's definitely not "dead" like you might see posted around the internet. Like any distro, what you get out of it depends on how how much effort you put in. It's doable, but it will take some work on your part and some patience.
I actually am interested partly because of their history, the creator is of the same religion as I am and his creation was announced in like '94 on the old Hour Of Slack radio show affiliated with said religion. In fact, Slackware is a direct nod to our concept of Slack, and there's even pics of our guru J. R. "Bob" Dobbs on the slackware site in the banners section. I know it isn't dead because 15 came out earlier this year (or was it late last year?) so they must be active and not dead, just hard to find lol.
Thanks for the advice, I'll maybe try it on an old asus I use mainly for booting tails on soon. That's the only device I have with windows for emergencies and nothing I have is powerful enough to run VMs I don't think, but tbh that windows install barely works and I haven't needed it in two years, so "fuck it," right?
Exactly. You are bound to learn something along the way, even if it's not for you in the long run. All it costs is your time. As you said, fuck it. Give it a whirl.
I think I will soon, thanks for the pep talk lol, I legit did need it! I think that even if the process is a little tough, it's possible that the product brings me Slack. Hell maybe I'll like the process too, who knows, learning can bring Slack sometimes too!
We are all here whenever you need a Linux enabler.
You're in a good position to "master" NixOS, but I don't think it'll help you to achieve your goal of getting better at Linux.
NixOS will help you with declarative systems ("mastering" NixOS will help you working with it's sibling Guix for example), but because so many things are specific to the declarative configuration, it won't help you in many other places (not with you current knowledge, apart from functional progamming I guess).
If you want to "master" linux, maybe check out linuxfromscratch.org
Edit 1 (spelling)
Is it so? Does it helps with FP paradigm? Meanwhile how you got to know I'm into FP?
Also I tried LFS many a times, but couldn't complete fully. Same with AOSP. Same with porting existing ROMs for Android. I also wished to try Gentoo Android project, even when it's abandoned. But I will try.
I can't really add anything on the LFS, AOSP & ROM-porting part. But I know there's Mobile NixOS, which might be a project you're interested in.
Nix, the language you use to configure your system is a functional language (c.f. https://nixos.wiki/wiki/Overview_of_the_Nix_Language), that's why I said it'd help you with FP. I didn't know you were into functional programming, just lucky wording.
But if you get into the FP side of nix, then there's so much more you can do. Here are some examples of projects that use nix/FP to help you with something:
- https://github.com/hercules-ci/arion
- https://github.com/nix-community/dream2nix
- https://github.com/danielfullmer/robotnix
- https://github.com/ipetkov/crane
- https://github.com/danth/stylix
Since nix (the language) is primarily used with nix (the tool/build system), most things you'll will be doing are centered around building something.
It will cover most FP paradigms, but writing the apps themselves with a functional language can teach you more than setting up the build system for it.
Edit 1 (spelling)
My question is, which among these is considered to be hardest and thus by mastering it, one can master linux to atleast some part?
It does not matter which distribution you use. For example, I am using Arch for over 10 years. Have I gained any new knowledge since then? Sure. But not because I use Arch but because I had to do certain tasks. Or because I was interested in certain things. I even go so far as to say that I got a lot of my Linux knowledge under Mandrake / Mandriva (comparable to Ubuntu) because that was the distribution I used initially.
From my point of view, it is therefore only important that you want to learn something. Whether you use Ubuntu, OpenSuse, Arch or Gentoo for this is basically irrelevant.
Apart from that, I don't think Arch is a difficult distribution to install or use. For example, many of the commands in the official installation guide can be executed without any changes. Or if you want to make it even easier, just use archinstall which has been an official part of the iso file for some time.
As for maintaining Arch, I've been doing exactly two things for years.
Before an update, I check if anything has been released at https://archlinux.org/news/ that affects my installations (this can be automated with tools like informant). It is important to follow these instructions.
And from time to time I synchronize my configuration files with the Pacnew files. There are tools for this as well (https://wiki.archlinux.org/title/Pacman/Pacnew_and_Pacsave#Managing_.pac*_files).
In other words, just use the distribution that suits you and learn what you need. Learning things on spec that you may never need is useless in my opinion.
Lfs but you learn a ton.
This right here: Linux From Scratch (LFS).
If your goal is to learn, there is no better way than retrieving each tool individually and compiling it from the bottom up. LFS is Gentoo ... without all the ease of use built in. More accurately, LFS is a just a set of instructions for where to go to get the code and how to compile everything you need to build a Linux system from the bottom up.
I don't live in the world of LFS or Gentoo, but my foray into LFS gave me a much greater appreciation for the distribution(s) I do use as daily drivers. I greatly appreciate my distribution maintainers.
I think Gentoo and Arch are quite similar but Gentoo needs more work. Not harder, but more annoying and time-consuming.
Haven't tried Nix OS yet, but yeah I can see the similarities in Gentoo and Arch. I think Gentoo with its compilation times is more of a headache (with better(?) rewards?). I think the last time I had to compile on Arch was for a kernel I wanted to try.
On recent hardware compiling everything from source doesn't give that much a of a performance boost. On older hardware (i586/i686 era) this was different. But in my opinion the hassle simply doesn't worth it anymore. My machine has plenty of unused resources and compilers nowadays do a really good job in optimizing the result.
Can't say anything about Nix OS. As far as I know it does some things different when it comes to configuration.
On recent hardware compiling everything from source doesn’t give that much a of a performance boost.
Agreed. The only reason I considered Gentoo is because my laptop is a potato.
Is it just a potato, or is it an ancient potato? Arch runs on fairly old hardware as long as it's 64 bits hardware. The oldest device I have must be from around 2014 and it runs okay.
Just a normal potato. i3-3120M and upgraded to 12gb ram. Next will be the SSD as it still has an HDD. Works pretty well for everyday use, although forget about gaming.
i3, 12 GB RAM, SSD ... wouldn't call this a potato ... 😆
😅
no SSD yet. and I just recently got an axtra 8gb stick of ram lol. so before that swap was used a ton and it was crawling. doesn't help that I use gnome, i guess (i'm not that good with WMs).
i guess gaming-wise it's a potato. lol.
IMO NixOS has all the benefits of Gentoo. I can quite easily:
- build everything in my system with custom compiler flags
- patch/reconfigure my kernel
- change how a specific package (say openssl) is built
But at the same time, anything I don't customise is pulled from the shared binary cache instead of being built locally.
But at the same time, anything I don't customise is pulled from the shared binary cache instead of being built locally
This sounds pretty good. Like Gentoo and Arch mixed depending on what you're installing? Gonna read up more on it when I have time. I just scanned their website quickly and they did sound a lot like Gentoo.
Yeah, I mean I switched to it from arch because it felt so messy doing upgrades, testing graphics drivers, kernel patches, etc on a mutable system. I would have to use filesystem snapshots to have any chance of rolling things back sanely.
NixOS makes it very low risk and easy to do system changes like that.
Ohh. Ok.
And they say that in nix os we can have different versions and builds of same software, driver or even kernel (kernel, we can do that in Gentoo too). Is that true?
Yeah, it's great for testing kernels because you can build a customised one and then immediately roll back (previous configs can be selected in the bootloader)
Gentoo is so customisable than arch, impo
Sorry, but I can't follow. Shouldn't an OS be easy to use so that it gets out of the way so that you have more time for the real work you have to do?
For example I tried out using plain Fedora Server for my NAS but went back to unRAID. I just didn't want to spend all that time figuring out why the samba server isn't visible or why the drives aren't spinning down, etc etc.
I think it depends on the individual user. Many prefer a solution that simply works. But some prefer to look behind the scenes and tweak everything.
When it comes to cars, it's the same. There are people who only want to drive from A to B with their car. I am one of those people. Others, on the other hand, want to repair their car themselves as much as possible. Which I understand in principle, but I prefer to leave that to a workshop.
As both arch and gentoo has very good documentation, and is very standard Linux as it “always” has been, I don’t see anything hard about them. Nix is a different beast and you need to learn some new approaches.
Anyways I have decided to try nix os. Yes, I'll see whether I can learn setting it up too.
I've not done Gentoo since about 2006/7 after running as a primary OS for about 2-3 years - It taught me lots about system maintenance. I then move to SUSE and *BSD desktops before coming back to Windows as my OS for daily use (have to for work).
I don't think it really matters what poison you choose, just dig down in to it's inner workings.
None of them are hard at all. They require some different skills though. Due to few defaults you have to spent more time with setting it up than for example Ubuntu which made many decisions for you. It's not too bad either way though. All the distros are supposed to be usable and not hard, that's the wrong mindset.
You won't learn much about Linux by using NixOS, as the configuration and skills are not really transferable (yet?). It fills a niche which is useful for development. Its goals are different and I would exclude it from the list.
Arch Linux is very simple and a bit difficult at the same time. As an experienced Linux User or administrator you can easily set it up and get it running like any other distro. The difficulty comes from you having to know what you need and want. This is the actual learning curve. Many packages have sane defaults which do not differ too much from other distributions so you spend most time with customizing it to your needs, but otherwise it is just a rolling release distro which works just fine and is easy to manage once it is all up and running. You have to make many decisions though.
The same is mostly true for Gentoo, but they use other tools and it invites its users to tinker with the software if they want to. You spend most of the time waiting for the compiler hence I personally don't really like working with it. It is a neat idea, but it's getting old really fast.
Personally I stick to Arch for my desktop system, but use RHEL or Debian based OS on any servers I manage. So my real answer is another option: Learn by operating and using a stable established distribution and once you are comfortable with the tools and everything you can branch out and dig your teeths into something else if you feel you need to. This would build more transferable skills especially in a professional setting.
After all if you want to take the difficult approach, rather stick to the learning "distro" Linux from Scratch (it's a guide) which can teach you quite a lot about Linux.