---
image: https://i.imgur.com/Arh9ThZ.png
description: Just my understanding of this beloved system so far
---
# Why Linux and how
###### tags: `archived` `tutorials`

After Windows 7 reached it's end of life cycle and you're sitting there thinking whether to upgrade to Windows 10 or buy a Mac instead, but not really enticed to switch to both platforms. So maybe you've heard of this operating system called Linux and all the geeks/nerds raving about it. What's it all about?
## Preface
In this article, I would talk about
- a brief introduction to Linux
- people that **SHOULDN'T** consider Linux as their main operating system
- the advantages of using Linux
- a brief guide to setting it all up
- how to startup
- some recommendations on starting up
- what applications I recommend to use when you first come over to the Linux world
- some alternatives of Windows or Mac applications
- how to find alternatives for the application that is not listed
---
I would like to clarify that I am fairly new to this operating system myself, but fret not, it's not as complicated as it might seem. The target audience of this article will be mainly for Windows and Mac users but other operating system enthusiast is very welcomed to chip in this article as well. There are a lot of concepts in Linux that are "dumbed down", so it doesn't intimidate the target audience when they first try out Linux.
---
With that out the way, let's talk about this thing we call the "kernel".
## Introduction
Linux is an operating system, or as nerds more like to call them a "**kernel**". Just like Windows and Mac OS is a kernel, Linux is just another kernel. It's just a more technical way of saying operating system really.
Oh.. just in case you don't know what an **operating system** is, think of it as Windows 7 or Windows XP, it's what makes your computer more usable. Otherwise you would need to fumble around the electronics of a computer manually to actually use it. The operating system is the thing that makes your computer able to use applications like Chrome or Word because a computer is just a few rocks with electricity in it.
I digress, Microsoft develops Windows, Apple develops Mac OS, so who develops Linux? That's a tougher call. Linux is created by a Finnish computer scientist named Linus Torvalds. He doesn't actually have a company per se to develop Linux, but a lot of people and big companies, like IBM, Canonical etc, have contributed to this "project" called Linux.
<center>Linus showing his desk setup</center>
{%vimeo 246959904 %}
You might thinking to yourself, why do these companies use Linux? More importantly, why should I use Linux? To answer the first question, a lot servers run on Linux (or BSD), Android is created from Linux, Chromebooks use a version of Linux. So, if you use an android phone (Samsung, Huawei, HTC) or use the Internet, you've more or less used Linux to help you before!
### Who shouldn't use it
Now, Linux is not perfect. There are instances where it's not as good as Windows or Macs. So I've compiled a few reasons you might want to stay away from using Linux
- **Sound engineering**. There's a running joke that audio on Linux sucks, but in fairness, if you're just watching YouTube or listening to Spotify this won't affect you much.
- **Adobe software users**. Although you could do a lot of art effects on Linux, it's not as feasible if your whole career depends on Adobe software, because there is no Photoshop, Illustrator in Linux. There are fantastic alternatives like Kdenlive for Premier, Krita for Illustrator, GIMP for Photoshop. For the vast majority of users, it's already overkill, but if you **MUST** use Adobe software then Linux is not for you.
- **Gaming**. I don't think this would annoy Mac users as much because they don't seem to have significantly more native support on games than we do. (Epic is a dick). But listen here. gaming on Linux is getting better exponentially. There is a thing called Proton (for Mac Users think of it as Wine for Linux, but better), you're able to run Windows games on your Linux machine. You could checkout their [website](https://www.protondb.com/) to see if your game runs on Linux or not. And yes Minecraft works just fine.
{%youtube Co6FePZoNgE %}
- **Microsoft or Apple fans** because why DID you read this article? We could open up and edit Word documents on Libre Office just fine, though if your company *MUST* have good Microsoft support, you could always use Office Cloud.
- **Battery Life (Mac users ONLY)**. Because I will admit the power management on Macs are better, though not by a lot. Windows just eats up your battery way too easily. However there is a tool called `tlp` if you ever need something to help you with battery life on
For everyone else, you would be surprised to see how much Linux could work in your favor.
### Advantages of Linux
Here are some advantages of using Linux
- **Low memory and CPU usage**. Linux is notorious for using fewer less resources on your computer. That means that, in theory, you could expect to use more applications and run it smoother than Window. For comparison sake, on a 64 bit system, Windows require you to have 2 GB of RAM and on some Linux system, 256 MB of RAM. Yes, **Megabytes**.
<center>Linus Torvalds (creator of Linux) on Nvidia</center>
{%youtube i2lhwb_OckQ %}
- **Driver support** Driver support for Linux is quite phenominal. If you're using a fairly modern system then more often than not the drivers are all set up by default. I mean there's even a i386 and ARM versions of Debian so, your platform is probably supported.
- **Upgrading and installing applications are easier, cheaper and safer**. I'll demonstrate this in a later section. For now, just know that all you have to do is to type the same line of text into your computer and your computer will magically install and update everything, mostly **without forcibly rebooting your system**.
- **No annoying force updates (Windows users)**. Talking about forcibly rebooting, I'm sure you have all encountered Windows trying to get you upgrade it's system when you're doing something super important and you haven't saved the document down, and it just shuts down. There. Done. Your whole days or weeks or work, down the drain. It also takes *forever* to actually get done updating the system.

