What I did after installing Linux

I had a hard drive fail on my laptop, so I put the best parts of several broken machines together into a sum-greater-than-the-whole new machine. Right now, I’m installing Ubuntu Linux 19.04. And, since it’s been a long time since I blogged what I do afterward, here is the mid-2019 edition.

References: the usual “what to do” blog posts, e.g., this, this, and this.

Start by installing updates:

$ sudo apt update && sudo apt dist-upgrade

Then gnome tweaks, to make your GUI act less lobotomized:

$ sudo apt install gnome-tweaks

The specific tweaks I want are left-side buttons, static workspaces, desktop icons for home but not trash, the size of the monospace font, and (since this is a 13″ laptop) the scaling factor. I also add a percentage to the battery indicator and weekday to the clock. While I’m monkeying around with my settings, I set up night mode. And then I make sure that Alt-Tab behaves correctly. (See here.)

Then I install the usual assortment of web browsers:

$ sudo apt install chromium-browser

(I also install Google Chrome from a .deb I download from their website.)

Then a whole bunch of things I need:

$ sudo apt install caffeine
$ sudo apt install vim

Then, before I forget, I install libreadline for other things to use:

$ sudo apt install libreadline-dev

Next, I finish installing the usual software subjects:

$ sudo apt install imagemagick colordiff jhead wv pandoc abiword antiword eyed3

Stuff from other systems

Then I’m ready to start pulling things from other machines. The easiest way to do that is to go over there and rsync them to me. So:

$ sudo apt install openssh-server
$ ssh-keygen  # hitting ENTER at each prompt
$ ssh-copy-id {whatever the other machines are}

Then I pop over to those machines and send the appropriate contents back here.


Then I install ruby so I can use all the ruby tools I’ve developed over the years:

$ sudo apt install libssl-dev zlib1g-dev
$ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
$ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ cd ~/.rbenv/plugins/ruby-build
$ hash -r  # might not be necessary
$ rbenv install ( --list | some-version )
$ gem install coderay csv fileutils kramdown mini_magick optimist pericope pry tty-color tty-command tty-screen tty-table zxcvbn-ruby

More Software

Also Telegram, if this machine will be used for your private messaging.

And Dropbox.

Linux on Old Macs

I was recently given a second 20″ iMac 2007 to go along with the first. They’re beautiful machines, but Apple doesn’t want me to keep using it, so they’re making all their software not work on it anymore. So I’ve been wondering how they’d do as Linux machines.

Apparently, it isn’t very easy to get an old iMac to boot a Linux system. I don’t think I have a Firewire cable, much less a HDD enclosure with a Firewire interface.

Ubuntu 18.04LTS on the HP boat anchor

Some time ago, we bought three HP laptops. One had a failure we were never able to resolve, and another was replaced by an ASUS desktop. The last was decommissioned back in January. So I decided to try installing the most recent Ubuntu 18.04LTS on one of them. Here’s my notes from the process.

First, re-read this explanation of UEFI Secure Boot and Windows.

download an ISO and verify it

turn the ISO into a bootable USB stick

boot it up and answer lots of questions

wait while everything gets installed

then install Dropbox and Google Chrome

$ apt install ssh # to get the OpenSSH server

$ ssh some-machine # then copy any data not in Dropbox

$ apt install telegram-desktop

$ apt install gnome-tweak-tool  # to enable permanent workspaces

$ apt install colordiff antiword jhead csvtool ffe poppler-utils

$ apt install sqlite3 sqlite3-pcre

$ apt install git curl libreadline-dev

$ apt install vim vim-gtk

$ apt install build-essential

$ apt install libssl-dev zlib1g-dev

$ cd ; git clone git://github.com/sstephenson/rbenv.git .rbenv

$ rbenv -l # to find what version to install

$ rbenv install 2.5.1 # or whatever

mounting disks at the Ubuntu command line

Thirty years ago I used to know how to use mount and /etc/fstab and things like that to mount disk drives. But nowdays, it’s all too hard to remember. Especially now that we use UUIDs.

So here are some things to remember:

$ lsblk # a very pretty way to see block devices (like lsusb for usb devices)

$ sudo e2label /dev/sdb1 # to see what I called the device

Clobbering my Dual-Boot Laptop

I clobbered my dual-boot laptop. I ought to have clobbered it long ago, so it was uni-boot Linux, but that whole secure-boot UEFI firmware business scared me too much to do that without knowing more, and who has time to learn more, or a test-bed on which to make mistakes.

I was running Ubuntu 17.10 for awhile, but [I made, over a period of two months, a long list of trivial changes that made me decide the simplest thing would be if] I decided to reinstall the OS. And that didn’t work. Or, it sorta kinda worked once or twice, then quit working completely.

Did I run into the Ubuntu BIOS bug? I don’t know. But I was installing Ubuntu and I couldn’t get past the BIOS. So maybe I did. But I don’t know.

For the time being, I’m using my Macs and some older (pre-UEFI Secure Boot) hardware. Here’s an article about how to fix the Ubuntu BIOS bug. Here’s some more about the provenance of the bug.

Ubuntu 16.10 and Zeroconf

I don’t do enough system admin to enjoy it when I do. (Does anyone?)

When you upgrade Ubuntu, you lose a lot of the software you’d installed. There’s a list of system admin tips that I try to remember here. (Which reminds me, I should find a better home for it for when Twitter dies.)

I couldn’t resolve names of Macs in my local network. I should point out what a shame it is that Mac addresses aren’t the same thing as MAC addresses, since Google as my primary system admin resource.

That’s the work of avahi-daemon and friends (a/k/a Zeroconf and Bonjour). For awhile I thought that something had broken there. But eventually, I figured out that was working, i.e., the problem lay elsewhere.

I wondered if they’d added a firewall to 16.10. They did (or, for all I know, they’ve always had one) called ufw (more here), but it’s (still) not enabled by default. If that ever changes, I can learn what to do about it here.

After about an hour, I found out there is something called nss-resolve. Which is actually a pretty clever idea. Except it wasn’t working. Its configuration file is well documented here. Good luck figuring that out.

Finally, I just compared my 16.10 /etc/nss-switch.conf file with the one from a working installation of 16.04.1. HAH!

Not only was there a difference, it gave me a string I could Google. That brought me to this: http://askubuntu.com/questions/837982/how-to-configure-local-dns-lookup-in-ubuntu-16-10

It also brought me to this: https://github.com/systemd/systemd/issues/4157, which (if I read it correctly) says that I should go ahead and use the string from 16.04.1 that works instead of the one from 16.10 that doesn’t.


I had to reinstall Linux on my laptop and ran into some trouble with the ttf-mscorefonts package. (It runs some text-mode click-wrap license agreement, except in my case, there was a problem where it didn’t run properly. I probably hit the wrong button at some point.) Anyway, this is not a new problem:

I picked the latter one because it didn’t involve dpkg.