This tutorial will show "How to migrate from CentOS 8.3 to AlmaLinux 8.3" using AlmaLinux deploy script. This is the official way shared by the AlmaLinux team on GitHub. You can run all these commands as a sudo or root user.
** My suggestion would be to run this migration on your test servers first and then implement it in production with full caution.
I have also published the unofficial way to migrate CentOS to AlmaLinux, if you are interested.
Table of Contents
CentOS to AlmaLinux Migration requirements
- Source Operating system - CentOS 8.3
- Target Operating System - AlmaLinux 8.3
- Almalinux-deploy.sh script from Github
- Internet connection
- Root or sudo access
- Take a full backup of your server or VM
How to migrate from CentOS 8.3 to AlmaLinux 8.3
Step 1.1 - Take backup and make a restore point
The very first step is to secure your data. Take full back up of important data and make a restore point of your VM or system to fight unforeseen issues.
"Always Measure twice, cut once"
Step 1.2 - Disable secure boot
Secure boot is yet not supported by AlmaLinux. It has been reported as a bug (almbz#3) and resolution is yet not there. Make sure you disable secure boot in advance before upgrading.
Depending upon your bare metal operating system, follow these links to disable secure boot.
Step 1.3 - Update your system and reboot
Update CentOS with latest available packages
# dnf update OR $ sudo dnf update
Type "y" when prompted. Once package update completes, Take a system reboot.
Step 1.4 - Download AlmaLinux-deploy script from GitHub
You can download AlmaLinux-deploy.sh script manually from GitHub or run Curl command to get it.
# curl -O https://raw.githubusercontent.com/AlmaLinux/almalinux-deploy/master/almalinux-deploy.sh
In case you found, "Curl command not found" error. Then install it first.
# dnf install curl
Step 1.5 - Check your current OS version
Make sure you have CentOS 8. Otherwise you may run into issues.
# cat /etc/os-release
Step 1.6 - Run the script and migrate your CentOS to AlmaLinux
Time to run the script and check for any errors, warnings. It will take some time to wipe out all package and to replace it with AlmaLinux.
# bash almalinux-deploy.sh
These are the actions performed by script during CentOS 8 to AlmaLinux 8 migration -
- Check root privileges
- Check Secure boot disabled
- Check CentOS 8 is supported or not
- Download RPM-GPG keys and AlmaLinux release package
- Remove CentOS logos, gpg keys, backgrounds and repositories
- Remove Libreport-plugin
- Install and update AlmaLinux packages and repositories
- Remove/cleanup existing packages
You will get a migration "complete" message, if everything goes smooth.
Step 1.7 - Sync distro after migration
Once migration from CentOS 8.3 to AlmaLinux 8.3 completes. Run distro-sync command as shown -
# dnf distro-sync -y
Step 1.8 - Check OS version again to validate successful migration
It must show you AlmaLinux 8.3 (Purple Manul), if you check OS version after migration.
# cat /etc/os-release
Step 1.9 - Verify Kernel and grub details
After migration, script will also make AlmaLinux your default kernel. You just need to verify it.
# grubby --info DEFAULT | grep AlmaLinux
Step 1.10 - Reboot your system
Once you will login. You will get your AlmaLinux 8 console. Congrats!! You have successfully completed migration from CentOS to AlmaLinux.
Step 1.11 - Change Hostname (Optional)
In my case, my test VM hostname is CentOS and I want to change it to AlmaLinux-8 now.
# hostnamectl set-hostname AlmaLinux-8 or $ sudo hostnamectl set-hostname AlmaLinux-8
-> Logout once and login back to see your new hostname.
How to remove CentOS grub entries and keep only AlmaLinux entries?
The Grub menu entries in RHEL/CentOS 8 are assembled from various files and scripts. So we won't see static entries as was the case for previous versions of the OSes.
Follow these steps to keep AlmaLinux entries only in grub list during boot.
Step 1.12 - Check for all grub entries using the grubby command
First of all check how many entries are still reflecting in Grub menu.
# grubby --info ALL
If you will check closely in below mentioned image. There are three grub entries -
- It's for AlmaLinux - We will keep it as is
- CentOS Linux
We need to clean 2nd and 3rd stale entry of CentOS from grub to sanitize it . So let's move further to do the same
Step 1.13 - Change directory to /boot/loader/entries/
To remove stale entries from Grub, change directory to /boot/loader/entries.
# cd /boot/loader/entries/
Step 1.14 - List files in this directory
You will see few files here. It is three in my case. One for AlmaLinux and Two for CentOS and rescue boot entries.
# ls e88c5a46cf0a409097a5aa5e1d2f89c8-0-rescue.conf e88c5a46cf0a409097a5aa5e1d2f89c8-4.18.0-193.el8.x86_64.conf e88c5a46cf0a409097a5aa5e1d2f89c8-4.18.0-240.15.1.el8_3.x86_64.conf
Step 1.15 - Move all these files to /tmp except AlmaLinux ".conf" file
Check all these three files individually. Then you can move all these file to /tmp directory except "e88c5a46cf0a409097a5aa5e1d2f89c8-4.18.0-240.15.1.el8_3.x86_64.conf" which is for AlmaLinux in my case.
# mv e88c5a46cf0a409097a5aa5e1d2f89c8-0-rescue.conf e88c5a46cf0a409097a5aa5e1d2f89c8-4.18.0-193.el8.x86_64.conf /tmp # ls e88c5a46cf0a409097a5aa5e1d2f89c8-4.18.0-240.15.1.el8_3.x86_64.conf
Step 1.16 - Reboot your system
Now you will see only AlmaLinux entry in (default boot).
Watch this short video on "How to Migrate from CentOS 8.3 to AlmaLinux 8.3" using official script.
AlmaLinux has fulfilled its second promise also by providing an official script to migrate from CentOS 8 to AlmaLinux 8 seamlessly.
If you face any issues or find bugs, you can report them on the AlmaLinux Reddit page and they are really very quick to get this resolve. Already fixed more than 4 bugs in scripts in the last few days.
Can I migrate CentOS 7.x or CentOS 6.x to AlmaLinux 8 ?
Yes, But it will be two step process -
- If you have Centos 7.x or 6.x. You need to first upgrade it to CentOS 8.3 at least to follow this migration.
- Then upgrade CentOS 8.3 to AlmaLinux 8.3.
Currently, there is no official way to migrate any CentOS 7.x or 6.x version to AlmaLinux. CloudLinux team may come up with scripts to migrate CentOS 7.x and 6.x also to AlmaLinux 8 directly. Just assuming and hopeful 😉