diff --git a/etc/leapp/transaction/to_install b/etc/leapp/transaction/to_install index e5fcec581f7bdf3b3c9e8cd3c1d76095d002d74e..7c698461c31cdf3ff0488b960cc5eed3672dde14 100644 --- a/etc/leapp/transaction/to_install +++ b/etc/leapp/transaction/to_install @@ -1,2 +1,16 @@ ### List of packages (each on new line) to be added to the upgrade transaction ### Signed packages which are already installed will be skipped +alinux-repos +alinux-release +alinux-gpg-keys +lvm2 +kmod +grub2-common +grub2-efi-x64 +grub2-pc +grub2-pc-modules +grub2-tools +grub2-tools-minimal +grubby +python3-psutil +kernel diff --git a/etc/leapp/transaction/to_keep b/etc/leapp/transaction/to_keep index bebe417a1bc94e0b57cb9a7c7ddd469d7535c601..a229e7f3b7b23dc4a16398cd70b2f67d4f73827b 100644 --- a/etc/leapp/transaction/to_keep +++ b/etc/leapp/transaction/to_keep @@ -1,9 +1,10 @@ ### List of packages (each on new line) to be kept in the upgrade transaction - leapp +leapp-deps python2-leapp python3-leapp leapp-repository +leapp-repository-deps snactor python-pyudev python-enum34 diff --git a/repos/system_upgrade/el7toel8/actors/addupgradebootentry/libraries/addupgradebootentry.py b/repos/system_upgrade/el7toel8/actors/addupgradebootentry/libraries/addupgradebootentry.py index 4270bd8f96f9f3b84514e351a947add1e06273c8..ed299218b2ac616934c9e9fab034f5a052dd3dfb 100644 --- a/repos/system_upgrade/el7toel8/actors/addupgradebootentry/libraries/addupgradebootentry.py +++ b/repos/system_upgrade/el7toel8/actors/addupgradebootentry/libraries/addupgradebootentry.py @@ -20,7 +20,7 @@ def add_boot_entry(configs=None): '--title', 'Anolis-Upgrade-Initramfs', '--copy-default', '--make-default', - '--args', '{DEBUG} enforcing=0 rd.plymouth=0 plymouth.enable=0'.format(DEBUG=debug) + '--args', '{DEBUG} enforcing=0 systemd.unified_cgroup_hierarchy=0 rd.systemd.unit=upgrade.target rd.plymouth=0 plymouth.enable=0'.format(DEBUG=debug) ] if configs: for config in configs: diff --git a/repos/system_upgrade/el7toel8/actors/checkblscfg/actor.py b/repos/system_upgrade/el7toel8/actors/checkblscfg/actor.py new file mode 100644 index 0000000000000000000000000000000000000000..1a6a3159713ae04bddbf6c3256830efb0d8a7516 --- /dev/null +++ b/repos/system_upgrade/el7toel8/actors/checkblscfg/actor.py @@ -0,0 +1,41 @@ +import os + +from leapp.actors import Actor +from leapp.tags import ChecksPhaseTag, IPUWorkflowTag +from leapp.libraries.stdlib import api + +def enabl_blscfg(): + with open('/etc/default/grub', 'r') as file: + lines = file.readlines() + + found_blscfg = False + + for i in range(len(lines)): + if lines[i].startswith('GRUB_ENABLE_BLSCFG='): + found_blscfg = True + if lines[i].strip() != 'GRUB_ENABLE_BLSCFG=true': + lines[i] = 'GRUB_ENABLE_BLSCFG=true\n' + break + + if not found_blscfg: + lines.append('GRUB_ENABLE_BLSCFG=true\n') + + with open('/etc/default/grub', 'w') as file: + file.writelines(lines) + + +class CheckBLSCFG(Actor): + """ + Check if GRUB_ENABLE_BLSCFG is true in /etc/default/grub file + """ + + name = 'check_bls_grub' + consumes = () + produces = () + tags = (ChecksPhaseTag, IPUWorkflowTag) + + def process(self): + enabl_blscfg() + api.current_logger().info('set GRUB_ENABLE_BLSCFG=true') + + \ No newline at end of file diff --git a/repos/system_upgrade/el7toel8/actors/commonleappdracutmodules/files/dracut/85sys-upgrade-redhat/do-upgrade.sh b/repos/system_upgrade/el7toel8/actors/commonleappdracutmodules/files/dracut/85sys-upgrade-redhat/do-upgrade.sh index 2ae9f7ebc8929fdc862a413df7c34b96c59649ce..c99430c9808a9317330ea28c78c9cc1043b5bc37 100755 --- a/repos/system_upgrade/el7toel8/actors/commonleappdracutmodules/files/dracut/85sys-upgrade-redhat/do-upgrade.sh +++ b/repos/system_upgrade/el7toel8/actors/commonleappdracutmodules/files/dracut/85sys-upgrade-redhat/do-upgrade.sh @@ -13,7 +13,7 @@ export LEAPP3_BIN=$LEAPPHOME/leapp3 export NEWROOT=${NEWROOT:-"/sysroot"} -NSPAWN_OPTS="--capability=all --bind=/sys --bind=/dev --bind=/dev/pts --bind=/run/systemd --bind=/proc" +NSPAWN_OPTS="--capability=all --bind=/sys --bind=/dev/sda --bind=/dev/sda1 --bind=/dev/pts --bind=/run/systemd --bind=/proc" [ -d /dev/mapper ] && NSPAWN_OPTS="$NSPAWN_OPTS --bind=/dev/mapper" export NSPAWN_OPTS="$NSPAWN_OPTS --bind=/run/udev --keep-unit --register=no --timezone=off --resolv-conf=off" @@ -132,15 +132,16 @@ declare mount_id parent_id major_minor root mount_point options rest while read -r mount_id parent_id major_minor root mount_point options \ rest ; do if [ "$mount_point" = "$NEWROOT" ]; then - old_opts="$options" + old_opts="rw" break fi done < /proc/self/mountinfo if [ -z "$old_opts" ]; then - old_opts="defaults,ro" + old_opts="defaults,rw" fi # enable read/write $NEWROOT +systemctl daemon-reload mount -o "remount,rw" $NEWROOT ##### do the upgrade ####### @@ -162,6 +163,7 @@ getarg 'rd.break=leapp-logs' && emergency_shell -n upgrade "Break after LEAPP sa # NOTE: flush the cached content to disk to ensure everything is written sync -mount -o "remount,$old_opts" $NEWROOT +systemctl daemon-reload +mount -o "remount,rw" $NEWROOT exit $result diff --git a/repos/system_upgrade/el7toel8/actors/commonleappdracutmodules/libraries/modscan.py b/repos/system_upgrade/el7toel8/actors/commonleappdracutmodules/libraries/modscan.py index 1bce753263cdf84e3a75056c9192168eb2d4eb92..239857d6de32edfbfaa5f166fa8d1d830f627a65 100644 --- a/repos/system_upgrade/el7toel8/actors/commonleappdracutmodules/libraries/modscan.py +++ b/repos/system_upgrade/el7toel8/actors/commonleappdracutmodules/libraries/modscan.py @@ -19,11 +19,11 @@ _REQUIRED_PACKAGES = [ 'iscsi-initiator-utils', 'kbd', 'kernel', - 'kernel-core', - 'kernel-modules', 'keyutils', 'lldpad', 'lvm2', + 'policycoreutils', + 'grubby', 'mdadm', 'nfs-utils', 'openssh-clients', diff --git a/repos/system_upgrade/el7toel8/actors/initramdiskgenerator/files/generate-initram.sh b/repos/system_upgrade/el7toel8/actors/initramdiskgenerator/files/generate-initram.sh index 3e904f62859f5761ad488ab0779c306e7eea465f..2d56f4ab7461d4476dbbc3480fae3f9a58684d4c 100755 --- a/repos/system_upgrade/el7toel8/actors/initramdiskgenerator/files/generate-initram.sh +++ b/repos/system_upgrade/el7toel8/actors/initramdiskgenerator/files/generate-initram.sh @@ -7,7 +7,7 @@ stage() { } get_kernel_version() { - rpm -qa | grep kernel-modules | cut -d- -f3- | sort | tail -n 1 + rpm -qa kernel --qf '%{VERSION}-%{RELEASE}.%{ARCH}\n' | sort --version-sort | tail --lines=1 } dracut_install_modules() @@ -64,7 +64,7 @@ build() { DRACUT_MODULES_ADD=$(echo "--add $LEAPP_ADD_DRACUT_MODULES" | sed 's/,/ --add /g') fi - DRACUT_INSTALL="systemd-nspawn" + DRACUT_INSTALL="systemd-nspawn sysctl grubby" if [[ -n "$LEAPP_DRACUT_INSTALL_FILES" ]]; then DRACUT_INSTALL="$DRACUT_INSTALL $LEAPP_DRACUT_INSTALL_FILES" fi @@ -76,7 +76,6 @@ build() { \dracut \ -vvvv \ --force \ - --conf $DRACUT_CONF \ --confdir $DRACUT_CONF_DIR \ --install "$DRACUT_INSTALL" \ $DRACUT_MODULES_ADD \ diff --git a/repos/system_upgrade/el7toel8/actors/systemcleanup/actor.py b/repos/system_upgrade/el7toel8/actors/systemcleanup/actor.py new file mode 100644 index 0000000000000000000000000000000000000000..81974d7a8599e0c2c213ed787ffb9190edf5c03b --- /dev/null +++ b/repos/system_upgrade/el7toel8/actors/systemcleanup/actor.py @@ -0,0 +1,27 @@ +import os +import subprocess + +from leapp.actors import Actor +from leapp.tags import ApplicationsPhaseTag, IPUWorkflowTag +from leapp.libraries.stdlib import api + +class SystemCleanup(Actor): + """ + system cleanup + """ + + name = 'system_cleanup' + consumes = () + produces = () + tags = (ApplicationsPhaseTag, IPUWorkflowTag) + + def process(self): + subprocess.run("mv -f /etc/os-release.rpmnew /etc/os-release ", shell=True) + subprocess.run("rm -rf /etc/rpm/macros.perl", shell=True) + librpm = subprocess.check_output('ls /lib64/librpm*.so.8* /lib64/librpm*.so.3 ', shell=True).decode().split("\n") + for file in librpm: + if file: + subprocess.call(["rm", "-rf", file]) + api.current_logger().info('remove rpm libs') + + \ No newline at end of file diff --git a/repos/system_upgrade/el7toel8/actors/updatebootmenuentry/actor.py b/repos/system_upgrade/el7toel8/actors/updatebootmenuentry/actor.py new file mode 100644 index 0000000000000000000000000000000000000000..37eb2e29d58c7762fbf6e25cb8a3d813e8e12e0b --- /dev/null +++ b/repos/system_upgrade/el7toel8/actors/updatebootmenuentry/actor.py @@ -0,0 +1,28 @@ +import os +import subprocess + +from leapp.actors import Actor +from leapp.tags import FirstBootPhaseTag, IPUWorkflowTag +from leapp.libraries.stdlib import api + +class UpdateBootMenuentry(Actor): + """ + update boot menuentry + """ + + name = 'update_boot_menuentry' + consumes = () + produces = () + tags = (FirstBootPhaseTag, IPUWorkflowTag) + + def process(self): + api.current_logger().info('update boot menuentry') + subprocess.run("dnf install yum lvm2 grub2-pc -y --nogpgcheck ", shell=True) + + subprocess.run("rm -rf /boot/grub2/i386-pc/* ", shell=True) + subprocess.run("/usr/sbin/grub2-install /dev/sda ", shell=True) + subprocess.run("/usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg ", shell=True) + subprocess.run("/bin/kernel-install add 5.10.134-009.4.ali5000.alnx3.x86_64 /lib/modules/5.10.134-009.4.ali5000.alnx3.x86_64/vmlinuz ", shell=True) + + subprocess.run("reboot ", shell=True) + diff --git a/repos/system_upgrade/el7toel8/files/bundled-rpms/.gitkeep b/repos/system_upgrade/el7toel8/files/bundled-rpms/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/repos/system_upgrade/el7toel8/files/bundled-rpms/kernel-workaround-0.1-1.el8.noarch.rpm b/repos/system_upgrade/el7toel8/files/bundled-rpms/kernel-workaround-0.1-1.el8.noarch.rpm deleted file mode 100644 index ac0b18c8bff6d35e070bffc072fd2457d0b52f93..0000000000000000000000000000000000000000 Binary files a/repos/system_upgrade/el7toel8/files/bundled-rpms/kernel-workaround-0.1-1.el8.noarch.rpm and /dev/null differ diff --git a/repos/system_upgrade/el7toel8/libraries/dnfplugin.py b/repos/system_upgrade/el7toel8/libraries/dnfplugin.py index 467d9ea7290e7983c521b091949cbda719a57996..7e7b3aef4e9e683218be9d6fa65a4a664dc2dd21 100644 --- a/repos/system_upgrade/el7toel8/libraries/dnfplugin.py +++ b/repos/system_upgrade/el7toel8/libraries/dnfplugin.py @@ -9,7 +9,7 @@ from leapp.libraries.common import guards, mounting, overlaygen, rhsm, utils from leapp.libraries.stdlib import CalledProcessError, api, config DNF_PLUGIN_NAME = 'rhel_upgrade.py' -DNF_PLUGIN_PATH = os.path.join('/lib/python3.6/site-packages/dnf-plugins', DNF_PLUGIN_NAME) +DNF_PLUGIN_PATH = os.path.join('/lib/python3.10/site-packages/dnf-plugins', DNF_PLUGIN_NAME) DNF_PLUGIN_DATA_NAME = 'dnf-plugin-data.txt' DNF_PLUGIN_DATA_PATH = os.path.join('/var/lib/leapp', DNF_PLUGIN_DATA_NAME) DNF_PLUGIN_DATA_LOG_PATH = os.path.join('/var/log/leapp', DNF_PLUGIN_DATA_NAME) @@ -161,6 +161,11 @@ def _transaction(context, stage, target_repoids, tasks, plugin_info, test=False, if stage == 'check': backup_debug_data(context=context) + if stage == 'check': + context.call( + cmd=['rpmdb', '--rebuilddb'], + callback_raw=utils.logging_handler + ) @contextlib.contextmanager def _prepare_transaction(used_repos, target_userspace_info, binds=()):