@ -1,28 +1,30 @@
#!/bin/bash
#!/bin/bash
# Description: EL to AlmaLinux migration script.
# Description: EL to MSVSphere migration script.
# License: GPLv3.
# License: GPLv3.
# Environment variables:
# Environment variables:
# ALMA_RELEASE_URL - almalinux -release package download URL.
# ALMA_RELEASE_URL - msvsphere -release package download URL.
# ALMA_PUBKEY_URL - RPM-GPG-KEY- AlmaLinux download URL.
# ALMA_PUBKEY_URL - RPM-GPG-KEY- MSVSphere download URL.
set -euo pipefail
set -euo pipefail
BASE_TMP_DIR = '/root'
BASE_TMP_DIR = '/root'
OS_RELEASE_PATH = '/etc/os-release'
OS_RELEASE_PATH = '/etc/os-release'
REDHAT_RELEASE_PATH = '/etc/redhat-release'
REDHAT_RELEASE_PATH = '/etc/redhat-release'
STAGE_STATUSES_DIR = '/var/run/ almalinux -deploy-statuses'
STAGE_STATUSES_DIR = '/var/run/ msvsphere -deploy-statuses'
ALT_ADM_DIR = "/var/lib/alternatives"
ALT_ADM_DIR = "/var/lib/alternatives"
BAK_DIR = "/tmp/alternatives_backup"
BAK_DIR = "/tmp/alternatives_backup"
ALT_DIR = "/etc/alternatives"
ALT_DIR = "/etc/alternatives"
# AlmaLinux OS 8.5
# MSVSphere OS 8.5
MINIMAL_SUPPORTED_VERSION = '8.4'
MINIMAL_SUPPORTED_VERSION = '8.4'
VERSION = '0.1.13'
VERSION = '0.1.13'
DOWNGRADE = 'NO'
DOWNGRADE = 'NO'
BRANDING_PKGS = ( "centos-backgrounds" "centos-logos" "centos-indexhtml" \
BRANDING_PKGS = ( "centos-backgrounds" "centos-logos" "centos-indexhtml" \
"centos-logos-ipa" "centos-logos-httpd" \
"centos-logos-ipa" "centos-logos-httpd" \
"almalinux-backgrounds" "almalinux-logos" "almalinux-indexhtml" \
"almalinux-logos-ipa" "almalinux-logos-httpd" \
"oracle-backgrounds" "oracle-logos" "oracle-indexhtml" \
"oracle-backgrounds" "oracle-logos" "oracle-indexhtml" \
"oracle-logos-ipa" "oracle-logos-httpd" \
"oracle-logos-ipa" "oracle-logos-httpd" \
"oracle-epel-release-el8" "oracle-epel-release-el9" \
"oracle-epel-release-el8" "oracle-epel-release-el9" \
@ -39,6 +41,8 @@ REMOVE_PKGS=("centos-linux-release" "centos-gpg-keys" "centos-linux-repos" \
"libreport-plugin-rhtsupport" "libreport-rhel" "insights-client" \
"libreport-plugin-rhtsupport" "libreport-rhel" "insights-client" \
"libreport-rhel-anaconda-bugzilla" "libreport-rhel-bugzilla" \
"libreport-rhel-anaconda-bugzilla" "libreport-rhel-bugzilla" \
"linux-firmware-core" \
"linux-firmware-core" \
"almalinux-release" "almalinux-gpg-keys" "almalinux-repos" \
"almalinux-obsolete-packages" "libblockdev-btrfs" \
"oraclelinux-release" "oraclelinux-release-el8" \
"oraclelinux-release" "oraclelinux-release-el8" \
"oraclelinux-release-el9" "python3-gobject-base-noarch" \
"oraclelinux-release-el9" "python3-gobject-base-noarch" \
"redhat-release" "redhat-release-eula" \
"redhat-release" "redhat-release-eula" \
@ -53,8 +57,8 @@ module_list_installed=""
is_container = 0
is_container = 0
setup_log_files( ) {
setup_log_files( ) {
exec > >( tee /var/log/almalinux -deploy.log)
exec > >( tee /var/log/msvsphere -deploy.log)
exec 5> /var/log/almalinux -deploy.debug.log
exec 5> /var/log/msvsphere -deploy.debug.log
BASH_XTRACEFD = 5
BASH_XTRACEFD = 5
}
}
@ -95,7 +99,7 @@ get_status_of_stage() {
is_migration_completed( ) {
is_migration_completed( ) {
if get_status_of_stage "completed" ; then
if get_status_of_stage "completed" ; then
printf '\n\033[0;32mMigration to AlmaLinux was already completed\033[0m\n'
printf '\n\033[0;32mMigration to MSVSphere was already completed\033[0m\n'
exit 0
exit 0
fi
fi
}
}
@ -126,8 +130,8 @@ report_step_error() {
# Prints program usage information.
# Prints program usage information.
show_usage( ) {
show_usage( ) {
echo -e 'Migrates an EL system to AlmaLinux \n'
echo -e 'Migrates an EL system to MSVSphere \n'
echo -e 'Usage: almalinux -deploy.sh [OPTION]...\n'
echo -e 'Usage: msvsphere -deploy.sh [OPTION]...\n'
echo ' -h, --help show this message and exit'
echo ' -h, --help show this message and exit'
echo ' -f, --full perform yum upgrade to 8.5 if necessary'
echo ' -f, --full perform yum upgrade to 8.5 if necessary'
echo ' -d, --downgrade option to allow downgrade from CentOS Stream'
echo ' -d, --downgrade option to allow downgrade from CentOS Stream'
@ -222,7 +226,7 @@ get_panel_info() {
echo " ${ panel_type } ${ panel_version } "
echo " ${ panel_type } ${ panel_version } "
}
}
# Terminates the program if a platform is not supported by AlmaLinux .
# Terminates the program if a platform is not supported by MSVSphere .
#
#
# $1 - Operational system id (ID).
# $1 - Operational system id (ID).
# $2 - Operational system version (e.g. 8 or 8.3).
# $2 - Operational system version (e.g. 8 or 8.3).
@ -246,7 +250,7 @@ assert_supported_system() {
report_step_error " Check EL ${ os_version } is supported "
report_step_error " Check EL ${ os_version } is supported "
exit 1
exit 1
fi
fi
os_types = ( "centos" "almalinux" " ol" "rhel" "rocky" "virtuozzo" )
os_types = ( "centos" "almalinux" " msvsphere" " ol" "rhel" "rocky" "virtuozzo" )
if [ [ ! " ${ os_types [*] } " = ~ ${ os_type } ] ] ; then
if [ [ ! " ${ os_types [*] } " = ~ ${ os_type } ] ] ; then
report_step_error " Check ${ os_type } operating system is supported "
report_step_error " Check ${ os_type } operating system is supported "
exit 1
exit 1
@ -256,7 +260,7 @@ assert_supported_system() {
return 0
return 0
}
}
# Terminates the program if a control panel is not supported by AlmaLinux .
# Terminates the program if a control panel is not supported by MSVSphere .
#
#
# $1 - Control panel type.
# $1 - Control panel type.
# $2 - Control panel version.
# $2 - Control panel version.
@ -310,56 +314,56 @@ assert_supported_filesystem() {
save_status_of_stage "assert_supported_filesystem"
save_status_of_stage "assert_supported_filesystem"
}
}
# Returns a latest almalinux -release RPM package download URL.
# Returns a latest msvsphere -release RPM package download URL.
#
#
# $1 - AlmaLinux major version (e.g. 8).
# $1 - MSVSphere major version (e.g. 8).
# $2 - System architecture (e.g. x86_64).
# $2 - System architecture (e.g. x86_64).
#
#
# Prints almalinux -release RPM package download URL.
# Prints msvsphere -release RPM package download URL.
get_release_file_url( ) {
get_release_file_url( ) {
local -r os_version = " ${ 1 : 0 : 1 } "
local -r os_version = " ${ 1 : 0 : 1 } "
local -r arch = " ${ 2 } "
local -r arch = " ${ 2 } "
echo " ${ ALMA_RELEASE_URL :- https : //r epo.almalinux.org/almalinux/almalinux-release -latest-${ os_version } . ${ arch } .rpm } "
echo " ${ ALMA_RELEASE_URL :- https : //r sync.inferitos.ru/msvsphere/sphere-release-server-latest-${ os_version } . ${ arch } .rpm https : //rsync.inferitos.ru/msvsphere/sphere-release-identity-server-latest- ${ os_version } . ${ arch } .rpm https : //rsync.inferitos.ru/msvsphere/sphere-release-common -latest-${ os_version } . ${ arch } .rpm } "
}
}
# Returns a latest almalinux -repos RPM package download URL.
# Returns a latest msvsphere -repos RPM package download URL.
#
#
# $1 - AlmaLinux major version (e.g. 9).
# $1 - MSVSphere major version (e.g. 9).
# $2 - System architecture (e.g. x86_64).
# $2 - System architecture (e.g. x86_64).
#
#
# Prints almalinux -release RPM package download URL.
# Prints msvsphere -release RPM package download URL.
get_repos_file_url( ) {
get_repos_file_url( ) {
local -r os_version = " ${ 1 : 0 : 1 } "
local -r os_version = " ${ 1 : 0 : 1 } "
local -r arch = " ${ 2 } "
local -r arch = " ${ 2 } "
echo " ${ ALMA_REPOS_URL :- https : //r epo.almalinux.org/almalinux/almalinux -repos-latest-${ os_version } . ${ arch } .rpm } "
echo " ${ ALMA_REPOS_URL :- https : //r sync.inferitos.ru/msvsphere/sphere -repos-latest-${ os_version } . ${ arch } .rpm } "
}
}
# Returns a latest almalinux -gpg-keys RPM package download URL.
# Returns a latest msvsphere -gpg-keys RPM package download URL.
#
#
# $1 - AlmaLinux major version (e.g. 9).
# $1 - MSVSphere major version (e.g. 9).
# $2 - System architecture (e.g. x86_64).
# $2 - System architecture (e.g. x86_64).
#
#
# Prints almalinux -gpg-keys RPM package download URL.
# Prints msvsphere -gpg-keys RPM package download URL.
get_gpg_keys_file_url( ) {
get_gpg_keys_file_url( ) {
local -r os_version = " ${ 1 : 0 : 1 } "
local -r os_version = " ${ 1 : 0 : 1 } "
local -r arch = " ${ 2 } "
local -r arch = " ${ 2 } "
echo " ${ ALMA_REPOS_URL :- https : //r epo.almalinux.org/almalinux/almalinux -gpg-keys-latest-${ os_version } . ${ arch } .rpm } "
echo " ${ ALMA_REPOS_URL :- https : //r sync.inferitos.ru/msvsphere/sphere -gpg-keys-latest-${ os_version } . ${ arch } .rpm } "
}
}
# Downloads and installs the AlmaLinux public PGP key.
# Downloads and installs the MSVSphere public PGP key.
#
#
# $1 - Temporary directory path.
# $1 - Temporary directory path.
# $2 - AlmaLinux major version (e.g. 8).
# $2 - MSVSphere major version (e.g. 8).
install_rpm_pubkey( ) {
install_rpm_pubkey( ) {
if get_status_of_stage "install_rpm_pubkey" ; then
if get_status_of_stage "install_rpm_pubkey" ; then
return 0
return 0
fi
fi
local -r tmp_dir = " ${ 1 } "
local -r tmp_dir = " ${ 1 } "
local -r os_version = " ${ 2 : 0 : 1 } "
local -r os_version = " ${ 2 : 0 : 1 } "
local -r ALMA_PUBKEY_URL = " https://r epo.almalinux.org/almalinux/RPM-GPG-KEY-AlmaLinux -${ os_version } "
local -r ALMA_PUBKEY_URL = " https://r sync.inferitos.ru/msvsphere/RPM-GPG-KEY-MSVSphere -${ os_version } "
local -r pubkey_url = " ${ ALMA_PUBKEY_URL :- https : //r epo.almalinux.org/almalinux/RPM-GPG-KEY-AlmaLinux } "
local -r pubkey_url = " ${ ALMA_PUBKEY_URL :- https : //r sync.inferitos.ru/msvsphere/RPM-GPG-KEY-MSVSphere-8 } "
local -r pubkey_path = " ${ tmp_dir } /RPM-GPG-KEY- AlmaLinux "
local -r pubkey_path = " ${ tmp_dir } /RPM-GPG-KEY- MSVSphere "
local -r step = 'Download RPM-GPG-KEY- AlmaLinux '
local -r step = 'Download RPM-GPG-KEY- MSVSphere '
local output
local output
if ! output = $( curl -f -s -S -o " ${ pubkey_path } " " ${ pubkey_url } " 2>& 1) ; then
if ! output = $( curl -f -s -S -o " ${ pubkey_path } " " ${ pubkey_url } " 2>& 1) ; then
report_step_error " ${ step } " " ${ output } "
report_step_error " ${ step } " " ${ output } "
@ -368,60 +372,60 @@ install_rpm_pubkey() {
report_step_done " ${ step } "
report_step_done " ${ step } "
fi
fi
rpm --import " ${ pubkey_path } "
rpm --import " ${ pubkey_path } "
report_step_done 'Import RPM-GPG-KEY- AlmaLinux to RPM DB'
report_step_done 'Import RPM-GPG-KEY- MSVSphere to RPM DB'
rm -f " ${ pubkey_path } "
rm -f " ${ pubkey_path } "
save_status_of_stage "install_rpm_pubkey"
save_status_of_stage "install_rpm_pubkey"
}
}
# Downloads almalinux -release package.
# Downloads msvsphere -release package.
#
#
# $1 - Temporary directory path.
# $1 - Temporary directory path.
# $2 - almalinux -release package download URL.
# $2 - msvsphere -release package download URL.
#
#
# Prints downloaded file path.
# Prints downloaded file path.
download_release_files( ) {
download_release_files( ) {
local -r tmp_dir = " ${ 1 } "
local -r tmp_dir = " ${ 1 } "
local -r release_url = " ${ 2 } "
local -r release_url = " ${ 2 } "
local -r release_path = " ${ tmp_dir } / almalinux-release -latest.rpm"
local -r release_path = " ${ tmp_dir } / sphere-release-server-latest.rpm ${ tmp_dir } /sphere-release-identity-server-latest.rpm ${ tmp_dir } /sphere-release-common -latest.rpm"
local output
local output
if ! output = $( curl -f -s -S -o " ${ release_path } " " ${ release_url } " 2>& 1) ; then
if ! output = $( for url in ${ release_url } ; do curl -f -s -S -o " ${ tmp_dir } / $( echo $url | awk -F/ '{ print $NF }' | sed 's@-[0-9].*$@.rpm@' ) " " ${ url } " ; done 2>& 1) ; then
report_step_error 'Download almalinux packages - release' " ${ output } "
report_step_error 'Download msvsphere packages - release' " ${ output } "
exit 1
exit 1
fi
fi
echo " ${ release_path } "
echo " ${ release_path } "
}
}
# Downloads almalinux -repos package.
# Downloads msvsphere -repos package.
#
#
# $1 - Temporary directory path.
# $1 - Temporary directory path.
# $2 - almalinux -repos package download URL.
# $2 - msvsphere -repos package download URL.
#
#
# Prints downloaded file path.
# Prints downloaded file path.
download_repos_files( ) {
download_repos_files( ) {
local -r tmp_dir = " ${ 1 } "
local -r tmp_dir = " ${ 1 } "
local -r repos_url = " ${ 2 } "
local -r repos_url = " ${ 2 } "
local -r repos_path = " ${ tmp_dir } / almalinux -repos.rpm"
local -r repos_path = " ${ tmp_dir } / msvsphere -repos.rpm"
local output
local output
if ! output = $( curl -f -s -S -o " ${ repos_path } " " ${ repos_url } " 2>& 1) ; then
if ! output = $( curl -f -s -S -o " ${ repos_path } " " ${ repos_url } " 2>& 1) ; then
report_step_error 'Download almalinux packages - repos' " ${ output } "
report_step_error 'Download msvsphere packages - repos' " ${ output } "
exit 1
exit 1
fi
fi
echo " ${ repos_path } "
echo " ${ repos_path } "
}
}
# Downloads almalinux -gpg-keys package.
# Downloads msvsphere -gpg-keys package.
#
#
# $1 - Temporary directory path.
# $1 - Temporary directory path.
# $2 - almalinux -gpg-keys package download URL.
# $2 - msvsphere -gpg-keys package download URL.
#
#
# Prints downloaded file path.
# Prints downloaded file path.
download_gpg_keys_files( ) {
download_gpg_keys_files( ) {
local -r tmp_dir = " ${ 1 } "
local -r tmp_dir = " ${ 1 } "
local -r gpg_keys_url = " ${ 2 } "
local -r gpg_keys_url = " ${ 2 } "
local -r gpg_keys_path = " ${ tmp_dir } / almalinux -gpg-keys.rpm"
local -r gpg_keys_path = " ${ tmp_dir } / msvsphere -gpg-keys.rpm"
local output
local output
if ! output = $( curl -f -s -S -o " ${ gpg_keys_path } " " ${ gpg_keys_url } " 2>& 1) ; then
if ! output = $( curl -f -s -S -o " ${ gpg_keys_path } " " ${ gpg_keys_url } " 2>& 1) ; then
report_step_error 'Download almalinux packages - gpg-keys' " ${ output } "
report_step_error 'Download msvsphere packages - gpg-keys' " ${ output } "
exit 1
exit 1
fi
fi
echo " ${ gpg_keys_path } "
echo " ${ gpg_keys_path } "
@ -433,12 +437,13 @@ download_gpg_keys_files() {
assert_valid_package( ) {
assert_valid_package( ) {
local -r pkg_path = " ${ 1 } "
local -r pkg_path = " ${ 1 } "
local output
local output
if ! output = $( rpm -K " ${ pkg_path } " 2>& 1) ; then
rpm -K $pkg_path 2>& 1
report_step_error " Verify $( basename " ${ pkg_path } " ) package " \
if ! output = $( rpm -K ${ pkg_path } 2>& 1) ; then
report_step_error " Verify ${ pkg_path } package " \
" ${ output } "
" ${ output } "
exit 1
exit 1
fi
fi
report_step_done 'Verify almalinux -release package'
report_step_done 'Verify msvsphere -release package'
}
}
#
#
@ -492,10 +497,10 @@ dnf_upgrade() {
report_step_done 'DNF upgrade'
report_step_done 'DNF upgrade'
}
}
# Terminates the program if OS version doesn't match AlmaLinux version.
# Terminates the program if OS version doesn't match MSVSphere version.
#
#
# $1 - OS version.
# $1 - OS version.
# $2 - almalinux -release package file path.
# $2 - msvsphere -release package file path.
assert_compatible_os_version( ) {
assert_compatible_os_version( ) {
if get_status_of_stage "assert_compatible_os_version" ; then
if get_status_of_stage "assert_compatible_os_version" ; then
return 0
return 0
@ -503,7 +508,7 @@ assert_compatible_os_version() {
local -r os_version = " ${ 1 } "
local -r os_version = " ${ 1 } "
local -r release_path = " ${ 2 } "
local -r release_path = " ${ 2 } "
local alma_version
local alma_version
alma_version = $( rpm -qp --queryformat '%{version}' " ${ release_path } " )
alma_version = $( rpm -qp --queryformat '%{version}' ${ release_path } )
if [ [ " $( get_os_release_var 'NAME' ) " != 'CentOS Stream' ] ] ; then
if [ [ " $( get_os_release_var 'NAME' ) " != 'CentOS Stream' ] ] ; then
if [ [ " ${ os_version : 0 : 1 } " -lt " ${ MINIMAL_SUPPORTED_VERSION : 0 : 1 } " ] ] && [ [ " ${ os_version : 2 : 3 } " -lt " ${ MINIMAL_SUPPORTED_VERSION : 2 : 3 } " ] ] ; then
if [ [ " ${ os_version : 0 : 1 } " -lt " ${ MINIMAL_SUPPORTED_VERSION : 0 : 1 } " ] ] && [ [ " ${ os_version : 2 : 3 } " -lt " ${ MINIMAL_SUPPORTED_VERSION : 2 : 3 } " ] ] ; then
@ -581,42 +586,42 @@ remove_not_needed_redhat_dirs() {
}
}
# Install package almalinux -release
# Install package msvsphere -release
install_almalinux _release_package( ) {
install_msvsphere _release_package( ) {
if get_status_of_stage "install_ almalinux _release_package"; then
if get_status_of_stage "install_ msvsphere _release_package"; then
return 0
return 0
fi
fi
local -r release_path = " ${ 1 } "
local -r release_path = " ${ 1 } "
rpm -Uvh --nodeps " ${ release_path } "
rpm -Uvh --nodeps ${ release_path }
report_step_done 'Install almalinux -release package'
report_step_done 'Install msvsphere -release package'
save_status_of_stage "install_ almalinux _release_package"
save_status_of_stage "install_ msvsphere _release_package"
}
}
# Install package almalinux -repos
# Install package msvsphere -repos
install_almalinux _repos_package( ) {
install_msvsphere _repos_package( ) {
if get_status_of_stage "install_ almalinux _repos_package"; then
if get_status_of_stage "install_ msvsphere _repos_package"; then
return 0
return 0
fi
fi
local -r repos_path = " ${ 1 } "
local -r repos_path = " ${ 1 } "
rpm -Uvh --nodeps " ${ repos_path } "
rpm -Uvh --nodeps " ${ repos_path } "
report_step_done 'Install almalinux -repos package'
report_step_done 'Install msvsphere -repos package'
save_status_of_stage "install_ almalinux _repos_package"
save_status_of_stage "install_ msvsphere _repos_package"
}
}
# Install package almalinux -gpg-keys
# Install package msvsphere -gpg-keys
#
#
# $1 - full path (including package filename) to the almalinux -gpg-keys package
# $1 - full path (including package filename) to the msvsphere -gpg-keys package
install_almalinux _gpg_keys_package( ) {
install_msvsphere _gpg_keys_package( ) {
if get_status_of_stage "install_ almalinux _gpg_keys_package"; then
if get_status_of_stage "install_ msvsphere _gpg_keys_package"; then
return 0
return 0
fi
fi
local -r gpg_keys_path = " ${ 1 } "
local -r gpg_keys_path = " ${ 1 } "
rpm -Uvh --nodeps " ${ gpg_keys_path } "
rpm -Uvh --nodeps " ${ gpg_keys_path } "
report_step_done 'Install almalinux -gpg-keys package'
report_step_done 'Install msvsphere -gpg-keys package'
save_status_of_stage "install_ almalinux _gpg_keys_package"
save_status_of_stage "install_ msvsphere _gpg_keys_package"
}
}
# Remove brand packages and install the same AlmaLinux packages
# Remove brand packages and install the same MSVSphere packages
replace_brand_packages( ) {
replace_brand_packages( ) {
if get_status_of_stage "replace_brand_packages" ; then
if get_status_of_stage "replace_brand_packages" ; then
return 0
return 0
@ -636,7 +641,7 @@ replace_brand_packages() {
; ;
; ;
*)
*)
# shellcheck disable=SC2001
# shellcheck disable=SC2001
alma_pkg = " $( echo " ${ pkg_name } " | sed 's#centos\|oracle\|redhat\|rocky\| vzlinux#almalinux #') "
alma_pkg = " $( echo " ${ pkg_name } " | sed 's#centos\|oracle\|redhat\|rocky\| almalinux\|vzlinux#sphere #') "
; ;
; ;
esac
esac
alma_pkgs += ( " ${ alma_pkg } " )
alma_pkgs += ( " ${ alma_pkg } " )
@ -658,33 +663,25 @@ replace_brand_packages() {
}
}
# Converts a CentOS like system to AlmaLinux
# Converts a CentOS like system to MSVSphere
#
#
# $1 - almalinux -release RPM package path.
# $1 - msvsphere -release RPM package path.
# $2 - almalinux -repos RPM package path.
# $2 - msvsphere -repos RPM package path.
# $3 - almalinux -gpg-keys RPM package path
# $3 - msvsphere -gpg-keys RPM package path
migrate_from_centos( ) {
migrate_from_centos( ) {
if get_status_of_stage "migrate_from_centos" ; then
if get_status_of_stage "migrate_from_centos" ; then
return 0
return 0
fi
fi
local -r release_path = " ${ 1 } "
local -r release_path = " ${ 1 } "
case " ${ os_version } " in
local -r repos_path = " ${ 2 } "
9*)
local -r gpg_keys_path = " ${ 3 } "
local -r repos_path = " ${ 2 } "
# replace OS packages with msvsphere-release
local -r gpg_keys_path = " ${ 3 } "
; ;
esac
# replace OS packages with almalinux-release
# and OS centos-specific packages
# and OS centos-specific packages
remove_os_specific_packages_before_migration
remove_os_specific_packages_before_migration
remove_not_needed_redhat_dirs
remove_not_needed_redhat_dirs
install_almalinux_release_package " ${ release_path } "
install_msvsphere_release_package " ${ release_path } "
case " ${ os_version } " in
install_msvsphere_repos_package " ${ repos_path } "
9*)
install_msvsphere_gpg_keys_package " ${ gpg_keys_path } "
install_almalinux_repos_package " ${ repos_path } "
install_almalinux_gpg_keys_package " ${ gpg_keys_path } "
; ;
esac
replace_brand_packages
replace_brand_packages
save_status_of_stage "migrate_from_centos"
save_status_of_stage "migrate_from_centos"
}
}
@ -776,9 +773,9 @@ install_kernel() {
fi
fi
if ! output = $( rpm -q kernel 2>& 1) ; then
if ! output = $( rpm -q kernel 2>& 1) ; then
if output = $( dnf -y install kernel 2>& 1) ; then
if output = $( dnf -y install kernel 2>& 1) ; then
report_step_done "Install AlmaLinux kernel"
report_step_done "Install MSVSphere kernel"
else
else
report_step_error "Install AlmaLinux kernel"
report_step_error "Install MSVSphere kernel"
fi
fi
fi
fi
save_status_of_stage "install_kernel"
save_status_of_stage "install_kernel"
@ -1010,21 +1007,21 @@ add_efi_boot_record() {
fi
fi
if [ [ ${ arch } = = "x86_64" && $device = = *"/dev/md" * ] ] ; then
if [ [ ${ arch } = = "x86_64" && $device = = *"/dev/md" * ] ] ; then
efibootmgr -c -L " AlmaLinux" -l "\EFI\almalinux \shimx64.efi" -d " ${ disk_name1 } " -p " ${ disk_num1 } "
efibootmgr -c -L " MSVSphere" -l "\EFI\msvsphere \shimx64.efi" -d " ${ disk_name1 } " -p " ${ disk_num1 } "
efibootmgr -c -L " AlmaLinux" -l "\EFI\almalinux \shimx64.efi" -d " ${ disk_name2 } " -p " ${ disk_num2 } "
efibootmgr -c -L " MSVSphere" -l "\EFI\msvsphere \shimx64.efi" -d " ${ disk_name2 } " -p " ${ disk_num2 } "
elif [ [ ${ arch } = = "aarch64" && $device = = *"/dev/md" * ] ] ; then
elif [ [ ${ arch } = = "aarch64" && $device = = *"/dev/md" * ] ] ; then
efibootmgr -c -L " AlmaLinux" -l "\EFI\almalinux \shimaa64.efi" -d " ${ disk_name1 } " -p " ${ disk_num1 } "
efibootmgr -c -L " MSVSphere" -l "\EFI\msvsphere \shimaa64.efi" -d " ${ disk_name1 } " -p " ${ disk_num1 } "
efibootmgr -c -L " AlmaLinux" -l "\EFI\almalinux \shimaa64.efi" -d " ${ disk_name2 } " -p " ${ disk_num2 } "
efibootmgr -c -L " MSVSphere" -l "\EFI\msvsphere \shimaa64.efi" -d " ${ disk_name2 } " -p " ${ disk_num2 } "
elif [ [ ${ arch } = = "x86_64" ] ] ; then
elif [ [ ${ arch } = = "x86_64" ] ] ; then
efibootmgr -c -L " AlmaLinux" -l "\EFI\almalinux \shimx64.efi" -d " ${ disk_name } " -p " ${ disk_num } "
efibootmgr -c -L " MSVSphere" -l "\EFI\msvsphere \shimx64.efi" -d " ${ disk_name } " -p " ${ disk_num } "
elif [ [ ${ arch } = = "aarch64" ] ] ; then
elif [ [ ${ arch } = = "aarch64" ] ] ; then
efibootmgr -c -L " AlmaLinux" -l "\EFI\almalinux \shimaa64.efi" -d " ${ disk_name } " -p " ${ disk_num } "
efibootmgr -c -L " MSVSphere" -l "\EFI\msvsphere \shimaa64.efi" -d " ${ disk_name } " -p " ${ disk_num } "
fi
fi
report_step_done "The new EFI boot record for AlmaLinux is added"
report_step_done "The new EFI boot record for MSVSphere is added"
save_status_of_stage "add_efi_boot_record"
save_status_of_stage "add_efi_boot_record"
}
}
@ -1036,16 +1033,16 @@ reinstall_secure_boot_packages() {
if [ " $( which grubby) " ] ; then #if this happens on a system with GRUB and related tools, rather than on RPi
if [ " $( which grubby) " ] ; then #if this happens on a system with GRUB and related tools, rather than on RPi
local kernel_package
local kernel_package
for pkg in $( rpm -qa | grep -E 'shim|fwupd|grub2' ) ; do
for pkg in $( rpm -qa | grep -E 'shim|fwupd|grub2' ) ; do
if [ [ " AlmaLinux " != " $( rpm -q --queryformat '%{vendor}' " $pkg " ) " ] ] ; then
if [ [ " MSVSphere " != " $( rpm -q --queryformat '%{vendor}' " $pkg " ) " ] ] ; then
yum reinstall " ${ pkg } " -y
yum reinstall " ${ pkg } " -y
fi
fi
done
done
kernel_package = " $( rpm -qf " $( grubby --default-kernel) " ) "
kernel_package = " $( rpm -qf " $( grubby --default-kernel) " ) "
if [ [ " AlmaLinux " != " $( rpm -q --queryformat '%{vendor}' " ${ kernel_package } " ) " ] ] ; then
if [ [ " MSVSphere " != " $( rpm -q --queryformat '%{vendor}' " ${ kernel_package } " ) " ] ] ; then
yum reinstall " ${ kernel_package } " -y
yum reinstall " ${ kernel_package } " -y
fi
fi
fi
fi
report_step_done "All Secure Boot related packages which were not released by AlmaLinux are reinstalled"
report_step_done "All Secure Boot related packages which were not released by MSVSphere are reinstalled"
save_status_of_stage "reinstall_secure_boot_packages"
save_status_of_stage "reinstall_secure_boot_packages"
}
}
@ -1099,7 +1096,7 @@ main() {
install_rpm_pubkey " ${ tmp_dir } " " ${ os_version } "
install_rpm_pubkey " ${ tmp_dir } " " ${ os_version } "
release_path = $( download_release_files " ${ tmp_dir } " " ${ release_url } " )
release_path = $( download_release_files " ${ tmp_dir } " " ${ release_url } " )
report_step_done 'Download almalinux -release package'
report_step_done 'Download msvsphere -release package'
if mount | grep -q fuse.lxcfs ||
if mount | grep -q fuse.lxcfs ||
env | grep -q 'container=lxc' ||
env | grep -q 'container=lxc' ||
awk '{print $1}' /proc/vz/veinfo 2>/dev/null ||
awk '{print $1}' /proc/vz/veinfo 2>/dev/null ||
@ -1111,7 +1108,7 @@ main() {
assert_compatible_os_version " ${ os_version } " " ${ release_path } "
assert_compatible_os_version " ${ os_version } " " ${ release_path } "
case " ${ os_type } " in
case " ${ os_type } " in
almalinux| centos| ol| rhel| rocky| virtuozzo)
almalinux| centos| msvsphere| ol| rhel| rocky| virtuozzo)
backup_issue
backup_issue
if [ [ " ${ os_type } " = = "rhel" ] ] ; then
if [ [ " ${ os_type } " = = "rhel" ] ] ; then
@ -1120,7 +1117,11 @@ main() {
case " ${ os_version } " in
case " ${ os_version } " in
8*)
8*)
migrate_from_centos " ${ release_path } "
repos_url = $( get_repos_file_url " ${ os_version } " " ${ arch } " )
repos_path = $( download_repos_files " ${ tmp_dir } " " ${ repos_url } " )
gpg_keys_url = $( get_gpg_keys_file_url " ${ os_version } " " ${ arch } " )
gpg_keys_path = $( download_gpg_keys_files " ${ tmp_dir } " " ${ gpg_keys_url } " )
migrate_from_centos " ${ release_path } " " ${ repos_path } " " ${ gpg_keys_path } "
; ;
; ;
9*)
9*)
repos_url = $( get_repos_file_url " ${ os_version } " " ${ arch } " )
repos_url = $( get_repos_file_url " ${ os_version } " " ${ arch } " )
@ -1152,7 +1153,7 @@ main() {
fi
fi
check_custom_kernel
check_custom_kernel
save_status_of_stage "completed"
save_status_of_stage "completed"
printf '\n\033[0;32mMigration to AlmaLinux is completed\033[0m\n'
printf '\n\033[0;32mMigration to MSVSphere is completed\033[0m\n'
}
}
if [ [ " ${ BASH_SOURCE [0] } " = = " ${ 0 } " ] ] ; then
if [ [ " ${ BASH_SOURCE [0] } " = = " ${ 0 } " ] ] ; then