An EL to CircleLinux migration tool ,port from almalinux-deploy.
In order to convert your EL8 operating system to CircleLinux do the following:
-
CentOS 8.4 or 8.5 is required to convert to CircleLinux. It is recommended to update to 8.5 prior to moving to CircleLinux but not required if you are on at least CentOS 8.4. Rebooting after the updates is recommended if your system received new updates.
sudo dnf update -y sudo reboot
- As of January 31, 2022 the CentOS 8 mirrorlists are offline. In order to successfully perform
dnf update -y
you need to update yourdnf
config files to point to a valid mirror. You can use the followingsed
commands for convenience to restorednf
to a functional state that will let you update to 8.5 and subsequently CircleLinux.-
sudo sed -i -e '/mirrorlist=http:\/\/mirrorlist.centos.org\/?release=$releasever&arch=$basearch&repo=/ s/^#*/#/' -e '/baseurl=http:\/\/mirror.centos.org\/$contentdir\/$releasever\// s/^#*/#/' -e '/^\[baseos\]/a baseurl=https://mirror.rackspace.com/centos-vault/8.5.2111/BaseOS/$basearch/os' /etc/yum.repos.d/CentOS-Linux-BaseOS.repo sudo sed -i -e '/mirrorlist=http:\/\/mirrorlist.centos.org\/?release=$releasever&arch=$basearch&repo=/ s/^#*/#/' -e '/baseurl=http:\/\/mirror.centos.org\/$contentdir\/$releasever\// s/^#*/#/' -e '/^\[appstream\]/a baseurl=https://mirror.rackspace.com/centos-vault/8.5.2111/AppStream/$basearch/os' /etc/yum.repos.d/CentOS-Linux-AppStream.repo sudo sed -i -e '/mirrorlist=http:\/\/mirrorlist.centos.org\/?release=$releasever&arch=$basearch&repo=/ s/^#*/#/' -e '/baseurl=http:\/\/mirror.centos.org\/$contentdir\/$releasever\// s/^#*/#/' -e '/^\[cr\]/a baseurl=https://mirror.rackspace.com/centos-vault/8.5.2111/ContinuousRelease/$basearch/os' /etc/yum.repos.d/CentOS-Linux-ContinuousRelease.repo sudo sed -i -e '/mirrorlist=http:\/\/mirrorlist.centos.org\/?release=$releasever&arch=$basearch&repo=/ s/^#*/#/' -e '/baseurl=http:\/\/mirror.centos.org\/$contentdir\/$releasever\// s/^#*/#/' -e '/^\[devel\]/a baseurl=https://mirror.rackspace.com/centos-vault/8.5.2111/Devel/$basearch/os' /etc/yum.repos.d/CentOS-Linux-Devel.repo sudo sed -i -e '/mirrorlist=http:\/\/mirrorlist.centos.org\/?release=$releasever&arch=$basearch&repo=/ s/^#*/#/' -e '/baseurl=http:\/\/mirror.centos.org\/$contentdir\/$releasever\// s/^#*/#/' -e '/^\[extras\]/a baseurl=https://mirror.rackspace.com/centos-vault/8.5.2111/extras/$basearch/os' /etc/yum.repos.d/CentOS-Linux-Extras.repo sudo sed -i -e '/mirrorlist=http:\/\/mirrorlist.centos.org\/?release=$releasever&arch=$basearch&repo=/ s/^#*/#/' -e '/baseurl=http:\/\/mirror.centos.org\/$contentdir\/$releasever\// s/^#*/#/' -e '/^\[fasttrack\]/a baseurl=https://mirror.rackspace.com/centos-vault/8.5.2111/fasttrack/$basearch/os' /etc/yum.repos.d/CentOS-Linux-FastTrack.repo sudo sed -i -e '/mirrorlist=http:\/\/mirrorlist.centos.org\/?release=$releasever&arch=$basearch&repo=/ s/^#*/#/' -e '/baseurl=http:\/\/mirror.centos.org\/$contentdir\/$releasever\// s/^#*/#/' -e '/^\[ha\]/a baseurl=https://mirror.rackspace.com/centos-vault/8.5.2111/HighAvailability/$basearch/os' /etc/yum.repos.d/CentOS-Linux-HighAvailability.repo sudo sed -i -e '/mirrorlist=http:\/\/mirrorlist.centos.org\/?release=$releasever&arch=$basearch&repo=/ s/^#*/#/' -e '/baseurl=http:\/\/mirror.centos.org\/$contentdir\/$releasever\// s/^#*/#/' -e '/^\[plus\]/a baseurl=https://mirror.rackspace.com/centos-vault/8.5.2111/centosplus/$basearch/os' /etc/yum.repos.d/CentOS-Linux-Plus.repo sudo sed -i -e '/mirrorlist=http:\/\/mirrorlist.centos.org\/?release=$releasever&arch=$basearch&repo=/ s/^#*/#/' -e '/baseurl=http:\/\/mirror.centos.org\/$contentdir\/$releasever\// s/^#*/#/' -e '/^\[powertools\]/a baseurl=https://mirror.rackspace.com/centos-vault/8.5.2111/PowerTools/$basearch/os' /etc/yum.repos.d/CentOS-Linux-PowerTools.repo
- You can use the
-f
flag (iesudo bash circlelinux-deploy.sh -f
) to handle this for you.
-
-
Back up of the system. We didn't test all possible scenarios so there is a risk that something goes wrong. In such a situation you will have a restore point.
-
Download the circlelinux-deploy.sh script:
$ curl -O https://raw.githubusercontent.com/circle-linux/migrate-tools/master/circlelinux-deploy.sh
-
Run the script and check its output for errors:
$ sudo bash circlelinux-deploy.sh ... Migration to CircleLinux is completed
-
Reboot is recommended to boot with CircleLinux kernel:
sudo reboot
-
Ensure that your system was successfully converted:
# check release file $ cat /etc/redhat-release Circle Linux release 8.5 # check that the system boots CircleLinux kernel by default $ sudo grubby --info DEFAULT | grep "Circle Linux" title="Circle Linux (4.18.0-348.20.1.el8_5.x86_64) 8"
-
Thank you for choosing Circle Linux!
- CentOS 8 support.
- Write debug information to a log file for failed migration analysis.
- Oracle Linux 8 support.
- RHEL 8 support.
- Rocky Linux 8 support.
- DirectAdmin control panel support.
- cPanel control panel support.
- Plesk control panel support.
- Cover all common scenarios with tests.
- Add OpenNebula support to Molecule test suite.
Any contribution is welcome:
- Find and report bugs.
- Submit pull requests with bug fixes, improvements and new tests.
- Test it on different configurations and share your thoughts in discussions.
Technology stack:
- The migration script is written in Bash.
- We use Bats for unit tests.
- Functional tests are implemented using Molecule, Ansible and Testinfra. Virtual machines are powered by Vagrant and VirtualBox.
To run the functional tests do the following:
- Install Vagrant and VirtualBox.
- Install requirements from the requirements.txt file.
- Run
molecule test --all
in the project root.
Licensed under the GPLv3 license, see the LICENSE file for details.