The Linux Learning Path

UrBaN963

Honorary Master
Joined
Jul 27, 2016
Messages
25,031
Reaction score
22,695
Location
JHB
So I've decided to up my Linux knowledge. Previously I had successfully installed Ubuntu and gotten drivers etc. working. Basically called it quits there.

I'd like to embark on the journey though, I'd like my Linux knowledge to match my Windows knowledge as I feel it would be both interesting and useful.

However - where to start? Need some guidance on a path to follow or basic project to get my head around.

I've got a fresh Ubuntu installation and drivers installed, all updates done, etc. However, that was all just from following guidance on webpages and copy/pasting commands. Useful and effective, but limited on the learning side as I'm doing a lot of things without understanding why.

Could you guys please either recommend resources or, better yet, advise on a project/path to follow to up my skills? Obviously there are a million things to learn, so a good starting point would be appreciated.
 
Format your machine and install whichever flavour you fancy.

Then force yourself to make it work for at least a month and you’ll have to learn along the way.

Then build a home server and make it run all your **** on Linux. Bonus making it work on Docker.

If you survive that you can go do the RHCA training and that should sort you out well and proper for knowledge.

Linux is very much a DIY thing. The more you make it work for you the more you learn and understand. It really doesn’t work for paint by numbers type training.

Lots of free stuff on EdX and such, but mostly having a goal to do something specific and then trial and error with Google is the way.
 
Linux is like Windows in that there is a wide range of stuff you could get into, e.g. networking, development, media creation, general productivity, ....

You will need to decide which area you want to get into first.
 
If you survive that you can go do the RHCA training and that should sort you out well and proper for knowledge.
To clarify I think you mean RHCSA (system administrator). RHCA is a whole other beast and akin to something like CCIE. It takes RHCSA (admin - 1 exam) --> RHCE (engineer - 1 exam) --> RHCA (architect - 5 specialisation exams) - so a total of 7 exams to get with an average of +-4 hours per exam in a hands on do or die scenario.
 
There’s no correct way of ‘learning’ Linux. As mentioned above, it’s broadly an operating system with the same core features as Windows or MacOS.

If you just want to use it as your main computer, then follow @SauRoNZA ’s advice and just use it without switching back to the OS you’re currently using.
Google is your friend when you have questions on how to do X, Y & Z.
Don’t be scared of the Terminal - it’s super powerful, use it to your advantage.

I have a home server running a headless Ubuntu server, mean there’s no UI - everything is managed via the terminal & SSH. Same with my cloud servers on Vultr.

and most importantly - have fun.
 
To clarify I think you mean RHCSA (system administrator). RHCA is a whole other beast and akin to something like CCIE. It takes RHCSA (admin - 1 exam) --> RHCE (engineer - 1 exam) --> RHCA (architect - 5 specialisation exams) - so a total of 7 exams to get with an average of +-4 hours per exam in a hands on do or die scenario.
Are the specialist exams "easier" than RHCE? Individually speaking. Or is the course work similar in length?
 
To clarify I think you mean RHCSA (system administrator). RHCA is a whole other beast and akin to something like CCIE. It takes RHCSA (admin - 1 exam) --> RHCE (engineer - 1 exam) --> RHCA (architect - 5 specialisation exams) - so a total of 7 exams to get with an average of +-4 hours per exam in a hands on do or die scenario.

Sorry yes dropped the letter there.

It’s the only bottom end certification thar actually teaches you something and tests your ability if you do write the exams properly.
 
Are the specialist exams "easier" than RHCE? Individually speaking. Or is the course work similar in length?

I haven’t personally gone past RHCE but I have been told the higher up ones are in fact easier for being more focused.

RHCE is very widely spread across concepts and can therefore be quite murderous.

Maybe the specialist ones just seem easier because people are already pretty hardcore at that level.
 
There’s no correct way of ‘learning’ Linux. As mentioned above, it’s broadly an operating system with the same core features as Windows or MacOS.

If you just want to use it as your main computer, then follow @SauRoNZA ’s advice and just use it without switching back to the OS you’re currently using.
Google is your friend when you have questions on how to do X, Y & Z.
Don’t be scared of the Terminal - it’s super powerful, use it to your advantage.

I have a home server running a headless Ubuntu server, mean there’s no UI - everything is managed via the terminal & SSH. Same with my cloud servers on Vultr.

and most importantly - have fun.

Yeah hence why I mention setting up your own home server and running your services off it.

Should have fleshed it out more stating that the point of that is going headless and learning to do it all via terminal.
 
Do be warned

The linux learning curve

curvems.png


Also

Dunning-Kruger.png
 
So I've decided to up my Linux knowledge. Previously I had successfully installed Ubuntu and gotten drivers etc. working. Basically called it quits there.

