I have constantly been working with Linux for over 2 years from now. I remember how I started, messing up my system from the very first try to get to know Linux (my PC OS was indeed a little bit fragile back then), and how I continued from there, experimenting, messing things up and restoring them to their previous states – and gaining experience in huge portions through all the way forward. Now I’m the one who’s capable of teaching people about how things work and how to work with things.
I’ve decided to write a short guide from my experience for those who are trying not only to use, but also to understand what lies behind a nice-looking desktop of Linux PC and what all those words people type in console to solve problems are about. So, if you’d like to understand how a Linux system works and thus are ready to dive into a world of Linux – I’ve prepared some tips for a good start.
1) Get yourself a dedicated Linux machine.
Seriously, buying yourself an old PC/laptop/RPi/something else has never been so easy. Why not using a virtual machine? Well, VM is OK – unless you’re trying to experiment, which is what I’m talking about now. Of course, both VM and separate PC are similar – you can mess everything up but nothing happens to your main PC, so they free you of fear of experimenting 😉 But VM doesn’t somehow motivate you, at least, that’s what my experience is.
Why? It hasn’t got any real use. All the Linux PCs have one or multiple. And VM relies on the host PC – that means the same downtime. Downtime ain’t that good for your Linux server – not because it’s a word many system administrators in bigger companies are afraid of 😉 It’s just because your server has less time for performing some tasks. Thus, it’s much harder to give your server a real use.
Why should yours have one?
2) Make it do something useful.
Useful things are the outcome of your practice and experimenting that you really see. Your best indicator of how your training goes. If you have set up your Linux PC as a router, it will work for you. If you make your VM a router, you’ll turn it off to conserve energy and plug in your Linksys router instead. That’s not exactly useful. Make this machine do something in your home that doesn’t yet exist or make it replace something that already works. Making yourself rely on this machine is good – you’ll be trying to improve it to make it suit your needs. What tasks could one possibly have with a dedicated Linux machine?
- Home router (gateway)
- File server (All your files still belong to you, but you can access them from everywhere)
- Backup machine (never losing your files again! Or, at least, having more or less recent copy =) )
- Torrent server (breaking the law with so much ease)
- Audio streaming server (your favourite radio station playing your own music…)
- Audio streaming client (…or your favourite internet radio station always playing at home)
- Audio playing client (imagine speakers connected to one machine and this machine receiving sound from all other PCs)
- Web-server (platform for your practice in developing web-sites, or, maybe, even for your own public blog or 9Gag clone)
- Info station (like laptop always turned on and showing weather conditions on its screen)
- Alarm clock (your wakeup is no longer defined by those default 10 alarm tunes in your mobile phone)
Could be this, or….
[Madskillz] Home automation centre (imagine turning on the teapot while you’re 5 miles away from home!)
[Logan’s Loophole] Robotic barista mixing drinks as you wish to
[Control freak] Surveillance camera control centre
[IMPOSSIBRU] Device automatically hacking every network available out there (no link, sorry)
[Super Intelligent] Your own Artificial Intelligence Unit, just one Debian package away! [Lie]
Ok, you got the point. You could also combine things, like torrent&file server, hacking
neighbours’ networks in free time – how is that to you? But one thing is definite – it should do something. You’ll be pleased by your results, you’ll get more experience and those cool real-life features that no VM could provide will make you want more of those features.
Being in a never-ending circle of getting experience – does it get any more cooler?
3) Be prepared for the mistakes
Things break. Happens to everybody, sometimes it’s the user’s fault, sometimes it’s all about developers’ typos – but still, you will make mistakes, and if you’re new to Linux –
mistakes will be unavoidable, Linux needs some additional knowledge. Either way, you’ll be sometimes forced to fix things. Sometimes it will be much better to just start everything again, waiting for an hour as OS is being reinstalled…
BTW – great power of Linux is that even in case of major problems it hardly needed to reinstall OS itself, but the thing is you’ll need to do this if you experiment as you’ll learn to mess things up much earlier than you’ll learn to do them right, and sometimes learning to repair and repairing is much harder than to recognise just why this happened and learn to never do this again, so you need to decide if that all debugging and fixing is worth it. Not to mention that trying to fix a problem for hours
makes you frustrated – if you have the possibility to somehow roll back, either by restoring a backup or simply reinstalling, you’ll save your nerve cells.
As a conclusion for this – don’t throw out your
installation CDs 😉
4) Make backups as long as you do something good
Backups are not necessarily large files containing full snapshots of your system. Sometimes it’s OK just to save link to instructions that helped you set up Linux gateway. Sometimes it’s good to backup your command-line history as this will remind you which commands you’ve used to do this or that. Sometimes you’d want to backup your /etc/ directory somewhere else – it’s your server and you have some configs there that you worked on for hours, combining options to ensure the solution is perfect. Why’d you want to lose them? And, provided that you experiment, you might lose them, so ensure you don’t.
Simple cp command in cron to always attached flash drive should be enough.
5) Don’t be afraid of command line
See, Linux is kind of based on command line and heavily depends on it, unlike Windows, where you can hardly do anything from it. So if you want to learn Linux, you need to learn all those commands. As we all know, practice is the best kind of learning – so remember that GUI shouldn’t always be your assistant in doing things. In Linux, GUI utilities that help you do stuff can’t do anything that can’t be done from the CLI – keep that in mind when you, for example, configure “pulseaudio” and need to download many, many GUI tools that’d help you do that.
It doesn’t necessarily mean that you need to use only CLI in the beginning – it’s hard to just switch. Yet commands aren’t that hard to learn. It’s possible that after some time you’ll be willing to learn some new awesome commands that your system is able to process. Also, feeling when you don’t need to move your hands from the keyboard to the mouse is awesome, at least for me 😉
Not even mentioning your increased typing speed after mastering command-line tools.
I guess that’s all by now. The next article you’ll probably find useful will be telling about Linux distribution that I am using – Debian. I’d like to tell you about the most important things – why I chose Debian, why I’m still using it, and why I think you should at least try it, as well as give some basic overview of Debian as a system. And, should you have questions about this article – just ask!