Introduction:

I struggled coming up with a title for this post. I’m not bothered about breaking up content into multiple posts and maximizing view counts. I knew this was going to be long, but I wanted a post that had all of the following details:

  • My Linux Operating System of choice
  • Specific reasons as to why I chose this particular operating system
  • General hardware setup
  • The software I use and why it is successful
  • A general how-to reference guide on installing and configuring useful packages with resources and recommendations
  • Documentation on the packages I have installed

This post isn’t perfect, it never will be; however, I think it covers the gamut of the above points and could be of value to the community at large. I don’t consider myself an SME of Linux or openSUSE, so if something I have recommended or done is way off, I’m open to criticism! Or you can have a go at me and call me an idiot, then provide corrections/suggestions.

If you don’t care about my ramblings and just want to get straight to the configuration section, scroll to Moving into the Setup.

Getting Started:

In June of 2019 I made a significant change in my daily computer use. I bought my first new PC in 8 years! I purchased a Dell Alienware Aurora R8 tower on the Member Purchase Program (MPP) and completely switched over to Linux for personal use. Sure Alienware and Linux aren’t usually uttered in the same sentence, but I was happy with the excellent hardware on offer at a reasonable price. In fact, if I were to have built this myself ordering and installing all the parts, the savings vs effort and hardware gains would have been minimal; surprising as that may seem. I also went with an Intel CPU and NVIDIA GPU, when a dual AMD CPU/GPU combo is undoubtedly the preferred vendor for Linux use because of their free and open source drivers. 6 months in, I am VERY happy with the Aurora R8 and highly recommend it. I could do a separate post on this hardware. Anyways, enough about the hardware for now… here’s a picture.

Why Linux? Why openSUSE?

There are various reasons for my switch to a Linux operating system. The primary reasons being I wanted to utilize a free and open-source software operating system and have more control over my software and updates. I have chosen openSUSE’s rolling-release OS named ‘Tumbleweed’. I went with openSUSE because I liked their OS installation, the features of BtrFS, I like Zypper – the command line package manager, and YaST – their “easy-to-use interface with powerful configuration capabilities”. They also have KDE Plasma as a focus desktop environment, which is my preferred setup.

Jumping back to package management a moment… That may not sound like a killer feature, but I quite like way I am able to manage the priorities for software sources to manage exactly which package I want to install from a specific source. For example, I am prioritizing a specific Mozilla repository to be the authority on Firefox, Thunderbird and other Mozilla components. Let’s say I already have package X installed and I perform an update the first time after adding a new repository. Zypper is smart enough to ask me “do you want to change the repository owner of X package to this new repo? (y/n)”. And if the new repository has newer or different versions of another package I have installed, let’s say package Y, I will receive the same message and I can decline changing the source for package Y.

It’s difficult to explain in a post like this, but use it and it will make total sense. The first time you see a conflict, it will clearly be explained, it will click for you, and you can make the best choice.
Here are some of my repositories:

And here is a screenshot of YaST. It’s like a Control Panel or System Settings tool by comparison to Windows and OSX.

And here is a very nice visual reference for zypper:

https://en.opensuse.org/images/1/17/Zypper-cheat-sheet-1.pdf

Why Tumbleweed?

Why choose a rolling-release and not a stable or LTS release? In an enterprise scenario I would 100% go with the more long-term focused Leap releases; however, even with rolling-release there are safeguards. BtrFS’ has the ability to snapshot running boot partition and the ability to rollback to several previous versions on boot if you have an issue. I keep all of my “/home” data on a seperate drive, so data loss of the OS would not be an issue. Tumbleweed is a perfectly acceptable tradeoff for being on the newer versions of the Linux kernel. openSUSE also has something called the Open Build Service that validates new builds, so it’s not exactly bleeding edge. You can read about that here:

https://en.opensuse.org/Portal:Build_Service

Linux has come an incredibly long way, since my time installing Ubuntu 8.04 dual boot on a D630 Latitude laptop to play with beryl or Compiz fusion. Remember those sick YouTube videos with people closing windows and they would burn from the top down? Or those videos where you could spin the desktop into a 3d cube?! I wanted to do all that then. Sure you can still do all of that now, but after many years of focus on stability and overall improvements we have the best of both worlds.

