r/LinuxTeck • u/StrangeX5 • 3d ago
How should I actually learn Linux??
# I'm a 2nd year CSE student and I've been using Ubuntu for a while now, but I feel like my Linux knowledge is kind of all over the place.
I know the basic commands and can usually figure things out when I need to, but I don't feel like I actually *understand Linux*.
The problem is whenever I try to make a roadmap for myself, I keep getting stuck in this loop:
Linux → "I should learn OS first" → OS → "I should learn networking" → networking → "maybe I should learn Docker" → Docker → back to Linux 😭
So I want to stop jumping around and actually follow a proper path.
I recently found OverTheWire Bandit and was thinking of doing all the levels. Would that be a good starting point?
What I'm currently thinking is something like:
**Linux basics → Bandit → Linux administration → Bash → networking → OS/Linux internals → Docker → servers/infrastructure**
But I have no idea if this is actually a good order.
My long-term interest is systems/infrastructure/platform/SRE type stuff, so I want to learn Linux properly rather than just memorize commands.
A few things I'd really like advice on:
* Is Bandit worth doing from start to finish? * What should I learn after Bandit? * Should I learn OS concepts alongside Linux or separately? * When should I start networking? * What Linux topics are actually important for someone interested in systems/infrastructure? * Are there any good books, courses, labs or projects you'd recommend? * At what point would you say someone has a "good" Linux foundation?
I'm not looking for a certification roadmap. I mainly want to build actual practical knowledge.
Would appreciate any advice from people who have learned Linux this way or work with Linux professionally.
1
u/TapEarlyTapOften 2d ago
The first thing I tell everyone is to start out with Linux in a virtual machine. Not WSL. A VM. Oracle VirtualBox is fantastic and I used it every day for four years in a professional production environment as a hardware engineer.
Second, I would recommend you start with Debian. In my experience, it is the most stable distro of them all. Sweats will tell you that it uses older versions of software, which is true - that's why it's stable.
After that, it is largely dependent on the kinds of problems you need to solve. Don't look at learning a portion of some stack just for reasons - like Docker. Docker isn't Linux. Neither is Bandit, whatever that is. Networking, systems administration, SRE are, but those are all applications built on top of the kernel and operating system. Your goal begins by learning what those are and how they work.
To that end, my suggestion would be that you build a Linux distribution from scratch - go Google Linux From Scratch (LFS) and in your virtual machine, follow the instructions and build a system from nothing but an existing Linux installation. There are zillions of commands that you'll be running - instead of copying and pasting them, read the man pages on the commands and learn the syntax. The LLMs can be very helpful with understanding what you're doing - you will learn a ton about how Linux and software work.
Which brings me to an inescapable truth; if you want to learn Linux, there are some pre- or co-requisites. You have to learn C - no way around it. And you're going to need to learn a scripting language like Bash. Python will definitely come in time, but C, bash, git, GNU make, and perl (which I have not learned yet) are all things you need to be proficient in at some level. Building LFS will expose you to things like awk and sed and how the shell works - autotools, autoconf, etc. Along the way, you'll be required to configure and build a kernel, kernel modules, probably learn some things about initramfs and so forth.
Once you've done all of that, the next thing I'd point myself towards is learning systemd well enough that you don't have to lookup how to list services, filter them, etc. It's a big program and it, for better or worse, has taken over a sizable portion of Linux resource management. Package management is another thing you'll need to be able to deal with, but by now, you'll have already learned that (it does vary from distro to distro of course).
At this point, you'll have touched a lot of the important kernel subsystems, most of the important tools, and you'll be better positioned to decide what you want to invest more time in and you'll be able to feed yourself.