So you. Yeah, you. Have you heard; hipsterism has come to the internet. All those thirty-somethings wanting to relive their teenage years on Geocities, making ugly beautiful again as an ultimately futile protest against our focus-tested UX overlords.

And maybe you thought all of that sounded pretty neat. Pretty swell. Maybe it would’ve even made you nostalgic—made you ready to crack out the text editor and whip-up a personal site in hache-tee-em-ell even—except, well. You missed the boat, first time ’round. Maybe you’re too young or maybe you just weren’t Extremely Online in the late ’90s/early ’00s and this Titanic is one you never managed to punch your ticket for.

Well, never fear! You’re in luck. Because I was there and, in 100% unironic ’00s style, I’m gonna write you a fuckin’ tutorial, so you can be too. Y’know. Retrospectively.

So slap on some velour loungewear and pop a Linkin Park minidisc into your player. Because we’re about it kick it. Naughties nerd style.


Linux

Our first step on our road to pretentious nerd nostalgia is to learn us some fucking Linux.

The late ’90s in particular were the peak “Micro$oft”1 years. That is, it was pretty much mandatory if you were Extremely Online during this time to hate on the company which, for the record, was not a completely unfounded stance. At the time, OS X had only just launched and the iPhone was years away, meaning most people still considered Apple a very, very expensive joke. But an aspiring nerd needed some kind of operating system so… what was there to do?

Enter Linux.

The “friendly” fork of the Extremely Neckbeard UNIX operating system was already a decade old by the early 2000s, and with “Micro$oft” in the shitter–Windows ME really was a garbagefire piece of trash—a bunch of work was being done to try and make Linux’s various flavors more approachable to non-nerds. It… sort of worked. I mean, not really, but… the nerds kept at it and, luckily for us, it’s now 2019 and the most popular flavors of Linux actually are really nice to use as general-purpose computing environments. So… let’s install one. First though, some pros and cons:

Reasons to install Linux

  1. It’s fucking free.
  2. You really want to get into (FL)OSS evangelism (i.e. Veganism for Computer Nerds).
  3. It looks nice (whatever value of “looks nice” you have, you’ll be able to find a distro/GUI that fits it).
  4. You can tell all your family and friends you run Linux.
  5. If all you’re doing is just, like, browsing the web and watching Netflix or whatever it’s pretty baller, plus you can also use it to learn 1337 sysadmin and/or hacker skills in your spare time.

Reasons not to install Linux

  1. You like playing videogames on your PC.
  2. You absolutely have to use Microsoft Office for some ungodly reason.2
  3. You’re really attached to PhotoShop, or some other part of the Adobe creative suite.
  4. You already use a Mac.3

Because we live in the future, not actually 2001, I’m going to assume you don’t have a spare computer floating around to install things from scratch on. (I mean, if you do; great! But I’m not going to assume that for the purpose of this tutorial.) Instead, we’re going to install Linux in a virtual machine, which is basically a computer your computer can run. No reformatting of your current machine required!

Step 1: Get a VM player

Download VMware Workstation Player. Free for non-enterprise use, this is probably the easiest and most common way to run VMs on a desktop if you’ve never done it before. There are other options, and I’m sure someone is going to yell at me for recommending a proprietary player over, for example, VirtualBox but… whatever.

Download and install whatever player you want, but all the screenshots are going to be of VMware.

Step 2: Get Linux

