Upgrading from Ubuntu 12.04 LTS to 16.04 LTS

From a precise pangolin to a xenial xerus

I’ve been putting off upgrading my Linux box for months, but now that official support for Ubuntu 12.04 LTS (Precise Pangolin) has just ended, I figure it’s now or never. In the end I found that I should have done it months ago as it went very smoothly.

My first question was, should I just upgrade to 16.04 LTS, or something newer, or maybe even Linux Mint which has been capturing hearts and minds over the past couple of years? In the end I decided to stick with Ubuntu, and given that the Linux box is really just a backup file store, I thought it would be best to go with a distribution that’s not going to need updating again in the next 6 months. I suspect that this will be the last upgrade for this machine: the motherboard, RAM, CPU, and PSU (and fans) all date from 2008. (Which reminds me, the CPU fan is getting cranky too…)

So off I went and downloaded the relevant .iso from Ubuntu. Hmm – server or desktop version? I had vague notions of using VNC to run a desktop session so I went for desktop, knowing that it would be straightforward to add whatever server packages I’d need later. Download, burn to DVD (yes, it seems I needed a DVD – which had to be done on the Windows machine as the burn attempt failed on Linux), insert and reboot. Oh yes – did I mention that I made sure I had backups of any important data from that hard drive? No? Well, remember to back up your stuff before doing OS upgrades!

I don’t have screenshots so bear with my wordy descriptions.

Installation of 16.04

The machine booted up and presented me with a black screen containing two low-resolution icons at the bottom, one of which looked a bit like a keyboard (I think). I waited. Nothing happened, so I hit the space bar. Ta-da! We have liftoff. I have no idea what it was waiting for. Please use words if I need to do something!! The disc spun up to obnoxious levels and eventually I was presented with my next screen with the choice of trying out Ubuntu, or installing Ubuntu. I clicked “Install”, and on the next screen I checked the box to download updates during the installation, and to add some third-party software that (for licensing reasons) can’t be included by default.

And away it went. It recognized that I had an existing Ubuntu installation on my OS drive and gave me 5 options to choose from. I could let it upgrade 12.04 to 16.04, but I wasn’t sure about doing that: I’ve that it’s more trouble than it’s worth. Alternatively I could install 16.04 alongside 12.04 – not much point in doing that. Then there were two options that I felt were somewhat ambiguous. The first said: “Erase 12.04 and reinstall”. Reinstall what? Reinstall 12.04? Why would I do that? The other said: “Erase disk and install Ubuntu”. Presumably that means the version of Ubuntu on this disc (i.e. 16.04) but again, not entirely clear. Fortunately I had an escape route: the fifth option was off on its own and said: “Something else”. 🙂

So I clicked “Something else” and got on with the next step, which was to examine the hard disk partitions. It took me a minute (some of which was spent contemplating an error message) to work out exactly what was required here: I had to select the desired file system and mount point for the relevant partitions. Since I had a separate partition for /home, I made sure to select / for the main one, and /home for the other. In doing so I completely forgot about the other two hard drives in the machine (not an issue, but it would have saved me another post-installation step – see below).

With hard drives sorted, the next steps were setting the timezone (easy: it correctly identified me as being in Vancouver) and keyboard (standard US). Next was giving the computer a name, and I stuck with the previous one (my current home computer naming scheme makes use of lakes in the English Lake District). Then I had to create a username and set a password. Then it was time to restart and I was reminded to remove the DVD from the drive and asked to press enter to continue.

Post installation

A few moments later I logged in with my shiny new user account and began the task of getting things set up to taste. First up was a second user account, which left me a bit puzzled to being with as I had to click on a button that didn’t look clickable in order to bring up the option of actually enabling the account and setting a password.

The first job (actually, this should have been my first job, not the second user account) when installing a new operating system is to apply all available updates. The package manager said I only had 12, so I left it doing its thing and called it a day.

The following morning I picked up with the next round of tasks: installing tcsh (and using that as my preferred shell) as well as Geeqie and Dropbox. Then I wasted a couple of hours trying to get a headless VNC setup to work before I took a moment to think about how often I would actually use that. The answer came back pretty quickly: almost never, so changed my mind and decided to just leave it as a headless server, and start a VNC session if and when I actually needed one.

Headless operation

I’ve been running the Windows and Linux machines with a set of KVM cables for the past few years. Recently, one of the cables has been getting flaky, causing the display to blank from time to time, so I decided that I was going to cut those cords and have the Linux run without a keyboard, mouse, or monitor. After all, even with the KVM switch, I still logged in over SSH 99 % of the time. (Speaking of which, I was stumped by the fact that my first attempt to SSH in to the Linux machine failed. That is until I remembered to install the SSH server package! D’oh!)

Setting up for headless operation turned out to be trivially easy:
% sudo systemctl disable lightdm.service
In other words, disable the graphical login greeter. (In the old days I would have specified % sudo init 3.) Yay! And into the corner you go little computer!

Other hard drives

Next on my list was mounting my other hard drives in sensible places. By default, Ubuntu had mounted them under /media/andy, and they only mounted on logging in to a desktop session. Running headless, they were never mounted unless I did so explicitly. On the plus side, that made it very easy to get them set up properly. A quick search led me to this post at Ask Ubuntu with a nice clear layout of the steps required.

I created a couple of mount points for my hard drives under / (literally just % sudo mkdir /mountpoint1 /mountpoint2). After that I ascertained the UUIDs for each hard drive (using blkid), and edited /etc/fstab to add the relevant details in the right place. Then I ran
% sudo mount -a
to (re)mount the disks, and I was good to go.

Samba

Since this machine’s primary purpose is to be a file store/network drive, I needed to get Samba up and running. Installing Samba was easy, and setting up was just as easy thanks to this post at Linuxbabe. Installing Samba automatically enables it as a service and sets it running, which is very convenient. I tested it out by re-creating my network drive in Windows, and then mounted it from my Macbook Pro too. All seemed to work just fine.

Final thoughts

And that was pretty much it. Very easy, very smooth. Had I thought things through a bit more closely, I could have saved myself a bit of time and a couple of steps, but in the end it was no hassle thanks to the articles I mentioned above.

I’m sure I’ll find more things missing, and I haven’t done anything about setting up Python, Perl, Java, or any compilers. But much of my development work is done on my Macbook Pro these days, so I’ll just deal with it when the time comes.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s