Upgrade CentOS 7 to CentOS 8
Warning: CentOS 8 has reached End of Life (EOL) and is no longer supported. You should really consider moving to a supported OS such as CentOS 8 Stream.
I was looking at some virtual machines earlier today and I realized that they were not running the most current version of CentOS. Since I am going to upgrade them, I figured it’d be the perfect time to document the process of how to do it.
The first thing I do is make a backup of my virtual machine. You can’t recover from an accident if you don’t have a recovery point. At the very least, make sure you have taken a snapshot of your virtual machine.
Next, I verify what version of CentOS I’m on by running the following command.
cat /etc/centos-releaseFrom the screenshot below you can see that I am currently on version 7.9.2009.

At this point, I’m going to enter “sudo su” on my VM and then enter my credentials, so that I can continue as ‘root’ and I don’t have to type “sudo” before every single command.
First step is to install the EPEL repository.
yum -y install epel-releaseNext, install both ‘yum-utils’ and ‘rpmconf’ by using this command.
yum -y install yum-utils rpmconfNext, use ‘rpmconf’ to resolve the RPM packages that are in use on your VM.
rpmconf -aThen clean up any packages that are not required by your system.
package-cleanup --leaves
package-cleanup --orphansGo ahead and reboot the system.
init 6Log back in and do “sudo su” again.
CentOS uses the dnf package manager as its new default package manager, so time to install it.
yum -y install dnfWith dnf installed, it is time to remove the yum package manager.
dnf -y remove yum yum-metadata-parser
rm -Rf /etc/yumUpdate all of the dnf packages.
dnf -y updateThe next step is to install the CentOS 8 release package.
dnf -y install http://vault.centos.org/8.5.2111/BaseOS/x86_64/os/Packages/{centos-linux-repos-8-3.el8.noarch.rpm,centos-linux-release-8.5-1.2111.el8.noarch.rpm,centos-gpg-keys-8-3.el8.noarch.rpm}Then upgrade the EPEL repository.
dnf -y upgrade https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
rpm --import http://download.fedoraproject.org/pub/eprl/RPM-GPG-KEY-EPEL-8Next, clean up the dnf cached files.
dnf clean all
rm -rf /var/cache/dnfCentOS Linux 8 had actually reached the End Of Life (EOL) as of December 31st, 2021. Which means that CentOS 8 will no longer receive development from the official CentOS project. After that EOL date, if you need to update your CentOS (yes, that means us right now), you need to change the mirrors to point to vault.centos.org where they are archived. So a better option would actually be to upgrade to CentOS Stream instead, but we’ll save that for another post… 
Here is how to change the mirrors.
cd /etc/yum.repos.d/
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
dnf update
cdThere are two packages, dracut-network and rpmconf, that conflict with upgradingand need to be removed.
dnf remove dracut-network rpmconfRemove the old CentOS 7 kernel
rpm -e `rpm -q kernel`Remove any conflicting packages that are not needed any longer
rpm -e --nodeps sysvinit-toolsNow run the upgrade for CentOS 8
dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-syncNext it is time to install a new kernel on your VM.
dnf -y install kernel-coreThe final step to perform is to install CentOS 8 minimal packages
dnf -y groupupdate "Core" "Minimal Install"Now if you recheck you can see that both the CentOS version and the kernel version have been updated.