I'd like to embark on the journey though, I'd like my Linux knowledge to match my Windows knowledge as I feel it would be both interesting and useful.

However - where to start? Need some guidance on a path to follow or basic project to get my head around.

I've got a fresh Ubuntu installation and drivers installed, all updates done, etc. However, that was all just from following guidance on webpages and copy/pasting commands. Useful and effective, but limited on the learning side as I'm doing a lot of things without understanding why.

Could you guys please either recommend resources or, better yet, advise on a project/path to follow to up my skills? Obviously there are a million things to learn, so a good starting point would be appreciated.

If you’ve got some spare hardware install Ubuntu Server on an old machine or even a Raspberry Pi.

Now if you want to take it one step further setup Ubuntu Desktop on your main machine although not required it will force your hand a bit.

1. Go ahead and figure out how to SSH to the server.

1a. Learn to use vim from the very start to edit files. Don’t fall for the cop out of other editors and struggle later. Vi commands are built into many other Linux commands so just learn them now.

2. Once that’s done figure out how to make the SSH connection passwordless and more secure using SSH keys.

3. Maybe do something like changing the SSH port on the server to understand how editing works better and how to restart daemons/services without rebooting the machine.

4. Create a share on your server with both SMB/CIFS and NFS so you get to know both ways of working and then have your Desktop connecting to that. Can even let your Windows machines talk to it if that helps.

5. Take it one step further and learn how to make both shares connect automatically on boot up of your desktop using FSTAB.

6. You probably learnt a bit about permissions along the way already but did it the Google copy and paste way and probably made terrible mistakes. So now actively learn about permissions and tools like chmod and chown and what they do and how it all works.

7. Maybe make a second user on your server now and use the above permissions learnings to see how that actually works in practise.

8. Now you can start using things like tail and piping it into grep to monitor the logs in /var/log to see the above user logging in or failing their authentication etc.

9. You’ve probably cocked up mv and cp a bit by now learning how the paths and syntaxes work and how relative and absolute pertains to things. Maybe now you are learning the shortcuts and easy ways to get around the OS without a GUI.

10. Time to Cron - Learn what it is and how to use it. Maybe you make a small backup of something or write some log output or some such.

11. Now install something like Plex natively and make it work properly pointing it to some media folder with a movie or Tv show.

12. Install docker and then install Plex again from Linuxserver. Figure out what a bind mount is and get it to automatically fire on reboot etc.

12. Now take it further and install sonarr or radarr or even both in Docker and also some kind of torrent client. Make them all talk to each other and then push whatever to Plex.

You now have a functional Media server that can look after itself but probably spent a weekend trying to understand how the hell this Inception bullshit works with mounting paths and bind mounts.

Probably had some firewall or networking bullshit in between as well.

13. Take it further and install things like Nginx and Letsencrypt, DuckDNS and Fail2Ban and you suddenly have a web server secured on the internet.

14. Do it again and use Swag in Docker instead.

15. Host your own Bitwarden instance from said server.

16. Setup something like Uptime Kuma to monitor things and send you notifications via Telegram.

17. Setup a WireGuard server and connect to it from your phone or other devices and connect home to proxy your internet traffic.

If you haven’t learnt Linux along the way doing all the above I’ll eat my hat.
 
Do be warned

The linux learning curve

curvems.png


Also

Dunning-Kruger.png

It is quite hardcore for sure especially people who never really got into command line only systems and are used to clicking a mouse to do everything.

But there is that moment where something happens and suddenly it all just starts making sense why Linux is the better tool for a given job and then it escalates from there as more and more things just start making sense as being so much easier.

From there it becomes more and more rewarding.
 
