Uploaded image for project: 'RHEL'
  1. RHEL
  2. RHEL-72200

Arm machine couldn't upgrade via Leapp from RHEL-8.10 to RHEL-9.6

Linking RHIVOS CVEs to...Migration: Automation ...Sync from "Extern...XMLWordPrintable

    • No
    • Important
    • rhel-upgrades
    • None
    • False
    • False
    • Hide

      None

      Show
      None
    • None
    • None
    • None
    • None
    • aarch64
    • None

      What were you trying to do that didn't work?

      When upgrading from RHEL-8.10 to RHEL-9.6 on aarch64 CPU machine, both leapp-upgrade-el8toel9-0.21.0-2 and leapp-upgrade-el8toel9-0.21.0-4 upgrade failed

      a. Using leapp-upgrade-el8toel9-0.21.0-2.el8_10.noarch.rpm from RHEL distro repo, leapp upgrade failed, the errors are `Upgrade RHEL 8.10 to RHEL 9.5 not possible for ARM machines.`
      b. Using  leapp-upgrade-el8toel9-0.21.0-2.el8_10.noarch.rpm from https://brew-task-repos.engineering.redhat.com/repos/official repo, Leapp upgrade success, but reboot with tool `rstrnt-reboot`, the boot system again still RHEL8.10. If we use `reboot` tools, that's no problem.

      What is the impact of this issue to you?

      Leapp in-place upgrade

      Please provide the package NVR for which the bug is seen:

      RHEL-8.10.0-updates-20241217.1 
      4.18.0-553.32.1.el8_10.aarch64

      How reproducible is this bug?:

      Always

      Steps to reproduce

      1. Install RHEL-8.10, efibootmgr show boot option is 0004(Red Hat Enterprise Linux)

      [root@ampere-mtsnow-04 ~]# uname -r
      4.18.0-553.32.1.el8_10.aarch64
      [root@ampere-mtsnow-04 ~]# cat /etc/redhat-release
      Red Hat Enterprise Linux release 8.10 (Ootpa)
      [root@ampere-mtsnow-04 ~]# efibootmgr
      BootCurrent: 0004
      Timeout: 5 seconds
      BootOrder: 0002,0003,0005,0006,0001,0004,0007,000A,0000,000B,0008
      Boot0000  CentOS Linux
      Boot0001* UEFI: Built-in EFI Shell
      Boot0002* UEFI: PXE IPv4 Intel(R) Network D8:5E:D3:E6:1F:70
      Boot0003* UEFI: PXE IPv4 Intel(R) Network D8:5E:D3:E6:1F:71
      Boot0004* Red Hat Enterprise Linux
      Boot0005* UEFI: PXE IPv4 Mellanox Network 94:6D:AE:C7:9F:D0
      Boot0006* UEFI: PXE IPv4 Mellanox Network 94:6D:AE:C7:9F:D1
      Boot0007  Leapp Upgrade
      Boot0008  Leapp Upgrade
      Boot000A  Leapp Upgrade
      Boot000B  Leapp Upgrade 

      2. Leapp upgrade from RHEL8.10 to RHEL9.6 with leapp-upgrade-el8toel9-0.21.0-4

      [root@ampere-mtsnow-04 ~]# sed -i 's/RedHatEnterpriseLinux8/RedHatEnterpriseLinux9/g' /etc/yum.repos.d/beaker-harness.repo [root@ampere-mtsnow-04 ~]# cat /etc/yum.repos.d/leapp.repo
      [leapp-upgrade]
      name=Repository for build of leapp upgrade
      enabled=1
      gpgcheck=0
      baseurl=https://brew-task-repos.engineering.redhat.com/repos/official/leapp-repository/0.21.0/4.el8_10/noarch/
      [leapp]
      name=Repository for build of leapp
      enabled=1
      gpgcheck=0
      baseurl=https://brew-task-repos.engineering.redhat.com/repos/official/leapp/0.18.0/2.el8_10/noarch/
      [root@ampere-mtsnow-04 ~]# yum install leapp-upgrade vdo -y [root@ampere-mtsnow-04 ~]# cat /etc/yum.repos.d/leapp_upgrade_repositories.repo
      [AppStream9]
      name=AppStream for RHEL9
      baseurl=http://download.devel.redhat.com/rhel-9/nightly/RHEL-9/latest-RHEL-9.6/compose/AppStream/$basearch/os/
      enabled=0
      gpgcheck=0
      [BaseOS9]
      name=BaseOS for RHEL9
      baseurl=http://download.devel.redhat.com/rhel-9/nightly/RHEL-9/latest-RHEL-9.6/compose/BaseOS/$basearch/os/
      enabled=0
      gpgcheck=0
      # CRB and Buildroot repos are required by some tests
      [CRB9]
      name=CRB for RHEL9
      baseurl=http://download.devel.redhat.com/rhel-9/nightly/RHEL-9/latest-RHEL-9.6/compose/CRB/$basearch/os/
      enabled=0
      gpgcheck=0
      [Buildroot9]
      name=Buildroot for RHEL9
      baseurl=http://download.devel.redhat.com/rhel-9/nightly/BUILDROOT-9/latest-BUILDROOT-9.6-RHEL-9/compose/Buildroot/$basearch/os/
      enabled=0
      gpgcheck=0
      [root@ampere-mtsnow-04 ~]# sed -i '/^\s*PermitRootLogin/i #keep PermitRootLogin yes' /etc/ssh/sshd_config
      [root@ampere-mtsnow-04 ~]# leapp answer --add --section remove_pam_pkcs11_module_check.confirm=True 
      [root@ampere-mtsnow-04 ~]#leapp upgrade --debug --no-rhsm --enablerepo AppStream9 --enablerepo BaseOS9 --enablerepo beaker-harness

      3. Leapp up Leapp could complete, but next boot option change to 0009(Leapp Upgrade), then use `rstrnt-reboot` to reboot

      [root@ampere-mtsnow-04 ~]# efibootmgr
      BootNext: 0009
      BootCurrent: 0004
      Timeout: 5 seconds
      BootOrder: 0009,0002,0003,0005,0006,0001,0004,0007,000A,0000,000B,0008
      Boot0000  CentOS Linux
      Boot0001* UEFI: Built-in EFI Shell
      Boot0002* UEFI: PXE IPv4 Intel(R) Network D8:5E:D3:E6:1F:70
      Boot0003* UEFI: PXE IPv4 Intel(R) Network D8:5E:D3:E6:1F:71
      Boot0004* Red Hat Enterprise Linux
      Boot0005* UEFI: PXE IPv4 Mellanox Network 94:6D:AE:C7:9F:D0
      Boot0006* UEFI: PXE IPv4 Mellanox Network 94:6D:AE:C7:9F:D1
      Boot0007  Leapp Upgrade
      Boot0008  Leapp Upgrade
      Boot0009* Leapp Upgrade
      Boot000A  Leapp Upgrade
      Boot000B  Leapp Upgrade
      [root@ampere-mtsnow-04 ~]# 
      [root@ampere-mtsnow-04 ~]# rstrnt-reboot

      4. The booted system again is RHEL8.10 instead of RHEL

      [root@ampere-mtsnow-04 ~]# cat /etc/redhat-release 
      Red Hat Enterprise Linux release 8.10 (Ootpa)
      [root@ampere-mtsnow-04 ~]# uname -r
      4.18.0-553.32.1.el8_10.aarch64
      [root@ampere-mtsnow-04 ~]# efibootmgr 
      BootCurrent: 0004
      Timeout: 5 seconds
      BootOrder: 0009,0004,0002,0003,0005,0006,0001,0007,000A,0000,000B,0008
      Boot0000  CentOS Linux
      Boot0001* UEFI: Built-in EFI Shell
      Boot0002* UEFI: PXE IPv4 Intel(R) Network D8:5E:D3:E6:1F:70
      Boot0003* UEFI: PXE IPv4 Intel(R) Network D8:5E:D3:E6:1F:71
      Boot0004* Red Hat Enterprise Linux
      Boot0005* UEFI: PXE IPv4 Mellanox Network 94:6D:AE:C7:9F:D0
      Boot0006* UEFI: PXE IPv4 Mellanox Network 94:6D:AE:C7:9F:D1
      Boot0007  Leapp Upgrade
      Boot0008  Leapp Upgrade
      Boot0009* Leapp Upgrade
      Boot000A  Leapp Upgrade
      Boot000B  Leapp Upgrade
      

      5. The same system could upgrade from RHEL9.6 to RHEL10.0, and Leapp upgrade, the next boot option is still 0004(This's different with the error upgrading), the following log is correct info when RHEL9.6 to RHEL10.0

      [root@ampere-mtsnow-04 ~]# cat /etc/redhat-release
      Red Hat Enterprise Linux release 9.6 Beta (Plow)[root@ampere-mtsnow-04 ~]# efibootmgr
      BootNext: 0004
      BootCurrent: 0004
      Timeout: 5 seconds
      BootOrder: 0002,0003,0005,0006,0001,0004,0007,000A,0000,000B,0008
      Boot0000  CentOS Linux
      Boot0001* UEFI: Built-in EFI Shell
      Boot0002* UEFI: PXE IPv4 Intel(R) Network D8:5E:D3:E6:1F:70
      Boot0003* UEFI: PXE IPv4 Intel(R) Network D8:5E:D3:E6:1F:71
      Boot0004* Red Hat Enterprise Linux
      Boot0005* UEFI: PXE IPv4 Mellanox Network 94:6D:AE:C7:9F:D0
      Boot0006* UEFI: PXE IPv4 Mellanox Network 94:6D:AE:C7:9F:D1
      Boot0007  Leapp Upgrade
      Boot0008  Leapp Upgrade
      Boot000A  Leapp Upgrade
      Boot000B  Leapp Upgrade
      

      Expected results

      1. The same system could upgrade from RHEL9.6 to RHEL10.0, and Leapp upgrade, the next boot option is still 0004(This's different with the error upgrading), the following log is correct info when RHEL9.6 to RHEL10.0
      [root@ampere-mtsnow-04 ~]# cat /etc/redhat-release 
      Red Hat Enterprise Linux release 9.6 Beta (Plow)
      [root@ampere-mtsnow-04 ~]# efibootmgr 
      BootNext: 0004 
      BootCurrent: 0004 
      Timeout: 5 seconds 
      BootOrder: 0002,0003,0005,0006,0001,0004,0007,000A,0000,000B,0008 Boot
      0000  CentOS Linux Boot
      0001* UEFI: Built-in EFI Shell Boot
      0002* UEFI: PXE IPv4 Intel(R) Network D8:5E:D3:E6:1F:70 Boot
      0003* UEFI: PXE IPv4 Intel(R) Network D8:5E:D3:E6:1F:71 Boot
      0004* Red Hat Enterprise Linux Boot
      0005* UEFI: PXE IPv4 Mellanox Network 94:6D:AE:C7:9F:D0 Boot
      0006* UEFI: PXE IPv4 Mellanox Network 94:6D:AE:C7:9F:D1 Boot
      0007  Leapp Upgrade Boot
      0008  Leapp Upgrade Boot
      000A  Leapp Upgrade Boot
      000B  Leapp Upgrade 
      1. scripts rstrnt-reboot and rstrnt-prepare-reboot 
      [root@ampere-mtsnow-04 ~]# cat /usr/bin/rstrnt-reboot
      #!/bin/bash
      #
      # This program is free software; you can redistribute it and/or modify
      # it under the terms of the GNU General Public License as published by
      # the Free Software Foundation; either version 2 of the License, or
      # (at your option) any later version.# Prevent SIGTERM from interrupting this process causing it to return
      # to caller.  Expectation is SIGKILL will kill this process but
      # should then be out of harm's way.
      trap "" SIGTERMPATH=/sbin:/usr/sbin:$PATHNEXTBOOT_VALID_TIME=0 /usr/bin/rstrnt-prepare-reboot
      shutdown -r now# Wait for the shutdown to kill us.  Sleep to avoid returning
      # control back to the test harness. ref: SIGTERM comments above
      while (true); do
          sleep 666
      done
      [root@ampere-mtsnow-04 ~]# cat /usr/bin/rstrnt-prepare-reboot
      #!/bin/bash
      #
      # This program is free software; you can redistribute it and/or modify
      # it under the terms of the GNU General Public License as published by
      # the Free Software Foundation; either version 2 of the License, or
      # (at your option) any later version.PATH=/sbin:/usr/sbin:$PATHcreate_nextboot_timer() {
              # For future reference, it's possible to use `at` if supported everywhere
              nohup bash -c "
                      logger -s 'NextBoot value is valid for the next $NEXTBOOT_VALID_TIME seconds';
                      sleep $NEXTBOOT_VALID_TIME;
                      logger -s 'Purging NextBoot value...'
                      efibootmgr -N && logger -s 'NextBoot value is no longer valid'
              " 2>&1 | /usr/bin/tee /dev/console &
      }if efibootmgr &>/dev/null ; then
          # if not defined
          if [ -z "$NEXTBOOT_VALID_TIME" ] ; then
                  NEXTBOOT_VALID_TIME=180
          # elif not a valid number
          elif [[ $NEXTBOOT_VALID_TIME =~ [^0-9] ]]; then
                  logger -s "NEXTBOOT_VALID_TIME not numeric. Changing to default of 180"
                  NEXTBOOT_VALID_TIME=180
          fi
          os_boot_entry=$(efibootmgr | awk '/BootCurrent/ { print $2 }')
          # fall back to /root/EFI_BOOT_ENTRY.TXT if it exists and BootCurrent is not available
          if [[ -z "$os_boot_entry" && -f /root/EFI_BOOT_ENTRY.TXT ]] ; then
              os_boot_entry=$(</root/EFI_BOOT_ENTRY.TXT)
          fi
          if [[ -n "$os_boot_entry" ]] ; then
              logger -s "efibootmgr -n $os_boot_entry"
              efibootmgr -n $os_boot_entry
              if [[ $NEXTBOOT_VALID_TIME > 0 ]]; then
                  create_nextboot_timer
                  # Adjust watchdog if running inside of test case
                  if [[ -n $RSTRNT_RECIPE_URL && $RSTRNT_MAXTIME ]] ; then
                      rstrnt-adjust-watchdog $(($RSTRNT_MAXTIME + $NEXTBOOT_VALID_TIME))
                  fi
              else
                  logger -s "NEXTBOOT_VALID_TIME is zero. BootNext setting will persist."
                  sleep 5
              fi
          else
              logger -s "Could not determine value for BootNext!"
          fi
      fi
      
      1.  

              leapp-notifications leapp-notifications
              rh-ee-xudu Xu Du
              leapp-notifications leapp-notifications
              RHEL Upgrades QE Team RHEL Upgrades QE Team
              Miriam Portman Miriam Portman
              Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

                Created:
                Updated:
                Resolved: