You may have heard us speak positively on the show about using Linux as a desktop operating system. Mike has gone to the dark side, Phil has a few distros rolling around on his laptop, and I generally have Ubuntu, Debian, or Fedora on a harddrive in my desktop as well as on a laptop.
Before you go any further, take some things into consideration. These are common hiccups and tips that I wish I had known all those years ago when switching my host operating system to a Linux distribution.
Linux Distros Are NOT Windows
No matter how many people tell you that LibreOffice Calc works with Microsoft Excel macros or that you can do X task in the browser, always test YOUR environment to your specifications before you commit anything. Most of the gaming on Linux is done through a complicated setup or through a virtual machine that has a hard drive and graphics card passed through to the Windows VM. Even with everything tweaked perfectly, performance just isn't optimal. I have a 1440p monitor at 165hz and a damn good graphics card and sometimes I get terrible lag and stuttering on games in Linux. If you're a fan of MMOs or mainstream new releases, best keep a physical Windows computer around to play games. Dual booting is always an option, but always back up your Linux environment. Sometimes Windows doesn't place nicely with GRUB (the Linux bootloader).
Hardware Doesn't Work Out of the Box (Sometimes)
This is a typical installation menu. Likely, with UEFI, you'll see a different screen. If you have an nVidia graphics card or a newer AMD card and you boot to a black screen after selecting "Install Fedora 28" (or your favorite distribution's name), you can make a change easy enough to get you through the installation.
In the above image, you would press Tab, however in UEFI you'll want to press E.
Next, find the line that has "quiet" or "quiet splash" and add
nomodeset to the end of that line:
It looks like the entry is made on the next line, but that's only because the text is wrapping.
From there, you can press Enter or Control and X to continue, depending on your setup.
Dpending on the kernel installed, you'll have to do that again after the system is installed. Just select your kernel version and type
nomodeset after quiet or quiet splash and install your graphics card driver.
Use the NetInst ISO for Minimal & Customizable Experiences
Debian, openSUSE, and Fedora have awesome Internet based installation ISOs for tailoring your install to fit your needs. Want Git, C development tools, an office suite, and some network security tools? Just check the boxes and you'll be on your way!
You can even choose the desktop environment that's best for you, without having to choose a particular version of the ISO.
Using these installation mediums have saved me a ton of time and I get an ideal environment out of the box. From here, I'll pull some scripts or install a few tools like Sublime Text and IntelliJ and be off.
Use Linux for the Strengths
Kind of goes with the first point, but don't try and make Ubuntu or Fedora into something that it's not. They are computer operating systems built to make a series of tasks easier. Today, they are built with the user in mind, but emphasize on the tinkerer, programmer, or engineer. While I may be making a ton of presumptions, expect to put in a bit of work to get your distro working. What are these strengths of Linux?
Simplicity. If you need something installed there is likely a package for it you can install via the package manager (apt, yum, zypper). If not, you can build it from source (generally). If those options are not available, chances are the software isn't written for your distribution. Sorry, but it happens.
Flexibility. Everything in Linux operating systems is a text file. There is no registry to concern yourself with. If you want to change something, just find the config file and make an edit. With this comes a bold trust to the user, though. You will be responsible for anything that you change, including system breaking edits. Just be mindful of what you're changing.
Power. The raw power of a Linux operating system comes with, generally, the availability of resources at your disposal. Typically, you'll have a bit more processing and a bit more RAM to perform your tasks. There are some interesting benchmarks floating around.
Single core versus Multicore have more than a little variance. When utilizing that power matters, Linux will make a difference.
As long as you keep these things in mind when installing Linux, you'll be well on your way to being the next great engineer. Who knows, you might even get inspired to build your own operating system based on the Linux kernel!
Post Installation: What Matters
Installation and a few minor headaches out of the way, what next?
Definitely checkout the settings for your environment. In KDE, you have a few options for theming and arranging things. For Gnome, checkout
gnome-tweak-tool as well as some extensions like
Dash to Dock and
No TopLeft Hot Corner. They make a difference for me and enhance the UI a bit.
Next, you'll need some software? Sublime Text has a repo you can add for major operating systems:
And Jetbrains products come with a .tar that you can extract and run the installation:
/product-name-and-version/bin/product.sh is generally the path to install it.
Your language interpreters and installers:
gcc and clang for C and C++ development
golang for Go development
jdk-devel or openjdk for Java development
php and php-common will typically grab everything for PHP development
Rust is through their site:
curl https://sh.rustup.rs -sSf | sh
If you want to use another editor, such as VS Code, or another platform, such as .NET Core, definitely checkout the website for those resources to get going on Linux. It's fairly simple.
Good luck! Happy Coding!
Let us know what you think about the Linux operating system and your experience using it.