Where to Learn the Core Concepts Behind Linux

So I'm at the point where I'm very familiar with using linux systems (ie. most commands, package installations, setting up a new server, etc) for development at my job and just recently my personal computer, but I want to start understanding the core concepts of the linux system and structure. Not how to do something but rather the why behind it.

The problem for me seems to be that either the learning source is just a tutorial of basic unix commands or it's targeting linux veterans, assuming the reader has years of expertise to lean on, which I don't have but I want to eventually have. I'm wanting to start high level to give myself a good base in which I can then build on for more useful low level knowledge. So where should I start looking to find something that can help me?

If I sounded completely ignorant in anyway in this post it is because I most likely am, so please tell me. Just trying to figure this whole thing out.

1 Like

IMO, the best way to learn is to try and install gentoo. The documentation is definitely technical and advanced, but it is much easier to read than some other sources of information.

As you go through the install process, you will see how linux is built and how it works. Its a much more hands on approach to learning the information.

2 Likes

I am no wiz by any means so take what I say with a big pile of salt but what I tend to do is not worry about learning "Linux" but simply go about my way using the computer. As I come across a task, I try to look up the best way to do something (e.g., where do I put this PyCharm IDE? What does tar -xvzf pycharm-xxxx-xx.tar.gz -C /usr/local/JetBrains/ do? It is defiantly not the most efficient way to learn but this way I try to avoid getting bogged down by conventions for which there are at least two opposite factions and nobody agrees on what the best way to do something is...

I think even some core principles like the Unix philosophies may have outlived their usefulness. As a reminder, https://en.wikipedia.org/wiki/Unix_philosophy

Write programs that do one thing and do it well.
Write programs to work together.
Write programs to handle text streams, because that is a universal interface.

It all sounds nice and good but I am a hypocrite because I see how Google Chrome "just works" on Fedora 25 and I have to add rpm fusion just to get gifv (basically mp4 without sound) to play on Mozilla Firefox or Chromium. Sorry I got off a tangent there.

I mean this sincerely and not as a meme but if you want to learn how things work, you should at least attempt to install Gentoo. However, you might want to be pretty well acquainted with the shell. Again, I am no wiz but I think this is a good way to accomplish what you want.

2 Likes

Maybe try a lecture on computer systems engineering. MIT has good online lectures. MIT has a big online lecture library that might have very interesting lectures for you.

If you want to read stuff, maybe try Tanenbaums "Modern operating systems". Just google that and .pdf and you might find it online in it's entirety.

1 Like
3 Likes

I learned a lot while taking a programming course over c.

1 Like

https://training.linuxfoundation.org/free-linux-training

Also Udemy is pretty decent if you catch when they have courses on offer.

You're just cruel!! Gentoo will just put beginners off lol.

1 Like

There were discussions between Linus and Tannenbaum about how Linux differs from Linux. Andy Tannenbaum created Minix and was what inspired Linus to write Linux and post it on the newsgroups.

There is also the microkernal vs macrokernal aspect

1 Like

The biggest piece of advice I can give is to never capitalize anything. Everything Unix-based is case sensitive, and people who capitalize filenames, commands, or directories should be put to death.

2 Likes

Thanks for the responses! Definitely will be referencing your posts for a while.

If you are coming at this from the OS administration side, my recommendation would be:

If you are thinking of coming at this from a OS architecture side, that is a tougher recomendation. Have to think about that.

I second Gentoo and add Linux From Scratch. I wonder whether that's still a thing though. That was one of the most educative things I ever got running.

Linux from scratch will always be a thing.

I actually don't know how it can ever not be a thing.

3 Likes

I started in the nineties with linux on SuSE. It was literally the only distro back then that had full documentation in German and English, and it was pretty popular in Germany. Germany has always spearheaded open source development because of a number of historical factors, too numerous to list. The main factor though is that Germany is an economy that's entirely supported by small and medium enterprises in search of added value and added quality. It's in the German genome I guess to criticize one's self to death, so that in the end you do only the one thing that you like doing most, and do that thing really well. I'm not saying that's applicable to me, because I like to do a lot of different things, and understand how everything works, and create added value out of bringing stiff together in creative ways. SuSE actually needed Americans to get that far, but they went totally overboard with the creative input because literally everything the US/Canadian business development specialists at Corel could think of, just got realized because they left SuSE as it was, a German company with a specific technical challenge. Corel invested heavily - to the point of bankruptcy - in developing complete written manuals for SuSE, and although that was only a first step in the kernel 2.4-2.6 era, it was a basis that the community kept maintaining, and a total example for open source accessibility. Later, ArchLinux - also Canadian based - recognized the need for complete written documentation, and that's what made ArchLinux into a major distro, they have the best documentation of any linux distro for the moment, better than SuSE even.

So depending on the level of skill in IT terminology, I would definitely recommend either OpenSuSE, which is largely preconfigured and has complete GUI control, even over the smallest configuration options like kernel modules, boot parameters, etc..., and has complete documentation in the most languages on any distro on earth, or ArchLinux, which is harder te get started because minimal, it's part of the philosophy, but the documentation in English language is the best of any distro and the most up-to-date and detailed, so there is definitely a lot to learn there, but it's going to be much harder.

I know that many people recommend Ubuntu or Mint to start out with, but I can't recommend those at all. First of all, there are some serious issues with both of them, which may very well ruin either your experience or your belief in open source software integrity, whichever might be ruined first lol, and the argument that the support and documentation is the best because it has the highest number of forum participants, fractional forums, forked support groups, and posts and reposts, is not really all that impressive, because these distros have by far the most bloat and spam and general uselessness in their documentation and fora, and you need to be a pretty experienced linux user to be able to distinguish the loads of crap from the valuable information. Nothing against Ubuntu or Mint, but these are not distros for beginners, they are pretty dangerous for beginners even in my opinion.

If you want to get going with ArchLinux but need a jumpstart, Manjaro is the distro to get, it's a user-centric Archbased distro with a great community and a huge international user base, and all of the Archwiki documentation applies 1:1 to Manjaro, so there is always an answer to any question online.

Other than that, LPI, the Linux Foundation's commercial linux training department, offers LPI Level 1 trainings and certification exams for free or for a greatly reduced price at linux/open source conferences and in-campus at a lot of highschools, colleges and universities. The material for this level is available for free online. I can totally recommend setting yourself the challenge to get that cert, take the exam at a Linux con or a local college, to force yourself to really dig into the material. This material is almost entirely valid for all *nix-like operating systems, so it's definitely worth it.

If you are more interested in why the linux kernel is the way it is, I suggest Linux Kernel Development 3rd Edition. While the kernel is always updating you get to see the design choices and how these changed over time. The read is quite thick but you definitely learn about linux.

1 Like

It sounds like you're not a beginner, so the Gentoo suggestion isn't all that crazy. I've never used Gentoo, myself, but I did build an Arch box and I can assure you that Arch's Wiki is pretty comprehensive. It's about the only thing that I've ever seen that rivals the documentation for BSD.

Something else that everyone should try at least once, which was my introduction to Linux, is to learn how to build your own custom kernel and the why's and wherefore's of the process.

If you really want to understand the why of computers, though, you should look into learning a little Assembly. It's been said that a computer is about as smart as a box of rocks ... a really fast box of rocks. Learning Assembly will strip away the mystery for you.

2 Likes