- **No ads and stupid applications (Windows users)**. Since when did you ever want Candy Crush *pre-installed* on your computer with Norton security that probably doesn't do it's job anyways?
- **It's free**. The only cost would be your time to read this and install it. (Notable exception would be `Zorin OS` but I personally think that's more enthusiast)
- **F the NSA**. You've probably heard of Apple and Microsoft giving the American secret agency some of your information. (visit [Edward Snowden](https://en.wikipedia.org/wiki/Edward_Snowden)). Yes, even if they say they don't give any governments your information, you could never know for sure, right? With Linux, the code for your kernel is open for everyone to see, so you could make sure your computer isn't spied on intentionally. But wait! If the code is open for all to see, isn't it easier for hackers to hack you?
- **Security**. As your computer's kernel is open for everyone to see, everyone could point out all the security flaws and problems of your system! The developers could patch it up quickly and make it more secure as long as your system is quite popular and there are people willing to check the kernel, your system is well guarded.
- **Your computer is yours**. I am sure you've all tried to have access a file and your Windows or Mac computers tell you access denied, even as an administrator. In Linux, if you want to self destruct, you could totally do that with the following command.
```bash
sudo rm -rf / #This is more of a running joke and it would actually not terminate
```
- **Looks exactly you want it**. Check out [unixporn subreddit](https://www.reddit.com/r/unixporn/), no, there's no explicit content.
<blockquote class="reddit-card" data-card-created="1584206188"><a href="https://www.reddit.com/r/unixporn/comments/9ysbx7/oc_a_little_project_that_ive_been_working_on/">[OC] A little project that I've been working on... inspired by one of the greatest posts of this sub</a> from <a href="http://www.reddit.com/r/unixporn">r/unixporn</a></blockquote>
<script async src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script>
## Startup guide
So we all on board the penguin train? Right, Linux, unlike Windows and Macs, has a lot of different distributions. Distribution are like the different flavors of Linux. It's like pizza, you could have Hawaiian or Neapolitan styled etc. but they're all pizzas right? If you would like a slightly detailed overview of the various distributions then you could check out my other [article that talks about various distributions](https://hackmd.io/@imfulee/B1BNOHgQL)
For windows users, I recommend using Linux Mint and for Mac users, I recommend Ubuntu. The reason why I choose these is because they look more or less the same as Windows or Mac OS respectively and they are the most popular versions of Linux, so it's easier to find answers on Google. There are various tutorials online that show you how to install Linux alongside Windows, so I'll just link you the ones that I've followed.
> Now I know there's going to be an mini-outrage on my choice of Ubuntu, but for the new users it's better to provide them with `snaps` than without, because it's has a smaller learning curve.
- Ubuntu tutorial
- [Ubuntu download page](https://ubuntu.com/download/desktop)
- [If you just want to use Linux](https://ubuntu.com/tutorials/tutorial-install-ubuntu-desktop#1-overview)
- [If you want to use Linux and Mac OS](https://itsfoss.com/install-ubuntu-dual-boot-mode-windows/)
- Linux Mint tutorial
- [Linux Mint download page](https://linuxmint.com/download.php)
- [If you just want to use Linux](https://linuxmint-installation-guide.readthedocs.io/en/latest/)
- [If you want to use Linux and Windows](https://itsfoss.com/guide-install-linux-mint-16-dual-boot-windows/)
These are also links to some tools you might need on your respective operating system
- Balena Ethcher https://www.balena.io/etcher/ (For Macs)
- Rufus https://rufus.ie/ (For Windows)
A basic in-order overview of the tutorials would be:
- Download the required `.iso` file. This contains the installer for your computer. For example, go to the download page of Ubuntu and download the `.iso` file.
- Now, find a usb drive (around 4GB) that you don't want and use Rufus/Etcher to install the `.iso` file on your usb drive. Your usb drive now is your boot loader. You could think of boot loaders as things that help start your computer.
- Shut down your computer and when you reopen it, press down on the `F2` or `F10` or `F12` key (depending on your computer) to get into the BIOS/UEFI settings. Then you should be able to change your boot order, select your usb drive as your main boot device.
- Follow the instruction on screen. Namely the language you want, keyboard, password etc.
- There will be an option called partition. A partition is basically splitting your computer's storage into two pieces, so you may be able to use Windows and Linux together.
**That's mostly it**. If you want to just test it out online whether you like the interface or not, you could use https://distrotest.net/ which has a wide array of different systems you could try out before actually using it. You could also use [VirtualBox](https://www.virtualbox.org/) or `qemu` if you know what it is.
## Applications
Once you're all set up, we could dive into the alternatives that you may use for your everyday life. The following format will be like this:
- **Windows / Mac applications**
- Linux alternatives
Right, let's get on with it
- **Microsoft Office** or **Pages, number, keynote**
- Libre Office, Open Office, Google Docs, Office Online - all 95% compatible with Microsoft Office
- **Adobe creator software**
- Krita, GIMP, Inkspace, Da Vinci Resolve, Kdenlive
- **Podcasts**
- Cpod
### Installing the application
This is going to blow your mind and might brain fuck you for a while, but I promise it will be all worth it. You normally have two ways of installing your application on Linux, using the app store or using the command line. Yes, **the command line**. Before you turn your nose away, I'll talk about the app store.

So there is an app store in Ubuntu or Linux Mint and you could always download applications from there like you would from your phone. But when you don't have the application you need, the command line will be your favorite friend, I guarantee it. Open up your `terminal` and type `sudo apt update && sudo apt upgrade`, this will update and upgrade your whole system before your start downloading things.
Now, I understand the command line is scary at first. But think of it this way, if you're able to just type in a few words and the whole computer will upgrade itself, isn't it easier than getting all the update notifications and manually upgrading all the software?
Plus, it's from a community driven app store, wouldn't it be safer than going onto some random website, downloading a file and hoping that it doesn't contain viruses?
So, to demonstrate downloading applications, let's say I want to download Chrome, Spotify, Sublime Text/Atom, Steam.
#### Chrome
For Chrome, you could download a thing called Chromium, which is just an open source version of Chrome. All you need to do is open up the `terminal` and type
```bash
sudo apt install chromium-browser chromium-browser-l10n
```
If say you *just* want Chrome, you could go to Google, search for Chrome and download the `.deb` file into your computer. Type
```bash
cd Download
sudo apt install ./google-chrome-stable_current_amd64.deb
```
and you're good to go.

---
**Small note**, copying and pasting from the command line would require you to either use the mouse or on the keyboard `Ctrl`+`Shift`+`C` or `Ctrl`+`Shift`+`V`. `Ctrl`+`C` and `Ctrl`+`V` is not copy and paste on the command line.
Just to explain **what's going on**, the command `cd` means take me to this folder, so `cd Downloads` tells the computer to go to this folder. `sudo` means I am the ~~g~~root user, which also means you're the master of your laptop, you could do anything you want. `apt` is called the package manager. A package manager is an application that manages your packages (eye roll), you could think of it as your app store but you need a command line to use it. In this case `apt install` installs an app and `apt update && apt upgrade` updates your computer.
`.deb` files are installer files for `Debian` based systems. You don't need to know what `Debian` based means, just know that if you're running Ubuntu or Linux Mint, download the `.deb` file and not `.rpm`. If you do want to understand what Debian based means, I have a separate article on that (working progress).
---
But in all seriousness, using Chrome really isn't a good idea for your privacy, use Firefox instead. If you need the Chrome extensions use Brave or Opera.
#### Spotify
For Spotify, there are a few more commands but it's just as simple as copy and paste.
```bash
sudo apt install curl
curl -sS https://download.spotify.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb http://repository.spotify.com stable non-free" | sudo tee /etc/apt/sources.list.d/spotify.list
sudo apt-get update && sudo apt-get install spotify-client
```
---
Just to explain **what's going on**, since in the `apt` app store , there is no Spotify, therefore we would need to add it in ourselves. To do that we need `curl` or `wget`. `curl` or `wget` is like a downloader, and through that you downloaded the 'key' and added it into the `apt` app store. Refresh the app store and download the app.
---
#### Text Editor
For **Sublime text**,
```bash
sudo apt install wget
wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list
sudo apt-get update
sudo apt-get install sublime-text
```
For **Atom**,
```bash
wget -qO - https://packagecloud.io/AtomEditor/atom/gpgkey | sudo apt-key add -
sudo sh -c 'echo "deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main" > /etc/apt/sources.list.d/atom.list'
sudo apt-get update
sudo apt-get install atom
```
For **Visual Studio Code**, it's the same as Chrome, just download the `.deb` file `cd Downloads` and `sudo apt install ./whatever-that-name-is.deb` However, do note that you're downloading the closed source version rather than the OSS version.
For **Vim**, just hit
```bash
sudo apt install vim
```
---
**Small tip**, when you're typing out that `./some-name.deb` file it's really annoying to type out the whole thing, you could just type `Tab` and it will auto fill for you.
The `Up` and `Down` arrows function as the command that you've recently used.
---
#### Steam
It's almost the same as Chrome, go to the Steam website and hit the download button, and you'll get a `.deb` file and you'll just install it with
```bash
cd Downloads
sudo apt install ./steam_latest.deb
```
You could always search online for more details, because I don't really game, so I don't know much about this area. I do know that you might need to setup your GPU if it's from Nvdia and downloading `Wine` and `Lutris` would help a ton.
---
Also, for gaming I would recommend using `Manjaro` or `Pop!OS` instead. I've heard it's easier for gamers, but `Manjaro` would use some different instruction set and I'm a bit lazy to write about `Manjaro` commands as it is a `Arch` based system.
---
{%youtube 8vXJlg0559c %}
### Other programs
There are some programs I recommend using when you're on a Linux system, I won't dive into how to install them all, because it's going to make this article way too lengthy and I'm lazy. Your install is probably just a Google search away.
#### zsh
You could also install this on a Mac. Basically it makes your command line prettier and more functional, though your terminal would launch slightly slower. If you want something faster, I recommend using `bash-it` or `fish`.
**Side Note**, zsh is *not* ZFS, they are very different things.
#### Git
This is a must if you are a programmer and intend on using anything Github or Gitlab related.
#### VLC
There are some video and audio files that could not be opened by the native music or video player. This adds in those features and some media codecs that could be used.
#### Gnome tweaks
This is only for Ubuntu (more generally Gnome) users. This basically changes how your desktop looks and you could make it look like anything you want. Yes, even if you want to make it look like Windows or Mac OS, it is possible.
#### Fonts-firacode
My personal favourite font for programming.
#### Everything else
If there is something you need, you could just Google it, there are probably answers online.
### Language support
This will depend on your system and on the language you want to install. If it's in Latin characters, you could probably just change it in the settings. If it's not in Latin characters, it's an entirely different beast, manageable, but still a beast.
For me, I use Ubuntu and I would require Simplified / Traditional Chinese support. I would recommend using `ibus` for your input (as it's more natively supported on the Gnome environment) . There are also other input methods like `fcitx` ,`XIM` etc. But for Ubuntu and my use case I like `ibus` the best. If your language or input method isn't supported by `ibus`, it is probably supported by `fcitx` or `XIM`.
For `ibus` pinyin support, I would recommend using the following command.
```bash
sudo apt install ibus ibus-libpinyin
```
For older versions of Ubuntu, it would be recommended that you download some Chinese fonts. This could be achieved through Google and downloading the `.ttf` file. Open it and hit install.
Then go to settings > region & languages > manage installed languages > input method system, select `ibus` and apply to system wide. Restart your computer, go to settings > region and languages and add `libpinyin` (**NOT** `Chinese`) into your selection and you're done.
## Done
Yeap, that's about it. Most of your system is ready for action. If there's any more problems, you could contact me or **just Google it**. Happy Linuxing!
## Acknowledgement
Here are some light remarks
- I have received a lot of feedback regarding the choice of the distribution. `Suse`, `Manjaro` and `PopOS` have been the notable popular choices to be named for this tutorial. Also, I know `Ubuntu` is well disliked by the Linux community, but it's really easier for new comers to learn it because of all the tutorials and amount of questions asked online
- If you choose to dual boot your system, then you will encounter something called `grub`, which for newbs, you could think of it as a program that let's you select whether you want to use Linux or Windows.