Decide on a flavor of Linux. Actually, before you do that: some terms.

  • kernel: The kernel is the portion of the operating system that actually Does The Thing, i.e. interacts with the computer’s hardware and handles low-level system functions. All operating systems have a kernel but, if you’re used to Windows, you probably aren’t used to hearing people talk about the kernel. In Linuxland, that will change. A lot. There’s a stereotype that a Linux nerd’s answer to literally every newbie problem is “recompile the kernel.” Pray but for the grace of Tux you don’t go there.
  • shell: The shell is the thing that wraps around the kernel, and it’s the portion of the operating system you’re used to dealing with. The graphical part of Windows is its shell, for example. Shells can either be graphical (a GUI, or graphical user interface) or command-line (a CLI, or command-line interface), but in the Linux world the term usually refers only to the latter variety. There are lots of different CLI shells for Linux, all of them very slightly different, that Linux (and, worse, UNIX) nerds have endless fights over. You’re probably going to end up using bash, because it’s usually what ships default in most Linux environments. Unlike Windows, where the CLI, cmd.exe, is kind of hidden and not that relevant (and also sucks), you’ll actually be using the Linux CLI. Don’t worry; it’s easy, especially once you remember yes literally everyone else Googles every command every time they need it, too.
  • desktop environment: The graphical shell in Linux is usually referred to as the desktop environment, or more specifically the “X Windows desktop environment” (not to be confused with the Microsoft Windows desktop environment, to which it is not related). As with the CLI, there are tonnes of different desktop environments for Linux which, a) means you’ll almost certainly be able to find one you enjoy, and b) be able to get into endless Arguments Online with other nerds who prefer different, Obviously Inferior, environments.
  • packages: Are just what Linux nerds call programs/applications/apps. There are a tonne of them, and they’re managed by the package manager, which was basically the App Store before it was cool.
  • distribution: Your Linux “distro” is the particular branded bundle of kernel-shell-desktop-packages that makes you feel good inside. As with absolutely everything else, there are like a million of these and people argue endlessly over which one is “better”, because nerds are notorious for not understanding the difference between “objective facts” and “subjective taste.”

Okay, so… now that we understand that, decide on a flavor of—

Okay, look. We’re going to go with Linux Mint, which is at-the-time-of-writing pretty much the top of the “it-just-works, Windows-transitions-for-beginners” distro list. Mint is also a Debian/Ubuntu variant, which probably won’t mean much now but makes it a nice transition to both indie server Linux (most VPS providers offer Debian/Ubuntu images) and/or 1337 h4xx0r sk1llz (Kali is based on Debian), depending on what you want to do with your time later on.

At the time of writing, Mint comes in three different desktop environment flavors: Cinnamon, MATE, and Xfce. Cinnamon is the default, so go with that for now. You also want to go with the 64-bit version, unless you’re running a host OS that’s only 32-bit.

Mint comes as a .iso file, which is just a virtual CD in case you’re reading this as an Actual Young who doesn’t remember the Grand High Days of Torrenting. Stick the .iso wherever you want; we’ll only need it for the install.

Step 3: Create a new virtual machine

If you haven’t already installed VMware Player, do that now, then open it.

It will look like this, but with less existing VMs probably.

Make a new VM, either with Ctrl+N or Player › File › New Virtual Machine….

Set the installer disc image to the .iso you just downloaded, then click Next.

On the next screen, you probably want settings like this:

Give your machine a name (anything, really, it doesn’t matter much what it is), and select a location for the VM image. Make sure you have enough free space; probably at least 15 GB to start with.

On the Specify Disk Capacity screen, specify how much space you want to allocate to your new VM. For testing, you probably don’t need much more than about 15 GB. (Note that you can change this later, though if you expand if after the OS has already installed, you’ll need to mess around with expanding disk partitions which can be… unfun.)

On the Ready to Create Virtual Machine screen, click Customize Hardware…. This screen will let us configure exactly how our new VM shares hardware and system resources with its host.

If you can, you want to increase your memory. I’d recommend at least 2 GB, but note the VM shares memory with your host OS, meaning you can’t allocate more to the VM than the host actually has, and you also need to leave enough memory unallocated so the host itself can still run comfortable. (On Windows, you can find out how much memory your PC has from the Performance tab in the Task Manager. My current machine has 8 GB.)

Finally, under the Display tab, make sure Accelerate 3D graphics is checked.

If you feel adventurous, you can play around with the other settings while you’re here, e.g. assigning more processor cores or connected devices or whatever. You can’t really blat your host computer with any of this, only the guest, and all of this stuff will remain configurable even after the VM has been set up and the OS installed, so you can’t really do much actual damage.

Anyway, when you’re done playing with your virtual hardware, click Close.