Linux has been a daily driver for me since Ubuntu 4 (Dapper Drake), though Ive used Linux since the late 90`s. Its not that hard to learn. There is basically a tutorial and youtube video for a lot of stuff now. The best way to learn it is to make it your desktop and force yourself to have to learn everything (out of necessity) . Fiddle, break it, learn to fix it.

Docker is fine, but also learn to install stuff without docker, that way you learn about dependencies better.
 
It is quite hardcore for sure especially people who never really got into command line only systems and are used to clicking a mouse to do everything.

But there is that moment where something happens and suddenly it all just starts making sense why Linux is the better tool for a given job and then it escalates from there as more and more things just start making sense as being so much easier.

From there it becomes more and more rewarding.
I've run various distro's in VM's just to try them out over the years, it's always interesting.
Setup to where I can do the things I usually do on PC, multimedia and browser stuffs etc etc is really rather simple, most of it tends to be packaged anyway.
It's when something doesn't work that the learning curve spikes, when I need to figure out wtf
For e.g. when I only had Puppy linux to create a bootable Windows usb, I simply couldn't get it right, trying to run Wine even so I could use Rufus, no luck
After a few days I eventually opted to create an Ubuntu one instead on which I ran a Windows VM just to create a bootable Windows USB.

Learned the most there, think if you had to actually work with it day to day you'd really see the magic.
 
I've run various distro's in VM's just to try them out over the years, it's always interesting.
Setup to where I can do the things I usually do on PC, multimedia and browser stuffs etc etc is really rather simple, most of it tends to be packaged anyway.
It's when something doesn't work that the learning curve spikes, when I need to figure out wtf
For e.g. when I only had Puppy linux to create a bootable Windows usb, I simply couldn't get it right, trying to run Wine even so I could use Rufus, no luck
After a few days I eventually opted to create an Ubuntu one instead on which I ran a Windows VM just to create a bootable Windows USB.

Learned the most there, think if you had to actually work with it day to day you'd really see the magic.

Yeah the more specific goals you have to achieve the more you learn.

I don’t use Linux technically as my daily driver being on MacOS but I work with it in a headless server capacity in some way or other daily.

Containers have really changed it up in recent years and makes it so much easier than before. But you can’t really use those before you understand the Linux basics.
 
Starting out, I can highly recommend finding your way around a VPS server like Vultr or Digital Ocean.
Reason is, you WILL screw the server up and you will want to be able to just delete the server and spin up a new one almost instantly.

Can probably do the same on a virtual machine, but still spinning up a new server probably still isn’t as fast as you’d have to go through the whole installation process everytime and it’s annoying.

I remember my first time I tried to deploy a Python/Django website (with Posgresql database) that I developed.
I was a total Linux noob then (±2016) and I tried to get it up and running on a Ubuntu Digital Ocean instance.
It took me about 10 attempts - where I would screw up so badly, delete server and restart - (over the course of a week) till I finally got it up and running on a Sunday afternoon. And I was following a guide the whole way.

But the things I learnt in that week (the hard way) by actually trying to achieve something, is invaluable.
 
If you’ve got some spare hardware install Ubuntu Server on an old machine or even a Raspberry Pi.

Now if you want to take it one step further setup Ubuntu Desktop on your main machine although not required it will force your hand a bit.

1. Go ahead and figure out how to SSH to the server.

1a. Learn to use vim from the very start to edit files. Don’t fall for the cop out of other editors and struggle later. Vi commands are built into many other Linux commands so just learn them now.

2. Once that’s done figure out how to make the SSH connection passwordless and more secure using SSH keys.

3. Maybe do something like changing the SSH port on the server to understand how editing works better and how to restart daemons/services without rebooting the machine.

4. Create a share on your server with both SMB/CIFS and NFS so you get to know both ways of working and then have your Desktop connecting to that. Can even let your Windows machines talk to it if that helps.

5. Take it one step further and learn how to make both shares connect automatically on boot up of your desktop using FSTAB.

6. You probably learnt a bit about permissions along the way already but did it the Google copy and paste way and probably made terrible mistakes. So now actively learn about permissions and tools like chmod and chown and what they do and how it all works.

7. Maybe make a second user on your server now and use the above permissions learnings to see how that actually works in practise.

8. Now you can start using things like tail and piping it into grep to monitor the logs in /var/log to see the above user logging in or failing their authentication etc.

9. You’ve probably cocked up mv and cp a bit by now learning how the paths and syntaxes work and how relative and absolute pertains to things. Maybe now you are learning the shortcuts and easy ways to get around the OS without a GUI.

10. Time to Cron - Learn what it is and how to use it. Maybe you make a small backup of something or write some log output or some such.

11. Now install something like Plex natively and make it work properly pointing it to some media folder with a movie or Tv show.

12. Install docker and then install Plex again from Linuxserver. Figure out what a bind mount is and get it to automatically fire on reboot etc.

12. Now take it further and install sonarr or radarr or even both in Docker and also some kind of torrent client. Make them all talk to each other and then push whatever to Plex.

You now have a functional Media server that can look after itself but probably spent a weekend trying to understand how the hell this Inception bullshit works with mounting paths and bind mounts.

Probably had some firewall or networking bullshit in between as well.

13. Take it further and install things like Nginx and Letsencrypt, DuckDNS and Fail2Ban and you suddenly have a web server secured on the internet.

14. Do it again and use Swag in Docker instead.

15. Host your own Bitwarden instance from said server.

16. Setup something like Uptime Kuma to monitor things and send you notifications via Telegram.

17. Setup a WireGuard server and connect to it from your phone or other devices and connect home to proxy your internet traffic.

If you haven’t learnt Linux along the way doing all the above I’ll eat my hat.
Last sentence....
What colour hat would that be?
 
Top
Sign up to the MyBroadband newsletter
X