Appearance
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
rootpartition will use 100 GB of space - The
homepartition will use the rest of the free space on the disk
Boot off the Ubuntu install medium.
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
- 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
2
3
4
- create a new
homepartition 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
2
- Copy everything off the home directory on the
rootpartition into the newhomepartition.
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
2
3
4
5
- Edit the
/root/etc/fstabfile in the mountedrootpartition and add the following:
/dev/mapper/vgkubuntu-home /home ext4 defaults 0 2
/dev/mapper/vgkubuntu-home /home ext4 defaults 0 2
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
2
3
And if all went well you have moved home onto it’s own partition.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
2
3
sudo apt update
sudo apt install chromium-browser
sudo apt update
sudo apt install chromium-browser
1
2
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
2
3
4
5
6
7
8
9
10
11
12
13
14