Finally, review all your settings and, when you’re good to go, click Finish.

Your new VM should now appear in the main Player interface. It’s currently powered off, so select it, and click Play virtual machine.

If you see this, then congratulations! You just built a (virtual) new computer!

Step 4: Install Linux

Your chosen Linux distro should now boot, from its virtual CD (i.e. the installer .iso), in your VM. For Mint, this will send you straight to the desktop environment:

This is an actual (albeit read-only) working version of the OS, so feel free to have a poke around or whatever. If you’ve decided to be a rebel and have chosen a non-Mint distro, you might be looking at a desktop or you might be looking at an installer workflow. Either way, we’re going to install our OS into our VM, so click the Install Linux Mint icon on your VM’s desktop (or whatever equivalent).

Generally, this workflow should be pretty straightforward: just pick your language and your keyboard, click or don’t click the “Install third-party software” button (this is mostly just so FOSS evangelists can opt-out of installed non-FOSS software if they want).

The next screen will ask you what you want to do with your disk. Since you’re installing into an empty VM, it’s okay to click the Erase disk and install Linux Mint option.4 If you want, you can also encrypt the VM, which basically just means people need a password in order to run it, so it’s good for, like… hiding your porn from your parents or whatever, I guess.

Anyway, when you’re done, press Install Now. If you chose the encrypt the disk, the next screen will prompt you for a password; choose something complex and write it down somewhere safe! If you lose it, you really won’t be able to get back into the VM and you’ll have to blat it (loosing any data inside) and make another one.

Despite the “Install Now” button’s implication, you’ll be asked to do a few more things, like setting your physical location (for timezones, etc.), and making a user account. I’m sure you’ve signed up for things before, so you’ve got this bit.

Now, just sit back, and wait…

Wait… what happens if it goes wrong?

Just restart the VM and try again. If it still goes wrong, shut the VM down, go into Virtual Machine Settings…, delete the virtual hard drive and attach a new one. If that still doesn’t work, delete the whole VM and try again. Magic!

Step 5: Updates

Congratulations! You just installed an OS into a VM; you can now add “virtualization engineer” to your CV and, trust me, you’ll be more qualified than half the rest of the field.

So we have a shiny fresh new (virtual) operating system! The first thing we’re going to do, because we’re security conscious individuals, is update it.

To do so, click the button in the taskbar that looks like a black square with $_ on it. This will open the terminal, a.k.a. the CLI shell we talked about earlier.

In this window, we’re going to type the command sudo apt update. It’ll ask for your password, then do something like this:

apt is the Debian package manager, i.e. the equivalent of the App Store. There are graphical interfaces for it but, honestly, the CLI is really super easy so you may as well start to learn to use it now. sudo is a special command in Linux that tells the system to run something as root, i.e. an administrative user. You never want to run a general desktop environment as a root user in Linux (or, in fact, any other operating system), and one of the reasons Linux tends to be considered “more secure” is because it actually enforces this by default.5

The update argument for apt tells it to go check for software updates from the URLs in sources.list, which you can see the contents of if you type more /etc/apt/sources.list and/or more /etc/apt/sources.list.d/official-package-repositories.list (the more command just outputs the contents of a text file to the screen). If you start wanting to install packages from third-party vendors, you might need to edit these but, for now, they’re fine as-is.

After updating our package sources, we need to actually apply the updates. To do so, type sudo apt upgrade.

You’ll get something that looks like this. Type y and hit enter to start upgrading everything. It’ll probably take a while, so poke around the rest of the OS while you’re at it; browse the filesystem, open Firefox and visit some webpages, write a document in LibreOffice… whatever. Also, if you right click on the taskbar, you can change all the icons and colors and stuff!

Once the update is done type sudo apt update && sudo apt upgrade into the terminal just to check we’ve got everything (the && just tells the shell to run one command after the other).

Step 6: VMware Tools

So you may have noticed that, a) your VM’s screen is obnoxiously small, b) it might sometimes grab your mouse cursor in awkward ways, and/or c) you can’t copy-paste into it. Well, good news! We’re going to fix that.

From VMWare Player’s top menu, select Player › Manage › Install VMware Tools….

(If you get a message about the “CD-ROM door being locked”, just click Yes.)

The VMware Tools “installer CD” should appear on the desktop, and the folder pop open.

Drag/copy-paste the VMwareTools-x.x.x-xxxxxx.tag.gz file into the Downloads folder in the sidebar. Now open up the terminal again, and type cd ~/Downloads. The cd command navigates you around folders, while ~ is a shortcut to refer to your current user account’s home directory. You can also hit the Tab key at any point typing part of a path or filename to autocomplete it (if there’s more than one potential option, hitting Tab twice will display them on the screen).

In ~/Downloads, type ls to show the contents of the directory and make sure our file is here.

.tag.gz files are a compressed archive file, basically like a .zip file, and to get to our sweet sweet VMware Tools installer, we need to untar/unzip it. You can do this from the command line but, honestly, the command to do it has a bunch of esoteric options and is a pain to remember,6 so it’s way easier to just open the Downloads folder in the GUI and double-click on the little taped-up box icon.

Whether by command line or GUI, you’ll end up with a folder called vmware-tools-distrib in ~/Downloads. In the terminal, navigate into it by typing cd ./vmware-tools-distrib. The ./ in front of the filename means “look in the current directory”; if you type cd ./v and press Tab, it should autocomplete the path for you.7

From here, type to ls -la view a listing of the folder’s contents. The -l option for ls tells it to output things in a detailed view, while -a will show hidden files (files that start with a .).

The output should look like this.

You’ll notice our shell color codes files for our convenience; things in light blue are folders, while the green file is an executable script. The weird strings of drwxes represent the file’s permissions, while the alis alis represents the file’s owner and group, in this case both me. Linux file permissions can seem somewhat esoteric if you’re used to Windows, but they’re pretty straightforward and you’ll get used to them quickly.

What we’re actually doing here is checking to make sure the vmware-install.pl file has the x (execute) flag, which means we can run it as a script. It does, so type sudo ./vmware-install.pl to do so.

The installer should now run, and ask you a bunch of questions about where and how it should install itself. You can basically just press Enter for each to accept the default options, although you might want to pay attention when it starts asking about whether you want the VM to interact with the host operating system.

These ones.

You probably do want to enable these for now, but they’re worth paying attention to in the context of being Security Paranoid™ if, for whatever reason, you want to implement more isolation between the VM and the host.

When the installer has completed, you’ll need to log out and back in of your desktop for it to take effect, so do that via the sidewards-pointing power button in the main OS pop-up menu (what would be the Start Menu on Windows).

When you’re back to the desktop, try maximizing the window, and you’ll find Mint should resize itself to fit.

Comfy!

… So what now?

So now you have a Linux desktop. So… what next?

Well. Firefox is right there in the taskbar, so you can open it up and literally just start… doing stuff. You can poke around the start menu. Explore applications. Learn some terminal commands and poke around with those. Or watch this video.

Maybe you play around a bit and decide you loathe Mint. Not a problem! You know how to make and install VMs now, so feel free to go check out some other distros and install and try out as many as you like. The great thing about using VMs for testing stuff is that, well. If you mess things up, you can just delete the VM and start again.

Either way, welcome to your new hipster nerd lifestyle. Next time: building a webpage… the naghties way!

  1. Or “MicroShaft” or, if you were in a hurry, just “M$”.
  2. I’m so, so sorry.
  3. macOS is a “*NIX-adjacent” operating system with enough commonalities that, if you’re comfortable with it—and specifically with using Terminal—you probably won’t find *NIX environments much of an adjustment.
  4. I mean… assuming you are installing into the VM. Like… you can see your regular desktop underneath it, right?
  5. Looking at you, Windows.
  6. It’s tar -zxvf ./VMwareTools-x.x.x-xxxxxx.tag.gz, for the record.
  7. If you get really lost, typing cd ~/Downloads/vmware-tools-distrib will get you back to the folder from anywhere.