Skip to content

Kubuntu Installation

Installation

Follow installations step normally and select full disk encryption if needed.

Moving home to own partition

When installing Ubuntu from scratch you get the option to use full disk encryption using LUKS and LVM, but it doesn't give you the option of specify your own partition layout; it creates a small swap partition and gives the rest to the root partition. The easiest way is to let the Ubuntu installer do it's thing and then resize the root partition and add a home partition afterwards. This is complicated by the use of LUKS to encrypt the disk and it’s not possible to resize a root partition while it’s in use.

The following assumes that:

  • The encrypted partition is /dev/nvme0n1p3
  • The LVM volume group is called vgkubuntu
  • The root partition will use 100 GB of space
  • The home partition will use the rest of the free space on the disk
  1. Boot off the Ubuntu install medium.

  2. Decrypt the disk and mount the encrypted LUKS partition.

bash
sudo cryptsetup luksOpen /dev/nvme0n1p3 vgkubuntu-vg
sudo cryptsetup luksOpen /dev/nvme0n1p3 vgkubuntu-vg
1
  1. Resize the root partition to 100 GB.
bash
sudo e2fsck -f /dev/mapper/vgkubuntu-root
sudo resize2fs /dev/mapper/vgkubuntu-root 90G
sudo lvreduce -L 100G /dev/mapper/vgkubuntu-root
sudo resize2fs /dev/mapper/vgkubuntu-root
sudo e2fsck -f /dev/mapper/vgkubuntu-root
sudo resize2fs /dev/mapper/vgkubuntu-root 90G
sudo lvreduce -L 100G /dev/mapper/vgkubuntu-root
sudo resize2fs /dev/mapper/vgkubuntu-root
1
2
3
4
  1. create a new home partition using all the free disk space
bash
sudo lvcreate -n home -l 100%FREE vgkubuntu
sudo mkfs.ext4 /dev/mapper/vgkubuntu-home
sudo lvcreate -n home -l 100%FREE vgkubuntu
sudo mkfs.ext4 /dev/mapper/vgkubuntu-home
1
2
  1. Copy everything off the home directory on the root partition into the new home partition.
bash
mkdir /root
sudo mount  /dev/mapper/vgkubuntu-root /root
mkdir /home
sudo mount  /dev/mapper/vgkubuntu-home /home
rsync -av root/home/ home/
mkdir /root
sudo mount  /dev/mapper/vgkubuntu-root /root
mkdir /home
sudo mount  /dev/mapper/vgkubuntu-home /home
rsync -av root/home/ home/
1
2
3
4
5
  1. Edit the /root/etc/fstab file in the mounted root partition and add the following:
/dev/mapper/vgkubuntu-home	/home		ext4	defaults	0	2
/dev/mapper/vgkubuntu-home	/home		ext4	defaults	0	2
1
  1. Unmount the drives and reboot
bash
sudo umount /root
sudo umount /home
sudo reboot
sudo umount /root
sudo umount /home
sudo reboot
1
2
3

And if all went well you have moved home onto it’s own partition.

Source

Packages

Disable autoupgrade for certain packages

Add linux, nvidia and firefox packages to auto upgrade blacklist in /etc/apt/apt.conf.d/50unattended-upgrades file.

Unattended-Upgrade::Package-Blacklist {
	"linux-";
	"nvidia-";
	"firefox";
};
Unattended-Upgrade::Package-Blacklist {
	"linux-";
	"nvidia-";
	"firefox";
};
1
2
3
4
5

Remove unnecessary packages

bash
sudo apt purge \
	snapd \ 			# 🤮
	flatpack \			# 🤮
	plasma-discover \	# Kubuntu App Store
	muon \				# Unnecessary package manager GUI
	skanlite			# Image scanning tool
sudo apt purge \
	snapd \ 			# 🤮
	flatpack \			# 🤮
	plasma-discover \	# Kubuntu App Store
	muon \				# Unnecessary package manager GUI
	skanlite			# Image scanning tool
1
2
3
4
5
6

Basic packages

Some of these may already be installed but it doesn't matter.

bash
sudo apt install \
	apt-transport-https \
	build-essential \
	ca-certificates \
	curl \
	git \
	gnupg \
	gnupg-agent \
	htop \
	nano \
	make \
	libnotify-bin \
	lm-sensors \
	lsb-release \
	psensor \
	smartmontools \
	software-properties-common \
	sshfs \
	resolvconf \
	wget \
	xclip \
	xdotool;
sudo apt install \
	apt-transport-https \
	build-essential \
	ca-certificates \
	curl \
	git \
	gnupg \
	gnupg-agent \
	htop \
	nano \
	make \
	libnotify-bin \
	lm-sensors \
	lsb-release \
	psensor \
	smartmontools \
	software-properties-common \
	sshfs \
	resolvconf \
	wget \
	xclip \
	xdotool;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

Optional

Pick and choose.

bash
sudo apt install \
	deluge \
	ffmpeg \
	keepass2 \
	kcolorchooser \
	krdc \
	krita \
	libreoffice \
	obs-studio \
	openjdk-11-jdk \
	openjdk-11-jre \
	steam \
	telegram-desktop \
	virtualbox \
	wireguard \
	wireguard-tools;
sudo apt install \
	deluge \
	ffmpeg \
	keepass2 \
	kcolorchooser \
	krdc \
	krita \
	libreoffice \
	obs-studio \
	openjdk-11-jdk \
	openjdk-11-jre \
	steam \
	telegram-desktop \
	virtualbox \
	wireguard \
	wireguard-tools;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

Nvidia settings

bash
sudo apt install nvidia-settings
sudo apt install nvidia-settings
1

Docker

bash
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

sudo echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" > etc/apt/sources.list.d/docker.list

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose

# Add yourself to docker group (requires login and logout)
sudo usermod -aG docker <username>
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

sudo echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" > etc/apt/sources.list.d/docker.list

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose

# Add yourself to docker group (requires login and logout)
sudo usermod -aG docker <username>
1
2
3
4
5
6
7
8
9

Node.js v16.x

bash
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt update
sudo apt install nodejs
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt update
sudo apt install nodejs
1
2
3

Yarn

bash
sudo npm install -g npm
sudo yarn global add typescript ts-node ts-node-dev @angular/cli @vue/cli
sudo npm install -g npm
sudo yarn global add typescript ts-node ts-node-dev @angular/cli @vue/cli
1
2

VS Code

bash
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/
echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/trusted.gpg.d/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list
rm -f packages.microsoft.gpg
sudo apt update
sudo apt install code
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/
echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/trusted.gpg.d/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list
rm -f packages.microsoft.gpg
sudo apt update
sudo apt install code
1
2
3
4
5
6

Dbeaver

bash
wget https://dbeaver.io/files/dbeaver-ce_latest_amd64.deb
sudo dpkg -i dbeaver-ce_latest_amd64.deb
wget https://dbeaver.io/files/dbeaver-ce_latest_amd64.deb
sudo dpkg -i dbeaver-ce_latest_amd64.deb
1
2

Slack

bash
wget https://downloads.slack-edge.com/releases/linux/4.23.0/prod/x64/slack-desktop-4.23.0-amd64.deb
sudo dpkg -i slack-desktop-4.23.0-amd64.deb
wget https://downloads.slack-edge.com/releases/linux/4.23.0/prod/x64/slack-desktop-4.23.0-amd64.deb
sudo dpkg -i slack-desktop-4.23.0-amd64.deb
1
2

Teams

bash
wget https://packages.microsoft.com/repos/ms-teams/pool/main/t/teams/teams_1.4.00.26453_amd64.deb
sudo dpkg -i teams_1.4.00.26453_amd64.deb
wget https://packages.microsoft.com/repos/ms-teams/pool/main/t/teams/teams_1.4.00.26453_amd64.deb
sudo dpkg -i teams_1.4.00.26453_amd64.deb
1
2

Intellij IDEA

wget https://download.jetbrains.com/idea/ideaIC-2021.3.3.tar.gz -O intellij-idea.gz
sudo tar -xzf intellij-idea.tar.gz -C /opt
wget https://download.jetbrains.com/idea/ideaIC-2021.3.3.tar.gz -O intellij-idea.gz
sudo tar -xzf intellij-idea.tar.gz -C /opt
1
2

Chromium

Change APT priority for chromium-* packages by adding /etc/apt/preferences.d/chromium-deb-bionic-updates file with following contents:

Package: chromium-*
Pin: release a=bionic-updates
Pin-Priority: 900
Package: chromium-*
Pin: release a=bionic-updates
Pin-Priority: 900
1
2
3

Set Bionic Updates as a package source in /etc/apt/sources.list.d/bionic-updates.list file with following contents:

# For deb-based chromium. Supported only until 2023.
# See also /etc/apt/preferences.d/chromium-deb-bionic-updates
deb http://archive.ubuntu.com/ubuntu/ bionic-updates universe
# For deb-based chromium. Supported only until 2023.
# See also /etc/apt/preferences.d/chromium-deb-bionic-updates
deb http://archive.ubuntu.com/ubuntu/ bionic-updates universe
1
2
3
sudo apt update
sudo apt install chromium-browser
sudo apt update
sudo apt install chromium-browser
1
2

Dolphin

Settings for the Dolphin file manager can be found in ~/.local/share/kxmlgui5/dolphin/dolphinui.rc file. Recommended settings may be downloaded from here.

Detecting hardware sensors

bash
sudo sensors-detect
sudo sensors-detect
1

KSysGuard

Custom tab here.

Useful aliases and environment variables

Add these to ~/.bashrc.

bash
alias ll='ls -alFh'

# Path to user bin
export PATH="$PATH:$HOME/.local/bin"

# Path to Yarn bin
export PATH="$PATH:`yarn global bin`"

# Path to Chromium executable
export CHROME_BIN=/usr/bin/chromium-browser
export CHROME_EXECUTABLE=/usr/bin/chromium-browser

# Path to JDK 11
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
alias ll='ls -alFh'

# Path to user bin
export PATH="$PATH:$HOME/.local/bin"

# Path to Yarn bin
export PATH="$PATH:`yarn global bin`"

# Path to Chromium executable
export CHROME_BIN=/usr/bin/chromium-browser
export CHROME_EXECUTABLE=/usr/bin/chromium-browser

# Path to JDK 11
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
1
2
3
4
5
6
7
8
9
10
11
12
13
14