From ef6b1b334ad7a8c573a06d8bc4a6b38e02d9695f Mon Sep 17 00:00:00 2001 From: wangzhe Date: Thu, 9 Nov 2023 17:40:23 +0800 Subject: [PATCH] migration tool from alinux2 to alinux3.2304 Signed-off-by: wangzhe --- etc/leapp/transaction/to_install | 14 ++++++ etc/leapp/transaction/to_keep | 3 +- .../libraries/addupgradebootentry.py | 2 +- .../el7toel8/actors/checkblscfg/actor.py | 41 ++++++++++++++++++ .../dracut/85sys-upgrade-redhat/do-upgrade.sh | 10 +++-- .../libraries/modscan.py | 4 +- .../files/generate-initram.sh | 5 +-- .../el7toel8/actors/systemcleanup/actor.py | 27 ++++++++++++ .../actors/updatebootmenuentry/actor.py | 28 ++++++++++++ .../el7toel8/files/bundled-rpms/.gitkeep | 0 .../kernel-workaround-0.1-1.el8.noarch.rpm | Bin 2252 -> 0 bytes .../el7toel8/libraries/dnfplugin.py | 7 ++- 12 files changed, 129 insertions(+), 12 deletions(-) create mode 100644 repos/system_upgrade/el7toel8/actors/checkblscfg/actor.py create mode 100644 repos/system_upgrade/el7toel8/actors/systemcleanup/actor.py create mode 100644 repos/system_upgrade/el7toel8/actors/updatebootmenuentry/actor.py create mode 100644 repos/system_upgrade/el7toel8/files/bundled-rpms/.gitkeep delete mode 100644 repos/system_upgrade/el7toel8/files/bundled-rpms/kernel-workaround-0.1-1.el8.noarch.rpm diff --git a/etc/leapp/transaction/to_install b/etc/leapp/transaction/to_install index e5fcec58..7c698461 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 bebe417a..a229e7f3 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 4270bd8f..ed299218 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 00000000..1a6a3159 --- /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 2ae9f7eb..c99430c9 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 1bce7532..239857d6 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 3e904f62..2d56f4ab 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 00000000..81974d7a --- /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 00000000..37eb2e29 --- /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 00000000..e69de29b 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 GIT binary patch literal 0 HcmV?d00001 literal 2252 zcma)-Yitx%6vyxEuJUZGpz;VIW3&WJXS(7Fb0iC;vKO0j5MibuIskN*Et1a{xuVF!+l2~>x^ z&0vjSv%p%ws-fd5(EGu#Kx}vnGy+yj{2M67$G{*yd=(V^O<;m*#52icj3?7dCZ)>h zxROaKnr37bIUQ4zvYM6^O;02s7Rs#mhkrf#O3TsZf4;Ufw5UI;jX(;_RUXsiIg-!UH70r>$?jQ^b&*BJRPVq8ZY!{5XY zgF<^j1jY7?Kp|du92E8-g6oX_u8KyMkbf8PQsPgESAs%*;UXyJtFP1xW5fz5=ARnx z>I#RJk-rrb+J`U>+phzK{zKS5avL%2XQUk%@`Y$WBd8eP2a4nGA%B(_>(TFmV!j>Z z4~U;7-b<{3;&^C(BbWy`Ttj|N`~A8b;Q^Y^dH7~VE;wp4&nh&m``|WzJuhS zn%@vH&I8+*K=FIp1zOG6!k0iXe|dh*?4J9G!F|Lk_tDekyGq*_q7&8tCF zcM8lh?cxx#9o5tGm3DjJYsGv#sl{|zPAK(;9@pctq8geZ>-CC~HZ&z6Co(FR<6OpT zNJ+}NDk~{PiEEkqR6?syr7GDN^BgCrJnotI%sm|SJw58V1!x3!)nr}K_v(DjwCij> zC{a7NKldL?hYLRUPJ=9#sjX~w3a-a}pJ!W5i*Ha1++W4Whczu`j{Ct(U6;Dsa@2CL z-=+@mE{_}L&~y`WxBK0tRV*2eMP(_@g3Ai3Oo&@uAY{(?Js;3qjeBYI{qG53Gm?hpI zLpL7R9WN{8bY1cX%|Op{Ulc{DkOpTVDB8Rs$8GMJI@4X#VM8UBpra{Oj;vHZu2Rm% zFO&)|xWVoz0R5ux#OEKZUGZwioD(~j+!#3pRq*Xr{&AC&w+_O4^+cxB-3#aD$A9LJ zgxI6P0;qiK`2N}-gfQ#g!4_9th-itM#d*&kKDApiH$C^_M@QN^J5FBhR~BzMwk!Gi z(%wIA4mvfToXvlKV-H_3n)rG6jft~HmHo`gFKhPCQqFr#2d&Pn&CxU0)?XPt-Tlq+ zzUsHf89P__aQNnX!tDpooo`&fuy60j^CvERX8g1v8#}aSwC9mVCcGf*gB$YncjMPb OFI`*)uQ1A<-hTmqQ@Sw# diff --git a/repos/system_upgrade/el7toel8/libraries/dnfplugin.py b/repos/system_upgrade/el7toel8/libraries/dnfplugin.py index 467d9ea7..7e7b3aef 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=()): -- Gitee