Improving familiarity with Linux

To get my setup out of the way, I’m currently running Arch with XFCE on a Dell 15 7559. Using it on my laptop as I’m not ready to make it my daily driver.

I’m looking for suggestions on how to get more familiar with the OS and becoming more proficient with the overall workings. I’m able to do the basic things (download and update packages, install the OS, DE, basically get it running and do simple thing).

While the usual straight forward “do things, break things, fix it, repeat” might come to mind, I’m looking for things that are actually useful while getting me(or anyone) more familiar with the lower level things. For example, I learned everything I know about hardware and windows from troubleshooting and fixing PCs because there was a use/goal and was able to retain the information. But I wouldn’t have been able to remember much by aimlessly reading whitepapers and forum posts.

I’m not opposed to having to troubleshoot and do some reading (duh).

TL:DR - Useful customization and general usability to improve proficiency with the OS

1 Like

Hmm, this is a tough one. It’s a very open ended topic without a clear solution.

I’ve been using Linux for probably 12 years now and the things that have taught me the best were either trying to solve a problem or trying to fix something I broke (while trying to solve a problem). So, let’s get you some problems to solve.

I think the first thing to do is to check out this thread:

while this is more on the Sysadmin side, I think it will be a good jumping off point for you. A lot of this is applicable for home users and sysadmins alike, since Linux on the server is very similar to Linux on the desktop.

A pretty handy way for learning Linux is using it.

So if Windows already fills the gaming and general use niche find another use for it.

If you are interested in programming use it as a dev environment with a text Editor and shell. This can be done either installed or in a VM.

If networking is up your alley use a raspberry pi or other cheap computer to run monitoring software like Naigos. You can run GNS3 on a desktop to simulate network and build general IT skills. Run a DNS server or hardware firewall. Pihole acts as whole network adblock via DNS redirects which is pretty cool.

You can virtualize (or chroot/containerize) any of the mentioned things or do hardware pass through for fun and education with KVM or Xen. Both are bare metal hypervisors that see use in industry.

Running a web server can be done on almost any hardware and Virtual private servers. Stuff like a rss aggregators, read it later and cloud storage are things you will actually use and can get you familiar with the LAMP stack mail.

If you want to disect the OS and learn what makes it tick use it on old/cheap hardware. It breaths new life into expensive paperweights and you. Setup a SSH server so you can use it while on your daily driver. I find having a SSH box setup to connect with a VPN really useful so I don’t have to run a VPN on my desktop.

Linux makes a decent storage and media server. I perfer BSD for this though. Stuff like VLC stream capture, Open Broadcaster, Plex and Subsonic give some really neat options for how you use, share and stream content.

Chromebooks, old hardware, VMs, VPSs and single board computers are great low risk ways to try new things. Linux from scratch and Gentoo and BSD are great to try on those and teach a lot about operating systems.

TLDR: Use it in a way you will actually use regularly.

Best way I learned about linux was to do a full-dive as my daily driver and then breaking everything which in turn I had to un-break; thus expanding my knowledge on how it all ‘fit together’.

This was on purpose as there’s no bad suggestions in my opinion.
I have the linked thread and “So, You Want to Be a Sysadmin?” bookmarked as they seem to be valuable resources.

This is an interesting idea and would put my Pi to use, but i wonder if running PFSense would be a better option for network monitoring or really anything network related.

I do plan on moving over to Linux for most general daily use in the near future. Just waiting on Ryzen+ and z390 information to see what they have to offer. I’m going to mess around with Docker, Looking Glass and a few other things when that time comes.

Like others have said breaking things, troubleshooting, and fixing them is a great way to learn. The more this happens the easier troubleshooting becomes.

Other ways I have found useful are setting up a home server for things such as media and cloud storage.

Also writing bash scripts which use common Linux tools is a good way to pick things up. If you think of a problem, try solving it with a script.

PCI passthrough is an awesome and worthwhile project to do if you’re going to be playing video games.

Good Luck!

1 Like

Well, snort requires a lot more horse power than Naigos.

PFsense is more a all in one solution so if you want that it could be better. But, if you don’t need firewall, routing, and DHCP, Naigos may be a better solution.

Honestly my best advice would be todo a LFS install. You will become very familiar with linux and its inner workings as you are building this install up.

http://www.linuxfromscratch.org/

1 Like

By lower level things, how deep down this rabbit hole do you want to go?

Are you willing to learn a programming language, such as C or Python? If so, that will make your goal much more easily accessible.

You could build your own package manager. In school, my class and I did something similar, but it was more of a rudimentary file system. We also utilized Apache’s Portable Runtime Project. There are a few books out there that emulate this project as well.

https://apr.apache.org/

What does this project do for you? This teaches you how to use libraries, make, and Makefile. You can put in a lot of time and see how software integrates with your system. What does ./configure and sudo make clean do?

http://www.cs.colby.edu/maxwell/courses/tutorials/maketutor/

That’s a great tutorial on Makefile.

If that’s not what you’re looking for, or if you’re not ready for the task of mastering C, I would look into bash scripting. Learning useful bash commands can help you navigate and work within a system, but learning how to chain those together into useful script files can create an environment where you’re never manually repeating a task, putting common, but not daily, applications into a container and spinning up and tearing down when they’re needed, and understanding how processes interface with the kernel or the operating system.

Once you understand how all of that works, and you start to feel that itch that a simple scratch won’t remedy, you can revisit C in a Unix environment and begin to truly customize your system. I don’t mean change the colors or make ls -la look purple in a tree directory structure, I mean your processes running on your system doing tasks that you deem necessary.

Day to day usage will help, as the others recommended. But you can use Linux daily for years without running any sort of system diagnostic or taking a peak at background processes. You have to want to dig in. But, I will warn you, as I’m sure others can attest to, once you start, you will never stop. Your wife will grit her teeth when you say “Just a few minutes”, because she knows that at 3:00 AM you’ll still be at your workstation, forging the future. Your coworkers will fear you, because their years of dedication and seniority pales in comparison to your endless reservoirs of knowledge. Your clients will conspire and grow paranoid, because what they were quoted as a 6 month project, you finished in a weekend. Sure, you’re still going to offer the support they want, but at the end of the day, the A.I. you’re utilizing and containers you’ve built take care of 90% of what any help desk could do.

Anyway, have fun! Hope this helped :slight_smile:

2 Likes

Some good suggestions in here. Thanks all

Feel free to add to this if you think of anything else. If it isn’t useful to me, it could be useful to someone else

1 Like