Table of Contents
- What is This?
- Basic Functionality
- Security vs Privacy
- Software Development
- Common Terms
I Want to Install Linux How Do I –
This here is a friendly guide to getting your question answered in the quickest possible fashion, while avoiding the potential pitfalls and speed bumps along the way.
Well, I kind of lied there. If you’re installing Linux, there are going to be speed bumps along the way. But this will hopefully alleviate some of that.
Why do you want to do what you’re doing? Are you looking to install Linux because it’s cool? Great! Have you tried running it in a virtual machine, first? I ask because this is a great way to get exposure to the installation process, graphical interface, and overall user experience before throwing it on your hard drive. Checkout VirtualBox or VMware Player.
Now, ask yourself: “Why do I want to install Linux?”
It looks cool
If the answer is that it looks cool, that’s great. Linux does look cool, and it is cool! Not only that, but when you use Linux, your cool points bump up instantly by 20, 50 if you’re rocking a core distribution like Debian or Slackware. Pro tip, don’t use Slackware
Some great resources for basic installation instructions:
“Do I have to read through the whole thing?”
No, I’ll admit I rarely read documentation cover to cover when I’m learning something. I dive in, hit a road block, search some forums, and then refer to the docs. If I’m stuck for a while I’ll start at the beginning. Really, you should reference those before starting and use them as a guide during the installation process. Truth is, if you’ve ever had to install a Windows operating system onto a hard drive or reinstall OS X, the process is very similar. The partition names are different, and the layout might confuse you, but generally the point and click process is the same.
IF YOU’RE USING ARCH
Yes, read the Installation Guide before and during installation. The installation process for Arch Linux is very manual and tedious. Some say that you will learn a lot about Linux during the installation process. I disagree, I think you learn a bit about installing Arch while installing Arch. I’ve learned more about Linux using Ubuntu and Fedora than I have Arch. But, I also learn a bit differently than others.
Once you’re done with your installation, you can find some other things to do to start exploring your new operating system:
Note, these are just suggestions. I never recommend blindly copying commands, scripts, or code and running them on your computer. Definitely do a little digging to see what something does before executing it as root or sudo.
Linux is Secure
Eh… Kind of? Security through obscurity doesn’t get you far these days. Out of the box, Linux operating systems do a lot of things really well. Sometimes, though, there is a lack of understanding as to what makes something secure.
Debian and Ubuntu have UFW out of the box (generally). Sometimes, it is disabled by default. I recommend referring to the man page about this one, because some of the configurations online leave little explanation and have a lot of guesswork.
Before we go any further,
man something is a great way to learn more about what you’re doing. Whether it’s apt, dnf, ufw, firewalld, go – doesn’t matter. Manual pages are a vastly underutilized resource in the Linux/Unix world. If you’ve ever used
Get-Help in PowerShell, it’s the same concept. I’ve heard criticism about man pages, that they’re poorly written and lack examples. I used to agree, but lately I’m starting to become a firm believer in that this is by design. You’re supposed to hack at a command/script, learn by failing, etc. That’s how all the previous greats did it before you.
Anyway, if you want to manage the traffic going in and out of your operating system, I’d get familiar with these tools and get to cracking on isolating your system from unwanted connections. This will likely involve a lot of trial and error, and a lot of “Web Page Not Found” messages when you try to hit up Level1 in the future. But, if you want to secure a system, start with the network. Head to your library and checkout TCP/IP Illustrated or DNS and Bind to dig into some networking material.
Your Linux operating system’s desktop is written in a modern software that is vulnerable like everything else in this beautiful world. Remember when I said earlier you shouldn’t just copy and paste stuff in your terminal? No? YOU JUST SKIMMED THIS?! Go back and read, please. You’re back? Great.
Don’t blindly run commands, scripts, or code if you don’t know what it is. I don’t care how many stars on GitHub it has or who told you to use it. No, you don’t have to learn programming to use Linux (but you will, ohhh you will. We all do. We all float down here, Billy).
Your web browser is the single most dangerous utility you have on your system right now. Very few attacks come through the network. You will receive most of your insecure nonsense through e-mail attachments, downloads, and malicious links in your browser.
Learn to read domain names of websites and e-mail addresses. @microsoft.com and @rnicrosoft.com are the exact same thing, everyone will tell you, especially when you’re just glancing through things. That kind of mistake owns people every. Single. Day. If you’re moving to Linux because you think it’s secure, the system itself isn’t going to make you secure, you have to make yourself secure.
Just to prove that the system doesn’t matter, read this:
Better yet, subscribe to Trend Micro’s blog, too. “Linux doesn’t get viruses” goes out the Windows (lel) when things like this start happening.
Read domain names, twice. Hover the link to see where it takes you. Don’t run source code or
make unless you know exactly what you’re running. Learn to use a local firewall to manage your system’s traffic. This covers a fraction of a percent as to what you’re going to need to concern yourself with, security wise. The most important thing to take note of is that Linux is not secure out of the box. Like anything, it requires a bit of work to lock down.
Linux is Private
“Wait a minute, you just covered this. What’s the difference in privacy and security?”
Great question. I attended a seminar a few years ago, and an English gentlemen went over this same subject. I’ll update this thread with his name but as of now I can’t recall.
For this discussion:
- Security - No anonymity, but my actions and property are hidden.
- Privacy - Anonymous, but my actions and property are visible.
Having security would be someone or something knowing that your name is Mickey Mouse, you live at 666 Walt Disney, and you work at Disney World. But, your web traffic, hard disks, and business transactions are hidden and encrypted.
Having privacy would be someone or something not having a clue who you are, due to a disguise or a mask, but they see that you’re protesting or performing criminal mischief. They have no way of knowing that it’s you, however.
ExpressVPN and Private Internet Access are two great Virtual Private Network subscriptions that will secure your location and web traffic. I cannot state this enough: Always evaluate the terms and conditions of the providers. Always. Today they don’t keep logs, tomorrow they do. Just something to consider. You should receive regular e-mails if you subscribe to a provider anytime the T&C are updated.
Digital Ocean and Linode have great guides for the DIY aspect of this.
Understanding Encryption is both a tall task and one that’s probably required if you want to continue down the privacy rabbit hole. My suggestion would be to get a good book, look at LUKS, VeraCrypt, DM-Crypt, and other home brews that are out there. Most Linux distributions will allow you to encrypt the /home partition and the hard drive during the installation process.
Be very careful when doing this and understand what you’re doing.
This scratches the surface of privacy related concerns, but again, Linux does not provide much privacy out of the box.
Cool Tech (ZFS, BTRFS, Hacking, Networking)
If you want to explore the vast array of kick ass technology Linux operating systems, file systems, and network stacks bring to the table, ask yourself: Has this been answered before?
Chances are, yes.
Even Level1Techs has a little search icon in the top corner. You can find a ton of answers on the sites listed above.
Linux is Good for Software Development
Ah, a master of the arts, yeah? Excellent. Developing software on Linux offers several benefits. One, you can mostly guarantee that your software is going to ship and run on a Linux server somewhere. You can get close to emulating that experience by using a Linux operating system to test that software.
A few things to consider – All of the tools are available on Windows or OS X, in one respect or another. Also, because it works on Fedora 28 or Ubuntu 18.04.1 doesn’t necessarily mean it’ll run flawlessly on your CentOS 7.3 or Ubuntu 16.04.4 box. Last, you can definitely emulate this experience on other operating systems, while serving your “off duty” needs such as gaming and mainstream software compatibility without running a full blown Linux operating system bare metal.
Now that that is gone, I definitely recommend running a Linux system if you are interested in software, security, or networking in a high caliber. You will have a rich experience that will grow with you over time as you evolve your skillset. Even if you just keep a VM on the side or a spare laptop, that’s still enough to warrant your attention every once in a while. If it’s your main system for daily use, push yourself and never get content with what you’re doing. I used Linux for almost a decade before I decided to actually build my own tools and engineer solutions to nagging problems. I shouldn’t have waited that long before I started doing real work and contributing.
My Hardware Doesn’t Work!
Yikes, I’ve been there. First thing you need to do is disable Secure Boot and try the installation medium again.
If that doesn’t work, try using these tools:
There are Mac and Windows options, and they both provide an intuitive graphical interface that will get you going. If you’re able to install or get to the installation screen, but your screen goes black – You might have an nVidia problem.
Press ‘E’ or ‘Tab’, for UEFI and MBR respectively, at the “Install Ubuntu/Fedora/Whatever” screen. Go to the line that starts with “linux” and use the arrow keys to navigate to the end of
quiet splash add a space after the word “splash” and type
Press enter, Control + X, or F10 to continue through the installation. You may have to do this once again after you do the installation until nVidia drivers are installed.
That should suffice for getting something going. If you get an error saying / not found or that there is a GRUB error, chances are you partitioned GRUB to the boot media or you made the partitions incorrectly. Refer to the guide above for the recommended partitions.
This section is to assist with those that might not be familiar with some of the acronyms and abbreviations in the Linux world.
LAMP: Linux, Apache, MySQL, PHP. This refers to a common “stack” for web servers/web development. Word Press and Drupal are common LAMP stacks. Essentially, Linux is the base system, Apache is the web server controlling the requests and responses to/from the web server, MySQL is the database handling the data, and PHP is the language/framework the program is written in and running on. There are many supplemental components to this, such as using MariaDB or PostgreSQL in lieu of MySQL.
LEMP: Linux, nginx, MySQL, PHP. Less common than LAMP stacks, although probably not anymore, rather than use Apache as the web server nginx is used. It’s also common to pair nginx with Apache, due to the load balancing and proxy capabilities nginx has with Apache’s robust system.
IaC: Infrastructure as Code. This involves building deployment pipelines and provisioning infrastructure “as code”, rather than a string of shell scripts or manual click steps. The code is commonly a Domain Specific Language, or DSL, derived or comprised of another language, such as Ruby, Java, JSON, or YAML. Common IaC frameworks are the AWS SDK, which has PHP, Python, Java, and Ruby (among others), Terraform, which is written in Go but implemented in YAML, Docker-Compose, another YAML structure, Azure templates; JSON, Ansible; YAML, and… well, this could go on forever. A few members on this forum utilize IaC in their day to day so feel free to create a separate post discussing or asking about the merits of each.
WSL: Windows Subsystem for Linux. A new component on Windows 10 systems that install a somewhat limited iteration of a Linux operating system of your choice. Many of the native Linux capabilities are possible in the WSL, but performance may differ greatly.
WINE: Wine is not an Emulator. Recursive humor. WINE is an emulator used to run software native to Windows on a Linux operating system. There are “grades” on how well it performs compared to the native Windows build, and sometimes can be inconsistent.
GNU: GNU’s Not Unix. An acronym made to differentiate Linux at the time from its Unix counterpart. Linux is really the kernel, and GNU (and Qt, at this point) are the suite of tools that make up the operating system components useful to the user.
Add more terms
Hopefully this can turn into an organic, living document and grow as the needs of the community change.