Take a stroll down memory lane here:

An important note – I did make an attempt a running Ubuntu as a primary for a spell around 2011, but there were just too many missing pieces and things that didn’t work quite right. No such problems here in 2019. The improvements to the Linux desktop platform as a whole in the past 10 years is truly staggering.

Keys to Success:

  • With Libre Office I can create and work on any office based document in their native Microsoft formats and share with others.
  • With the KDE Plasma desktop suite I can have a fully customizable desktop experience as simple or as complex as I’d like to tweak. It’s notification area is especially top class.
  • With Steam’s native client and Proton gaming platform (and with my xbox one controller), I can play most of my favorite Steam games. Skyrim SE, Witcher 3, and the Batman series work in 4K phenomenially.
  • With Thunderbird and the Lightning plugin I can manage my email and calendars in one application.
  • With Joplin I have ownership of all my notes including pictures and even full accessibliltiy with read/write on my phone.
  • With Nextcloud-client I can sync all of my important files, pictures, and videos to my local nextcloud server here at home.
  • With VLC I can play any media file I throw at it.
  • With Virtualbox I can run any Windows or Linux VMs I need.
  • With Remmina I can manage mutiple RDP and SSH sessions, with complex connection settings and get things done on remote machines.

The combination of openSUSE Tumbleweed’s rolling release style, the qualtify of applications available on the Linux platform (including snaps, flatpak, and AppImage files), I feel like I have found a nice home for personal computing use – all without a single dime in license fees for my Operating System. It’s completely free, open-source, and I’m in control of the OS and my data. Fantastic!

Moving into the setup:

I will now share some of the software configuration I have completed on my machine. Since I have not wrote a bash script, or setup ansible or equivalent at the present, this post will come with some cheeky commentary and will double as a personal documentation of sorts.

If you are a new Tumbleweed user, this will be a nice and loose setup guide for things that might interest you.

If you are a user of other Linux platforms, it could also be useful for you!
Perhaps you can substitute out zypper for your package manager apt or yum, YMMV.

This assumes a fresh openSUSE Tumbleweed desktop installation – preferrably the KDE Plasma desktop was chosen because you’re not an animal, right? Exactly.

Hard Disks and Configuration:

For hard disk partitioning, I have some suggestions. While some experts may not agree with some of these choices, this is simple, solid advice I can stand behind:

  • I recommend BtrFS on the OS / partition
  • I recommend the /home partition is on a seperate drive, and recommend using XFS for all secondary data partitions
  • I recommend that if you are doing virtualization in which you will be using any sort of Windows VM, that you use virtualbox. You should also use a seperate SSD for VM workloads.
  • Don’t mess about with RAID. If you utilize SSDs, perform proper backups to other disks, and keep up with the packages you require and you’ll be fine.

Here is a breakdown of what I have configured on my machine.
I have four physical drives in my case.

  • Disk 1 sda – includes /boot/efi, swap, and / – in that order. (Kind of like Wales.Golf.Madrid. In that order)
  • Disk 2 sdb – /home only, XFS
  • Disk 3 sdc – /backup, XFS, a place where I occasionally dump VM snapshots or large downloads, data here doesn’t stay long
  • Disk 4 sdd – /VM, XFS, dedicafted SSD for use for Virtualbox VMs

Disk 1 and Disk 2 were setup during installation.
Disk 3 and 4 I setup post-installation with YaST Partitioner.

Here is a picture from the YaST Partitioner app.

I also have an open NFS share on my network for unimportant stuff, and simple lazy file sharing if needed.
My computer is an NFS client, the server is on another computer at home.
Here is how I did my setup:

sudo mkdir /opt/nfs
sudo chown UsernameHere /opt/nfs/ -R

I then create the mount point in the same YaST Partitioner tool.

