DEV Community

Discussion on: Recomendations in choosing a Linux distro

Collapse
 
benaryorg profile image
#benaryorg

Problem with a general suggestion

The problem I encountered with diving into the GNU/Linux world is that you cannot just "do stuff from scratch and understand everything" (i.e. learn C by writing a simple webserver).

Most distributions I consider practical for production are also those that need little maintenance after an initial configuration.

So I'd recommend you boot up a "beginners" distribution first though.

If you follow these steps, you will spend a few weeks or so with the process from start 'till the end of "Production System".
This will yield a lot of knowledge though.

Systemd

Due to the added complexity (and also the opposition to the Unix philosophy inherent to most of GNU), I'd recommend against anything with systemd at the start.
As soon as you understand what an init does, what services are.…
Let's say after you naturally discover what double forking is (so don't just straight up google it).
.…then you might very well look into it and see for yourself.

How about Slackware?

afterboot(8)

As soon as you can use the shell, including:

  • traverse the directory tree
  • be able to find out more about a command (--help, man)
  • edit files (nano is fine for starting, but as with systemd, when you know what your editor should be able to do, choose the one right for you ;-) )

I suggest you go through the Gentoo Handbook.
This will show you how to install a distribution from scratch with most of the configuration done by yourself, and lots of verbose explanation.

Why not LFS?

Suggesting LFS here would be a mistake, IMO, as this adds too much overhead (compiling, compilerflags,.…) that are not needed to understand a GNU system.
As soon as you understand GNU/Linux, you should already have a general idea on how building an LFS yourself could be accomplished.
This by far does not mean you must be able to do it of course.

Underlying Tech

I suggest having a look at the following man-pages:

  • read() and write()
  • traversing further by use of the "See Also" section

Then make sure you understand:

  • what file descriptors are
  • how processes communicate

Have a look at wait().

Production Systems

Learn how to use general purpose production systems.

Now that you know how it works, put it to use (this will be the easiest part).
Install e.g. a Debian Stable, configure it to the point where it hosts a static website (need not be anything special, a "Hello World" in HTML is enough).
Hints: nginx, Apache2, caddy are your friends.

Done?

You are never done with GNU/Linux (unless you switch to BSD).

If you still feel like it look into containers (e.g. LXC/LXD), automation (e.g. Puppet, Ansible) or whatever you feel like.