I’m moving lots of my machines back to Debian in the yearning for rock solid stability and a complete distribution that just works. Debian was the first GNU/Linux I ever used as a teenager back in late 90s and I’ve fond memories of it.

Starting with the official amd64 install guide.


Make USB key

I quickly discovered I want the image that includes proprietary firmware, so I can get my (nasty) wifi card working as quickly as possible.

Conveniently Debian images can now be written directly to the USB device:

# cp debian.iso /dev/sdX
# sync

This is a neat technique that replaces the virtual device /dev/sdX with the iso file. The magic here is sync, which forces changed blocks on the virtual device to be synchronised with the physical device.


The installer is a well oiled machine. Unlike Arch (which I adore) building Debian boxes feels just trivial.

Things I like to do:

For a desktop

  • Go one single LVM-less giant partition.
  • Only install the base X windows workload (i.e., none of the GNOME, KDE, LXDE bloat)
  • This gives my custom dwm build a better chances of compiling and installing

For a server

  • Use LVM and LUKS for my partitions; as this gives me flexibility down the road to shuffle physical and logical volumes around.

Post boot



vi /etc/network/interfaces

Add the following (amend for your specific interface):

allow-hotplug wlp3s0
iface wlp3s0 inet dhcp
    wpa-ssid norm

Bring up the interface with ifup wlp3s0

Wired Ethernet

I recommend using network-manager (nmcli is the frontend) to manage networks. Install it from the install media (luckily its packed on DVD 1):

# apt install network-manager

Ensure that any existing entries for your ethernet device (e.g., enp0s31f6) are commented out in /etc/network/interfaces, as this will prevent network-manager from managing the device.

A sure sign of this, you’ll get the following error when you try to bring the connection up with nmcli:

Error: Connection activation failed: No suitable device found for this connection (device lo not available because device is strictly unmanaged).

Edit /etc/apt/sources.list and comment out the cdrom sourced entries.

Install some essentials, to persist network configuration:

apt update
apt install network-manager
apt install git


Add users to sudo group, and register the group in sudoers:

usermod -aG sudo ben

Install packages

I’ve created a list of essential Debian packages I use for desktop and server workloads.

To get it clone dots as bare repo (i.e., without .git):

git clone --bare git@github.com:bm4cs/dots-home.git $HOME/.dots
alias dots='/usr/bin/git --git-dir=$HOME/.dots/ --work-tree=$HOME'
dots checkout
dots config --local status.showUntrackedFiles no

Hack up ~/scripts/debian/software.txt as needed.

Then run ./scripts/debian/install-software.sh