You can see the official YaST NFS Client Documentation here:
[https://en.opensuse.org/YaST_NFS_Client]

Since we are talking about hard disks here, you can also use Smart Tools to view SSD smart info, via smartmontools like this:

sudo smartctl --info /dev/sda

Take a look at the smart tools page here, the EXAMPLES section is very informative:
[https://www.smartmontools.org/browser/trunk/smartmontools/smartctl.8.in]

We will install this package later in the post.

Software Configuration:

Get things refreshed and up to date from the start, yeah?
Launch a terminal:

sudo zypper refresh
sudo zypper dup

Firewall:

Take a look at firewall rules and configure things you require, default ‘zone’ is public.
I recommend configuring it to ‘block’. You can do this in YaST. by configuring the firewall in the GUI.

These commands will show you basic info at the start regardless of what you have done:

firewall-cmd --get-active-zones
firewall-cmd --list-all
sudo systemctl status firewalld

Take a look at the firewall zones in the YaST System Manager.
As you can see in my image below, my computer is in the ‘block’ zone:

Here is a decent thread on basics of firewall-cmd and adding port accessibility in specific zones with examples for a new user:
[https://forums.opensuse.org/showthread.php/533831-Opening-ports-in-the-new-YaST2-Firewall]

The documentation on firewalld can be found here, unfortunately you’ll have a bit of reading to do if basics aren’t enough for you:
[https://en.opensuse.org/Firewalld]

Hosts File:

Next let’s configure the hosts file. This is a critical point for me, and one of the first things I do. Using the hosts file is a first step in protecting yourself from ads, adware, and bad DNS domains. I recommend updating this manually at least quarterly. I’ve also blogged about this before.

Mike’s HOSTS file txt version – is my go to!:

wget http://winhelp2002.mvps.org/hosts.txt

Review contents of the hosts.txt file we downloaded and consider replacing default hosts file with its contents like the below, and then making any edits:

sudo cp /etc/hosts /etc/hosts.old
sudo mv hosts.txt /etc/hosts
sudo nano /etc/hosts

Software Packages:

Now it’s time to install some software!

Let’s start with these repos. Nvidia (if you have an NVIDIA GPU, if not remove it), Packman, Snappy (snapd), and Mozilla

sudo zypper ar --refresh https://download.nvidia.com/opensuse/tumbleweed NVIDIA
sudo zypper ar -cfp 90 http://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Tumbleweed/ packman
sudo zypper ar --refresh https://download.opensuse.org/repositories/system:/snappy/openSUSE_Tumbleweed/ snappy
sudo zypper ar -cfp 90 http://download.opensuse.org/repositories/mozilla/openSUSE_Tumbleweed/ mozilla
sudo zypper --gpg-auto-import-keys refresh
sudo zypper refresh
sudo zypper dup

Some of the software packages I have on my main pc, for a good base:

sudo zypper in audacity bleachbit firefox git htop keepass nextcloud-client remmina screenfetch smartmontools thunderbird yakuake youtube-dl virtualbox gcc make perl kernel-devel dkms

Explanation of these packages:

  • audacity – top bins, multi-platform audio recording software.
  • bleachbit – application to securely remove files and cache from your system. If it’s good enough for Hillary Clinton, it’s probably alright for you.
  • firefox – is default, but we want to do a vendor change to the Mozilla repo version.
  • git – ability to use git functionality, in my case mostly to pull repos.
  • htop – a detailed command line based process monitor tool.
  • keepass – I use for consolidation of passwords securely – don’t trust lastpass, or any online cloud based pw manager! They are bad for you.
  • nextcloud-client – I use for all my file sync and share, calendar, bookmarks, and more. I have a server setup locally at home for this.
  • remmina – an excellent utility to centralize remote connection sessions, SSH, RDP, VNC, et al. I use this daily.
  • screenfetch – a terminal based screenshot tool, is quite nice.
  • smartmontools – package installed for you to be able to leverage monitoring tools on solid state hard disk drives to view statistics and monitor health.
  • thunderbird – email, contacts, and calendars.
  • virtualbox – used for virtualization, also pulled the gcc, make, perl, kernel-devel, and dkms packages for this.
  • yakuake – Don’t run linux without it – ever. Press F12 and a terminal window drops down from the top of the screen. Press F12 it hides. It’s customizable, themeable, and essential to anyone using Linux.
  • youtube-dl – command line utility for downloading files from youtube, very handy.

Virtualization:

Virtualbox is the only virtualization solution for me because of my requirement of Windows guests. It works by far the best for Windows workloads. I truly wish I could say KVM is better – in my experience, it just isn’t.

As of this writing – the latest version of Virtualbox is 6.0.14, when reading a newer version may be available, look at the virtualbox list here [https://download.virtualbox.org/virtualbox/] and sort by date.
Please check and adjust the info below to your needs as required.

sudo wget http://download.virtualbox.org/virtualbox/6.0.14/Oracle_VM_VirtualBox_Extension_Pack-6.0.14.vbox-extpack

You’ll need to install the virtualbox Extension Pack and Guest Additions manually. Do this in your web browser, for 6.0.14 here: [https://download.virtualbox.org/virtualbox/6.0.14/]

Download “VBoxGuestAdditions_6.0.14.iso” and “Oracle_VM_VirtualBox_Extension_Pack-6.0.14.vbox-extpack”
You do the installation inside the Virtualbox client.

Virtualbox > Tools > Preferences > Extensions

A final thing on VMs. I highly recommend that if you have critical VMs that you use, that you power them off, and copy/paste the virtual hard disk files to a secondary source often. In the case of a disk failure (SSDs don’t fail often, but still), we make mistakes, or we forget to take a snapshot and break the VM, whatever. Any important VMs you should do this weekly, monthly, quarterly – if it’s critical you better back it up.

Display Drivers:

Now display drivers. AMD and Intel drivers should be detected and installed with normal updates.
For NVIDIA drivers, we have a little work, but it’s SIMPLE.
(Follow Guide explicitly, we added the repo above; https://en.opensuse.org/SDB:NVIDIA_drivers):

View Card Info Detected:

sudo lspci | grep VGA

This is what shows for me (Pretty nice eh?!):

#01:00.0 VGA compatible controller: NVIDIA Corporation TU106 [GeForce RTX 2060 Rev. A] (rev a1)

Further info about your graphics adapter(s):

inxi -G -c0

Take a look for what software you can pull down:

sudo zypper se nvidia
sudo zypper in x11-video-nvidiaG05

In nearly all cases you will be using the G05 option.

Once you have installed your drivers, make sure to launch the “NVIDIA X Server Settings” app and check all of your video settings. Most importantly refresh rate (one of my monitors was at 30Hz once and it was terrible):

Custom Applications:

Snapcraft:

I also use a few snaps, so will install snapd and enable the service per the guides.
You can see a nice inventory of all the snaps here: [https://snapcraft.io/]
This is not mandatory, but it’s what I have configured for my use case:

sudo zypper install snapd
sudo systemctl enable snapd
sudo systemctl start snapd
sudo systemctl enable snapd.apparmor

I only use Telegram for secure messaging.
It is not in the standard repos.
You can install it via snap like so:

sudo snap install telegram-desktop

Joplin – Markdown Based OneNote Replacement:

I use Joplin as my note taking app.
It uses markdown formatting and I sync it with my Nextcloud(and then again with iPhone app via the offical app).
It’s an excellent OneNote replacement, because I don’t want my personal data in OneDrive. There is an appimage, but I prefer to install and update it with git pull and running the update script.

I assume you are starting at a default home directory in terminal here:

mkdir git-downloads
cd git-downloads/

To review the install and update script:

sudo wget -O - https://raw.githubusercontent.com/laurent22/joplin/master/Joplin_install_and_update.sh

Then clone the repo and run the installer:

sudo git clone https://github.com/laurent22/joplin.git
bash joplin/Joplin_install_and_update.sh

If you want sublime text, give this a go:

sudo rpm -v --import https://download.sublimetext.com/sublimehq-rpm-pub.gpg
sudo zypper addrepo -g -f https://download.sublimetext.com/rpm/stable/x86_64/sublime-text.repo
sudo zypper install sublime-text

Chrome:

Do you need Google Chrome?
If so deal with its BS of not being in an official repo and get it like this:

sudo zypper ar http://dl.google.com/linux/chrome/rpm/stable/x86_64 Google-Chrome
wget https://dl.google.com/linux/linux_signing_key.pub
sudo rpm --import linux_signing_key.pub
sudo zypper in google-chrome-stable

Antivirus?:

I’m sure this may get some interesting looks and feedback.

Antivirus on Linux is still a good idea, yeah?
At the very least, we don’t want to share malicious files to other vulnerable platforms our friends use. Normally ClamAV is used in email server scanning, but I use it at the desktop level. Install it like so:

sudo zypper in clamav

Configure and enable the ability for ClamAV to stay up-to-date:

sudo systemctl start freshclam
sudo systemctl enable freshclam

For optional live system scanning:

sudo systemctl start clamd
sudo systemctl enable clamd

For an on-demand scan, here are some examples scanning of the /home directory for any file less than 4GB:

sudo clamscan --max-filesize=4000M --max-scansize=4000M --infected /home

By default, it only uses a single CPU thread.
For the scan of larger files, and more impact to your system, you have to utilize the –multiscan option:

sudo clamdscan --multiscan --fdpass /home

You can find some good descriptions of the clamscan options here:
https://linux.die.net/man/1/clamdscan

Gaming:

If you want to use an emulator, let’s enable the games and emulators repositories along with a Wine specific repo:

sudo zypper ar http://download.opensuse.org/repositories/games/openSUSE_Tumbleweed/ games
sudo zypper ar https://download.opensuse.org/repositories/Emulators/openSUSE_Tumbleweed/Emulators.repo
sudo zypper ar -cfp 90 https://download.opensuse.org/repositories/Emulators:Wine/openSUSE_Tumbleweed/Emulators:Wine.repo
sudo zypper refresh

The reason we are enabling the Wine repo directly, and setting a higher priority is so we will always get the most recent version from this specific repo.
The default priority is 99.
As of this writing, the Wine repo has a newer version of the wine-staging client than the Factory repo by 2 days.

Now lets install some emulators and wine:
(You can view the whole list of Emulators here: [https://download.opensuse.org/repositories/Emulators/openSUSE_Tumbleweed/x86_64/]
You can also view all of the available packages in any repository here: YaST > Software Manageement.

Some software packages I have:

sudo zypper in openarena nestopia mumble pcsxr snes9x mupen64plus-ui-console m64py wine-staging steam xboxdrv
  • openarena – I loved Unreal Tournament in 2004, this game is a FOSS variant that scratches that itch. Loads of FPS fun!
  • nestopia – NES emulator
  • mumble – used for web voice chat servers for older online games
  • pcsxr – PS2 emulator
  • snes9x – SNES emulator
  • mupen64plus-ui-console – installs all the mupen64 compenents for N64 emulator
  • m64py – GUI frontend for mupen64
  • steam – obvious :)
  • wine-staging – I recommend using the staging insted of standard wine because staging branch is quite stable. You will get the newer features and fixes much sooner than standard wine.
  • xboxdrv – used for xbox controller drivers, see below

Are you a gamer with an xBox One Controller? Acknowledge and make xbox controller work AFTER you plug it in via USB, wireless/bluetooth just doesn’t work at least for me.
The USB wireless adapter is proprietary and only works with Windows, those bastards…:

sudo systemctl enable xboxdrv.service
sudo systemctl start xboxdrv.service

At this point you should be able to configure your controller in your emulator of choice, for the game you want to play. In my case, I am using an xbox one controller. If you have still issues, reboot your computer and/or consult google. There do seem to be issues with these not always working 100% right away. Sometimes a computer reboot helps, though this is sub-optimal.

Let’s stream some games yo’:

sudo zypper install obs-studio

Testing this with Twitch, it works very well, assuming you know how to work OBS.

Closing Thoughts:

That’s all I can think to share for the moment. Do you see any issues with my notes above? Was it helpful? What do you think about openSUSE Tumbleweed or my setup?

Any comments? Please reach out and let me know via my About Me page.

I am working on a bash script that I will dump probably on github with a consolidation of all the commands and packages here. That will end up being the ultimate documentation of my openSUSE Tumbleweed setup.

Thanks for reading and all the best to you.

–Gabriel