Skip to content

Instantly share code, notes, and snippets.

@plembo
Last active April 14, 2026 13:48
Show Gist options
  • Select an option

  • Save plembo/028c2df30ffdbd30b5722e3c8d15786c to your computer and use it in GitHub Desktop.

Select an option

Save plembo/028c2df30ffdbd30b5722e3c8d15786c to your computer and use it in GitHub Desktop.
Migrating from Ubuntu to Mint

Migrating from Ubuntu Desktop to Linux Mint

"No pain, no gain"

Some notes on the process of heading off the next upgrade apocalypse.

Loosely acknowledges the existence of the official Linux Mint Installation Guide.

Before install

Backup before install:

  • /home
  • /etc
  • /usr/local
  • /opt
  • /var/log
  • /var/mail
  • /var/spool

Delete Gnome configs

  • ~/.config/gnome-session/
  • ~/.config/gnome-initial-setup-done
  • ~/.config/gnome-shell/
  • ~/.config/gnome-control-center/
  • ~/.config/gnome-software/
  • ~/.config/dconf/
  • ~/.local/share/gnome-shell/
  • ~/.local/share/gnome-software/
  • ~/.config/ubuntu-advantage/ (Ubuntu-specific)

Other

Search for and delete any obvious additional cruft.

During install

Partition disk

  • Select "Something else" in partitioning step
  • Partition table (sizes are for illustration)
Device Type Mount point Format Size
nvme0n1p1 efi /boot/efi Y 500M
nvme0n1p2 ext4 / Y 130G
nvme0n1p3 ext4 /home N 480G
sda1 ext4 /d1 N 3T

DO NOT reformat /home or /d1 !

Post install

Network

  • Relink /etc/resolv.conf:

    sudo rm /etc/resolv.conf
    sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
    

    Edit /etc/systemd/resolved.conf:

    #DNS=
    DNSStubListener=no
    

    Disabling the listener is not strictly necessary, but required if you want to run your own nameserver (dnsmasq or BIND).

  • Set static networking for IPv4

  • Set dynamic networking for IPv6

  • Add br0 interface (includes renaming primary interface to device name)

Software

  • Install vim and configure as default editor (select vim-basic): sudo update-alternatives --config editor
  • Install additional software from List of useful software

System configurations

Most of these can be addessed by backing up /etc and then selectively reapplying configurations after install complete.

Docker

Libvirt

Nginx

Restore:

  • /etc/nginx/nginx.conf
  • /etc/nginx/sites-available
  • /etc/nginx/sites-enabled

Chrony

Install and configure chrony in place of systemd-timesyncd:

sudo apt install chrony
sudo vi /etc/chrony/chrony.conf

My chrony.conf:

# pool ntp.ubuntu.com        iburst maxsources 4
# pool 0.ubuntu.pool.ntp.org iburst maxsources 1
# pool 1.ubuntu.pool.ntp.org iburst maxsources 1
# pool 2.ubuntu.pool.ntp.org iburst maxsources 2
server 0.us.pool.ntp.org iburst
server 1.us.pool.ntp.org iburst
server 2.us.pool.ntp.org iburst
server 3.us.pool.ntp.org iburst

If you want chrony to act as an NTP server, append allow [your network/dd (e.g., allow 10.0.1.0/24) to the configuration and open UDP port 123 (sudo ufw allow ntp).

User customization

My user

  • Restore crontab
  • Test scripts
  • Configure desktop features, including Variety desktop backgrounds

Restic

  • Restore restic group and user with same ID and password

    sudo groupadd -g dddd restic
    sudo useradd -g restic -u dddd -d /home/restic -s /bin/bash -c "Restic backup" restic
    

    Be sure to match the existing gid and uid for your restic user.

  • Restore crontab

  • Test scripts in /home/restic

Other users

  • Restore each user's group and account with same gid, uid, and password.
  • Make members of additional groups as necessary:
    sudo usermod -a -G cdrom,dip,plugdev,users,lpadmin,sambashare [username]
    
    Admin or dev users might also get adm,sudo,docker,kvm,libvirt,dialout and any resource group (e.g., staff).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment