Gentoo Maintenance


Package Management

Install a package

emerge --ask --verbose class/name

System Updates

First, sync the updated source def tree

sudo emerge --sync

Then, package sources can be updated and built.

emerge -uDU --keep-going --with-bdeps=y @world --ask

Sometimes, portage itself needs an update

sudo emerge --oneshot portage

To recompile preserved packges:

emerge @preserved-rebuild

System Upgrades

Upgrading an entire system with a new gentoo profile.

In this case, moving from 17.0 to 17.1

sudo eselect profile set default/linux/amd64/17.1

sudo emerge --update --deep --newuse -av @world 

Then recompile the packages that were held back.

sudo emerge @preserved-rebuild

After the system is done recompiling, clean up the old versions

sudo emerge --depclean -a
. /etc/profile

Finally, rebuild the initramfs

genkernel --lvm initramfs

Upgrade the Kernel


Backup the kernel config before trying to upgrade.

sudo cp /usr/src/linux/.config ~/kernel-config-`uname -r`

Allow 'unstable' packages:

echo 'ACCEPT_KEYWORDS="~amd64"' \
    | sudo tee -a /etc/portage/make.conf

Download new kernel sources

sudo emerge --ask  sys-kernel/gentoo-sources:5.4.2

Select the kernel version to build

sudo eselect kernel list
sudo eselect kernel set 2

Copy the config file backup to the updated kernel

sudo cp kernel-config-4.19.86-gentoo /usr/src/linux/.config

Update the kernel config file

cd /usr/src/linux
sudo make syncconfig 

Build the kernel

sudo genkernel all 

After the build completes (~1h), update the grub config

grub-mkconfig -o /boot/grub/grub.cfg

And reconfigure the LVM boot config

genkernel --lvm initramfs

Manual Kernel Upgrade

Faster than the automatic method.

sudo cp /usr/src/linux/.config ~/kernel-config-`uname -r`
sudo eselect kernel list
sudo eselect kernel set 2
sudo make syncconfig 
sudo make -j4
sudo make modules_prepare
sudo make modules_install
sudo make install 

sudo dracut --hostonly --kver 5.4.11-gentoo-x86_64

sudo grub-mkconfig -o /boot/grub/grub.cfg

Remove an old kernel

Remove the sources for old kernels

emerge --ask --depclean gentoo-sources

Remove all but the newest three kernels from /boot

eclean-kernel -n 3

System Upgrades


Add a user

useradd -m -G users,wheel,audio -s /bin/bash noah
passwd noah


Install sudo

#emerge --config =mail-mta/nullmailer-2.2
emerge --ask app-admin/sudo

Grant root priv to members of %wheel group.

echo "%wheel  ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/wheel

SSH keys

Login as your new user, add your SSH keys from github.

curl -s >> .ssh/authorized_keys

Or, copy them from another machine

ssh-copy-id user@host


Text editors

GNU Emacs

sudo emerge --ask app-editors/emacs


sudo emerge --ask app-editors/vim 

Log output formatter for logs, etc

sudo emerge --ask app-misc/grc

System Utils

Htop, tmux, etc

sudo emerge --ask app-misc/tmux
sudo emerge --ask net-misc/whois
sudo emerge --ask net-dns/bind-tools
sudo emerge --ask net-misc/rsync

Maintenance Tools


Cleaning Up

Install cleanup tools

sudo emerge --ask app-admin/eclean-kernel
sudo emerge --ask app-portage/gentoolkit

Run the cleanup programs:

sudo eclean-dist
sudo eclean-pkg
sudo eclean-kernel

Monitoring tools

sudo emerge --ask net-analyzer/nload
sudo emerge --ask sys-process/htop

Dev Tools

sudo emerge --ask dev-vcs/git

Security Tools

VPN Clients/Servers

sudo emerge --ask net-vpn/openvpn
sudo emerge --ask net-vpn/wireguard

Host firewall

sudo emerge --ask net-firewall/ufw

sudo /etc/init.d/ufw start
sudo ufw allow ssh
sudo rc-update add ufw default

Networking and traffic capture tools

sudo emerge --ask net-analyzer/nmap




Setup user environment

sudo emerge --ask x11-misc/xdg-user-dirs

sudo emerge --ask games-misc/cowsay

Config for VMs

To allow active resizing, install the spice agent

sudo emerge --ask app-emulation/spice-vdagent

This requires some kernel config.


Install the plymouth package:

sudo emerge --ask sys-boot/plymouth
sudo emerge --ask sys-boot/plymouth-openrc-plugin

Add this line to the /etc/rc.conf


Add the grub config lines:


After installing Plymouth, the initramfs will need to be rebuilt. Dracut is able to do this. Simply rebuild the current initramfs.

sudo dracut --hostonly --force

Finally, rebuild the grub config with these new params:

sudo grub-mkconfig -o /boot/grub/grub.cfg

Expand virual disk

Host OS system

Resize the qcow2 image with qemu-img, in this case growing by 20 gigs:

sudo qemu-img resize gentoo.qcow2 +20G

Guest OS system

Grow the partition with parted

sudo parted
> resize 3 100%

Expand the LVM Physical Volume

sudo pvresize /dev/sda3

Check that the pv was resized successfully

sudo vgdisplay stor

Extend the LVM object

sudo lvextend -l +100%Free /dev/stor/root

Finally, extend the underlying ext4 filesystem

sudo resize2fs /dev/stor/root 



sudo emerge -a app-i18n/unicode-emoji

sudo emerge -a kde-apps/okular

Crypto utils

sudo emerge -a app-crypt/keybase
sudo emerge -a app-crypt/kbfs

sudo emerge -a app-crypt/yubikey-manager app-crypt/yubikey-manager-qt

Shell enhancements

sudo emerge -a app-shells/bash-completion

Filesystem Utils

sudo emerge -a sys-fs/fuse-common sys-fs/xfsprogs sys-fs/squashfs-tools sys-fs/exfat-utils sys-fs/fuse-exfat sys-fs/fuseiso sys-fs/ntfs3g

Network Management

sudo emerge -a net-misc/networkmanager  kde-misc/plasma-applet-network-monitor

Recompile any packages with changed use flags.

euse -E networkmanager

Disable any network services

sudo rc-update del net.ens3
sudo rc-update del dhcpd

Enable NetworkManager

rc-service NetworkManager start
rc-update add NetworkManager default


emerge --ask xfce-base/xfce4-meta xfce-extra/xfce4-notifyd

Unbreaking things

emerge --changed-use --deep @world