更新时间:2025-11-07 GMT+08:00
分享

OS版本升级兼容性问题

当您选择RedHat 7.9 -> 8.x路径进行OS版本升级时,已识别的兼容性问题如表1所示,本章节针对表内各类兼容问题,提供了建议修复方案,帮助您快速恢复设备正常使用,降低升级对系统运行的影响。

表1 OS版本升级兼容性问题汇总

组件

兼容性问题

兼容性问题类别

具体说明

检查步骤

修复建议

vsftpd

(FTP服务器软件)

RHEL-8中不再支持tcp_wrappers配置(一种基于TCP层的简易防火墙软件)。

配置项unsupport

Red Hat Enterprise Linux (RHEL) 8不再支持tcp_wrappers配置,因此要移除相关的配置项,减少系统组件冗余。检测相关配置,可用firewalld替代。

在RHEL 8中检查vsftpd配置是否支持,特别是检查配置文件中没有设置“tcp_wrappers=YES”,并且vsftpd相关的配置在tcp_wrappers的配置文件中没有同时存在。您可以按照以下步骤进行:

  1. 检查vsftpd配置文件:

    打开vsftpd的主要配置文件 “/etc/vsftpd/vsftpd.conf”,查找是否有 “tcp_wrappers=YES”的设置。

    执行以下命令,如果输出为空,则说明没有设置 “tcp_wrappers=YES”。

    bash:

    grep -i "tcp_wrappers" /etc/vsftpd/vsftpd.conf
  1. 检查tcp_wrappers配置文件:

    tcp_wrappers的配置文件通常位于 “/etc/hosts.deny”和 “/etc/hosts.allow” 中。您需要确认这些文件中没有包含针对vsftpd的规则。

    执行以下命令,如果这两个命令都没有输出,说明vsftpd相关的配置没有出现在tcp_wrappers的配置文件中。

    bash:

    grep -i "vsftpd" /etc/hosts.deny
    grep -i "vsftpd" /etc/hosts.allow
  2. 综合判断:

    根据上述两个步骤的结果,如果vsftpd配置文件中没有 `tcp_wrappers=YES` 设置,并且tcp_wrappers的配置文件中也没有针对vsftpd的规则,则可以认为vsftpd的配置是符合要求的。

通过以上步骤,您可以确保vsftpd的配置不会因为tcp_wrappers的存在而产生冲突或问题。

请参考官方文档进行修复:Replacing TCP Wrappers in RHEL 8 and 9

openssh

(SSH登录)

  • 配置默认值变化
  • 配置项数值废弃
  • 配置默认值变化
  • 配置项数值废弃

Ciphers和Mac配置中的一些安全算法过期,需要查询关键词,删除废弃的安全算法。

  • ciphers用于指定 SSH 会话中实际传输数据的加密方式。
  • Mac(Message Authentication Code,消息认证码)用于验证 SSH 传输数据的完整性和真实性,确保数据在传输过程中未被篡改。

配置文件过滤ciphers和Mac关键词,查询是否存在废弃的安全算法。

执行以下命令进入配置文件:

vi /etc/ssh/sshd_config

删除如下废弃的安全算法:

removed_ciphers = [
        "blowfish-cbc",
        "cast128-cbc",
        "arcfour",
        "arcfour128",
        "arcfour256",
    ]
removed_macs = [
        "hmac-ripemd160",
    ]

openssh

(SSH登录)

配置项数值废弃

配置项数值废弃

ShowPatchLevel是SSH服务器(sshd)的一个配置选项,用于指定在身份验证字符串中是否显示二进制文件的补丁级别。这个选项仅适用于SSH协议版本1,并且默认情况下是关闭的(即不显示补丁级别)。

ShowPatchLevel的作用是开启后向客户端显示sshd的补丁级别信息。在RHEL8中,SSHD默认完全禁用SSH v1协议,仅支持V2,ShowPatchLevel这个配置在v2中毫无作用。SSH v1被认为是不安全的。如果您需要查看特定版本的SSH服务器的补丁级别信息,可能需要查阅该软件的编译时配置或相关文档,而不是依赖于这个已经过时的选项。

删除ShowPatchLevel相关的配置文件。

执行以下命令,查询是否存在ShowPatchLevel:

bash:

grep "ShowPatchLevel" /etc/ssh/sshd_config

执行以下命令,删除ShowPatchLevel参数:bash:

sed -i /^\\s*ShowPatchLevel.*$/Id

openssh

(SSH登录)

配置项数值PermitRootLogin必须设置为YES

配置默认值变化

PermitRootLogin用于控制是否允许 root 用户直接通过 SSH 登录,当从 RHEL 7 升级到 RHEL 8 时,若沿用旧的 sshd_config 配置(如 PermitRootLogin without-password),可能导致 root 用户无法通过 SSH 登录,此时需要将其修改为 PermitRootLogin yes 才能保持兼容性(允许 root 登录)。

执行以下命令,如果输出为空,说明没有“PermitRootLogin”相关语句。

bash:

grep "PermitRootLogin" /etc/ssh/sshd_config

执行以下命令:

bash:

sed -i "s#^PermitRootLogin.*#PermitRootLogin yes#g" /etc/ssh/sshd_config

Bind

(DNS服务器软件)

  • dnssec-lookaside不再支持,其依赖dlv.isc.org停止服务,功能失效
  • listen-on-v6默认值变化
  • 配置项默认值change
  • 配置项unsupport

1. dnssec-lookaside:这个选项用于指定DNSSEC验证时使用的DLV(Delegation Signer)服务器。随着DNSSEC技术的发展,BIND默认不再支持通过DLV进行签名验证,因此`dnssec-lookaside`语句可能不再被接受。升级到RHEL 8后,Bind会忽略该配置(无报错,配置失效);若配置了自定义 lookaside 区域,可能导致无效查询,影响 DNS 响应效率。如果您需要使用DNSSEC功能,建议检查最新的BIND文档来了解如何正确配置DNSSEC。

2. listen-on-v6:这是BIND配置文件中用来指定监听IPv6地址的选项。如果您的配置文件中没有明确设置`listen-on-v6`,BIND会根据其默认行为来决定是否监听IPv6连接。通常情况下,默认行为是监听所有可用的网络接口,包括IPv6接口。这意味着即使您没有显式地在配置文件中设置`listen-on-v6`,BIND也可能已经在监听IPv6请求了。

RHEL 7默认关闭,RHEL 8默认开启。RHEL 8即使没有配置listen-on-v6,也会监听所有可用的ipv6接口。升级以后可能与预期冲突,如果在RHEL 7是明确关闭了(如listen-on-v6 { none; };) 升级以后可能因配置改变或者优先级变化导致失效。建议修复方式是显示配置,确保与预期一致。

  1. 执行以下命令,如果输出为空,说明没有“dnssec-lookaside”相关语句。
    bash:
    grep "dnssec-lookaside" /etc/named.conf
  1. 执行以下命令,如果输出为空,说明没有“listen-on-v6e”相关语句。
    bash:
    grep "listen-on-v6" /etc/named.conf

删除dnssec-lookaside,如果仍然需要该功能,参考官方文档去修订;

根据期望用法去显示配置开关或者不配置listen-on-v6。

pam_pkcs11.so

pam_krb5.so

so库不再支持

so库不再支持

  1. “pam_pkcs11.so”是一个PAM(Pluggable Authentication Modules,可插拔认证模块)模块,它允许系统利用PKCS#11兼容的智能卡或其他硬件令牌进行用户认证。PKCS#11是一种标准的应用程序编程接口(API),用于与各种加密设备交互,包括智能卡、HSM(硬件安全模块)等。RHEL 7中pam_pkcs11.so的依赖是 pkcs11-helper (版本旧,例如1.11或更早)。RHEL 8升级到1.25+,部分旧的API被移除,导致旧库编译的驱动无法适配。RHEL 7中的pam_pkcs11支持旧参数, RHEL 8中部分旧参数被废弃或者重命名。
  2. pam_krb5.so 是一个PAM模块,它允许系统利用 Kerberos 协议进行用户认证。Kerberos 是一种网络身份认证协议,通过密钥加密技术为客户端和服务器之间提供安全的身份验证,适用于分布式网络环境中多个服务的统一身份验证(如域内登录、网络服务访问等)。旧版 pam_krb5.so 存在对 Kerberos 5 协议旧特性(如 DES 加密类型)的支持,而 RHEL 8 已禁用这些不安全特性。

执行以下两条命令,查询对应的so库配置:

bash:

grep "pam_pkcs11.so" /etc/pam.d/*
grep "pam_krb5.so" /etc/pam.d/*

移除或者注释不支持的so库配置。

更多请参考官方文档

pam_tally2.so

so库不再支持

so库不再支持

pam_tally2.so 是一个 PAM(Pluggable Authentication Modules,可插拔认证模块)模块,它主要用于对用户的登录失败次数进行统计和限制。该模块可以跟踪用户连续登录失败的次数,当达到预设阈值时,会临时锁定用户账户,防止暴力破解或恶意登录尝试,增强系统的安全性(适用于本地登录、SSH 远程登录等多种认证场景)。

在RHEL 8中,该模块被pam_faillock.so 取代,pam_tally2.so 不再默认安装且官方不再维护。若升级后仍在 PAM 配置文件(如 /etc/pam.d/sshd、/etc/pam.d/system-auth)中引用 pam_tally2.so,会导致模块找不到(module not found),进而引发认证流程失败。

执行以下命令,查询so库配置:

bash:

grep "pam_tally2.so" /etc/pam.d/*

移除或者注释不支持的so库配置。

Firewalld

(防火墙软件)

防火墙规则大量变动,多项用法不再支持

配置项大change

Firewalld 对防火墙规则的支持范围进行了精简,尤其在 Ebtables 类型 和 IpSetType 上明确了仅支持的子集,不符合的类型会导致规则失效或防火墙启动失败。

排除法:

  • 仅支持Ebtables类型: filter和nat。
  • 仅支持IpSetType: hash:ip、hash:mac和hash:net。

需检查所有防火墙规则和配置文件,将不符合的类型替换为支持的类型,删除不支持的用法(按照对应版本文档说明重新修正,RHEL8防火墙配置链接)。

Btrfs

(新型文件系统)

Btrfs组件在8中被弃用

组件废弃

Btrfs是一款设计用于高端存储需求的现代文件系统,支持快照、 RAID、动态卷管理等高级功能。在RHEL7中作为可选组件。

RHEL8中弃用btrfs,升级时不再提供btrfs作为可选文件系统,无法在系统安装时将分区格式化为btrfs。官方仓库中移除了btrfs的核心工具包。

可以参考官方文档进行检查修复。

  • 如果存在Btrfs格式挂载的文件系统,直接升级无法保证Btrfs分区数据完整性。建议将Btrfs分区数据迁移到RHEL8支持的文件系统(XFS、Ext4)。
  • 如果没有btrfs挂载的文件系统,但是btrfs模块正在被使用,那么用 modprobe -rv btrfs 命令移除 Btrfs 模块
  1. 如果直接升级无法保证Btrfs分区数据完整性。将Btrfs分区数据迁移到RHEL8支持的文件系统(XFS、Ext4)。

    卸载所有挂载的 “btrfs”文件系统:

    bash:

    umount /mnt/path/to/btrfs
  1. 卸载“btrfs”内核模块:

    执行以下命令,即可安全地从系统中卸载“btrfs”模块。

    bash:
    sudo modprobe -r btrfs

XFS

(高性能的日志型文件系统)

配置项废弃

配置项unsupport

XFS是一个高度可扩展、高性能、健壮和成熟的64位日志文件系统,支持单个主机上的非常大的文件和文件系统。它是RHEL 8中的默认文件系统,存在一些废弃的配置项:

检查是否存在废弃的配置项。

  • removed from kernel in 4.0
    • nodelaylog
    • delaylog
    • ihashsize
    • irixsgid
    • osyncisdsync
    • osyncisosync
  • removed from kernel in 4.19
    • nobarrier
    • barrier

使用以下命令查询:

grep -E 'nodelaylog|delaylog|ihashsize|irixsgid|osyncisdsync|osyncisosync|nobarrier|barrier' /etc/fsta

删除废弃的配置项,查看手册用新的配置项替代。

Docker

(容器)

Docker被Podman取代

组件替代

RHEL 7提供docker软件包,RHEL 8弃用了docker,推荐使用Podman。需要迁移现有Docker容器以适应 RHEL 8 的环境,升级方式可能是手动重装系统或通过leapp工具升级。

请参考官方文档进行迁移。

请参考官方文档进行迁移。

babeld

(网流分析工具)

babeld被RIP、OSPF 或EIGRP取代

组件替代

在RHEL 8中,由于许可问题,Babeld守护进程(之前是Quagga实现的一部分)不再包含在FRR(Frrouting)中。这意味着如果您您您需要使用Babel协议,可能需要寻找其他替代方案或手动安装Babeld。FRR项目已经从其官方软件包中移除了Babeld,因此用户需要单独处理Babel协议的支持。如果您有这方面的需求,可以考虑直接从Babel项目的官方网站获取并安装Babeld。

执行以下命令:

bash:

dnf list installed | grep -E "babeld|frr"

若RHEL 8中未显示上述包,且FRR已安装但无Babel组件,则确认Babeld被移除。

如需使用网流分析功能,需要在RHEL 8中手动部署Babeld(Babel官网下载源码编译安装)或者安装替代软件(如OSPF,RIP,IS-IS等)。

GRUB2

分区大小不足

分区大小

在GRUB2的启动机制中,核心映像(core.img)作为承载核心功能的中间镜像,包含了启动所需的核心功能模块,比如基本的硬件驱动、文件系统支持、引导逻辑等,需要被安装到磁盘的特定嵌入区。如果嵌入区空间不足,GRUB2在安装core.img时会失败,通常会提示 “嵌入区空间不足” 之类的错误,导致无法完成引导程序的安装。core.img一般占用20kb-30kb的空间。

传统 MBR 磁盘,请执行以下命令:

bash:

fdisk -l

检查第一个磁盘的起始位置,MBR占用一个扇区,嵌入区大小为(起始扇区-1)*512字节。以此验证嵌入区空间是否足够。

如空间不足,不支持原地升级,重装系统或者格式化分区。

GRUB2

不支持GRUB1版本升级,GRUB1版本已废弃在高版本中

组件废弃

从RHEL 7开始,GRUB Legacy已经被GRUB2所取代,因此在较新的系统上,GRUB Legacy通常不会出现在MBR中。

如果您已经安装了GRUB2,可以通过检查“/boot/grub2/grub.cfg”文件或者使用“grub-install”命令来确认GRUB2的状态,间接判断GRUB Legacy是否被移除。

bash:

grub-install --version

或者

grub2-install --version

如果系统返回GRUB2的版本信息,则说明GRUB2已正确安装,并且GRUB Legacy很可能已经被移除。可以使用“ls -ld /boot/grub”判断是否有GRUB Legacy残留

bash:

ls -ld /boot/grub 

请参考官方文档手动安装grub2软件。

pacemaker cluster

不支持集群软件升级

组件废弃

对于 Pacemaker,从 RHEL 7到 RHEL 8的原地升级(通过 leapp 工具)不被支持。红帽官方明确指出,对于部署了 High Availability 或 Resilient Storage 附加组件的集群环境,不推荐使用 leapp 进行原地升级。

检测是否存在相关配置文件:

bash:

ls /etc/corosync/corosync.conf
ls /var/lib/pacemaker/cib/cib.xml

若输出“No such file or directory”则没有相关配置文件。

不建议原地升级,建议逐个替换节点、分布迁移,然后销毁整个集群

sh -c pcs cluster stop --all --wait && pcs cluster destroy --all

更多详情可参考官方文档

KDE

不支持KDE桌面软件

组件废弃

在RHEL 8中,KDE桌面环境默认是不可用的。如果您当前系统中安装了与KDE相关的软件包,在进行升级操作时,这些KDE相关的软件包将会被移除。因此,升级完成后,您的系统将不会有任何桌面环境。

如果需要桌面,请安装GNOME替代软件。

执行以下命令,确认是否安装了GNOME桌面软件。

bash:

rpm -qa | grep -i gnome-shell

升级后手动安装GNOME桌面软件替代

dnf groupinstall "Server with GUI" -y

dnf groupinstall "Workstation" -y

sendmail

sendmail高版本不再支持TCP Wrappers

配置项unsupport

HEL 7升级到 RHEL 8的过程中,sendmail 与 TCP Wrappers产生冲突。要检查 sendmail是否已安装,并确定是否需要更新配置,同时如果使用了TCP Wrappers,则禁止升级。为避免升级后sendmail服务异常,需在升级前执行以下检查,若发现依赖TCP Wrappers,则需禁止升级或调整配置。

  1. 检查sendmail是否安装。
    bash:
    rpm -qa | grep -i sendmail
  1. 检查 sendmail 是否依赖 TCP Wrappers,TCP Wrappers 的核心依赖库为 libwrap.so。
    bash:
    ldd $(which sendmail) | grep libwrap
  1. 检查是否实际使用 TCP Wrappers 配置。
    bash:
    grep -i sendmail /etc/hosts.allow /etc/hosts.deny
    • 若输出包含 sendmail: 192.168.1.0/24等配置,说明实际使用了TCP Wrappers;
    • 若无输出则表示未使用,升级后仅libwrap依赖被移除,sendmail可正常运行。

移除废弃的配置项或者迁移到新配置项

原TCP Wrappers配置用于sendmail访问控制,可改用firewalld实现同等功能(RHEL 8 推荐方式)。

SpamAssassin

后向不兼容

后向不兼容

RHEL 8 对软件安全性、标准化和现代化的强化,SpamAssassin(一款常用的反垃圾邮件过滤工具)出现的 “后向不兼容” 问题。RHEL 7中的部分配置、命令选项或协议支持在新版本中被移除或修改。

  1. “--ssl”选项不再接受参数:在RHEL-8中,“spamc”命令行工具的“--ssl”选项不再支持传递额外参数。这意味着如果您之前使用了如`--ssl=hostname:port”这样的格式,现在需要调整为直接指定主机名和端口。
  2. “spamd”不再支持“--ssl-version”选项:在RHEL-8版本中,“spamd”服务启动时不再支持`--ssl-version`选项。如果您的配置文件中有这个选项,请移除或替换为其他方式来控制SSL版本。
  3. SSLv3不再被支持:为了安全起见,RHEL-8中的SpamAssassin已经完全移除了对SSLv3的支持。如果您仍然依赖于SSLv3,请考虑升级到更安全的协议版本。
  4. “spamassassin.service”类型已从“forking”改为“simple”:在RHEL-8中,SpamAssassin的服务类型已经被修改为“simple”,而不是之前的“forking”。这可能会影响如何配置和管理SpamAssassin服务。请确保您的系统服务管理工具(如systemd)正确地处理这种变化。
  5. sa-update不再支持SHA1验证:在RHEL-8中,“sa-update”工具不再支持SHA1哈希算法来验证规则文件。这意味着您需要更新任何依赖于SHA1验证的脚本或配置,以使用更安全的哈希算法。

对于配置文件的迁移,大部分工作将由SpamassassinConfigUpdate操作员自动完成。

大量不兼容,手动迁移。

kernel

存在多个版本的kernel-debug rpm包

内核包冲突

存在kernel-debug可能会影响OS版本升级后的系统引导项问题,导致重启系统后无法进入正确的系统。

执行以下命令,查看系统引导项信息。

bash:

grubby --info=ALL

查看默认引导项,删除其中的配置参数。

bash:

grubby --default-index
grubby --update-kernel=默认引导项索引索引 --remove-args="rd.break easyup.rollback"

kernel

存在多个版本的kernel-devel rpm包

内核包冲突

kernel-devel作为内核开发文件包,其内容(如内核头文件、模块开发工具等)与特定内核版本强绑定,多个版本共存易引发文件路径冲突、依赖关系紊乱等问题。包管理器在处理升级时,需校验新旧版本的依赖链,多版本共存会让依赖解析逻辑复杂化,可能出现 “版本不匹配”“依赖循环” 等错误,甚至导致升级过程中断或安装不完整。在升级前确保环境中没有Kernel-devel包,以免影响升级。

删除与未使用的内核相对应的kernel-devel包,以便最多安装一个kernel-devel包。

  1. 列出已安装的内核开发包

    使用以下命令来查看当前系统上安装的所有内核调试包。

    bash:

    rpm -qa | grep kernel-devel
  2. 查询当前使用的内核信息
    bash:
    uname -r
  3. 卸载内核开发包
    bash:
    sudo yum -y remove <package_name>

    注: <package_name>为具体需要卸载的包名。

使用以下命令卸载内核开发包。

bash:

yum -y remove <package_name>

更多请参考官方文档

device-mapper-multipath

配置项默认值变化

配置项默认值变化

device-mapper-multipath 用于将多个物理存储路径聚合为一个逻辑路径,实现存储访问的冗余和负载均衡。其核心功能之一是路径健康检测—— 通过`path_checker`选项定义检测方法,判断存储路径是否可用。

RHEL 7中`path_checker`默认值为`directio`。RHEL 8中`path_checker`默认值变更为"tur"。如果用户的配置文件中仍然保留了旧的`path_checker`设置,可能会导致与系统默认配置冲突的问题。

执行以下命令,检查当前配置。

bash:

grep "default_path_checker|detect_prio|detect_path_checker|reassign_maps|retain_attached_hw_handler" /etc/multipath.conf

移除旧配置或者显示配置。

Satellite

数据存储位置变更

数据存储位置变更

从RHEL 7 升级到 RHEL 8的过程中/var/lib/pgsql/data 存在旧的 PostgreSQL 数据,以及从 /var/opt/rh/rh-postgresql12/lib/pgsql/data/ 迁移到 RHEL 8 要求的 /var/lib/pgsql/data 时存储空间不足,导致自动迁移无法进行

确认当前系统中 Red Hat Satellite 的安装状态和具体版本。

bash:

rpm -q Satellite

可能出现需要警惕的情况:

  • 未查询到`Satellite`包,但是在使用`Satellite`服务。
  • 查询到的版本与升级路径不匹配,未按官方要求逐步升级(如直接从 6.7 跨版本到 6.11,跳过中间版本),或版本低于 6.7(官网中问题基于 6.7+ 升级场景)
  • 包状态异常。

请参考官方文档手动迁移数据

SSSD

  • 配置默认值变化
  • 配置项废弃
  • 配置默认值变化
  • 配置项废弃

RHEL 8 中 SSSD(System Security Services Daemon)配置的重要调整,主要涉及兼容性和默认行为的变更,可能影响系统身份认证和用户信息管理。

1. “id_provider=local”不再被支持,并将被忽略。

2. “ldap_groups_use_matching_rule_in_chain”选项已被移除,并将被忽略。

3. “ldap_initgroups_use_matching_rule_in_chain”选项也被移除,并将被忽略。

4. “ldap_sudo_include_regexp”的默认值从true更改为false。

注释移除废弃的配置项。

修改默认值。

tcp_wrappers

tcp_wrappers废弃

配置项废弃

TCP_Wrappers是一个工作在第四层(传输层)的的安全工具,对有状态连接(TCP)的特定服务进行安全检测并实现访问控制,界定方式是凡是调用libwrap.so库文件的的程序就可以受TCP_Wrappers的安全控制。它的主要功能就是控制谁可以访问,常见的程序有rpcbind、vsftpd、sshd,telnet

升级后hosts.deny 和hosts.allow中的规则会失效

Red Hat Enterprise Linux (RHEL) 8不再支持tcp_wrappers配置,因此要移除相关的配置项,减少系统组件冗余。检测相关配置,可用firewalld替代。

请参考官方文档

请参考官方文档移除不支持的配置项。

zipl

引导工具冲突

引导工具冲突

在 RHEL 7 升级到 RHEL 8 的过程中,IBM S/390 和 zSeries 架构的引导工具 zipl(zSeries Initial Program Loader)可能因配置、功能或依赖变化产生兼容性问题,核心涉及配置文件 /etc/zipl.conf的语法、选项支持及与新系统组件的适配。部分 RHEL 7 中有效的配置项在 RHEL 8 中被移除或重命名,导致旧配置失效。

  1. 配置文件选项废弃,如:“debug=1”、“sectors=512”等。zipl配置验证失败,报错“invalid configuration”或"unknown option”。
  2. 引导设备路径不兼容,未适配RHEL 8推荐的UUID或者/dev/disk/by-id 路径。
  3. image或ramdisk参数指向RHEL 7旧内核,如:vmlinuz-3.10.0,未更新为RHEL 8内核(vmlinuz-4.18.0)。
  4. RHEL 7配置中强制512字节扇区(sectors=512),与RHEL 8原生支持的 4K 扇区磁盘冲突。
  5. 引导工具冲突,系统残留Grub2,覆盖zipl引导记录。
  1. 删除`debug=1`、`sectors=512`等废弃选项。
  2. 获取新的UUID,更新配置。
  3. 更新image和ranmdisk配置:
    bash:
    sed -i "s|^image=.*|image=<RHEL 8内核路径>" /etc/zipl.conf
    sed -i "s|^ramdisk=.*|ramdisk=<对应的initramfs路径>" /etc/zipl.conf
  4. 删除sectors=512强制扇区参数。bash:
    sed -i '/^sectors=512/d' /etc/zipl.conf
  5. 卸载GRUB2
    bash:
    dnf remove grub2-common grub2-s390x

FILESYSTEM软件包与文件系统挂载机制

将ISO镜像挂载到/mnt 目录会导致 filesystem 软件包升级失败

镜像挂载问题

使用mount命令挂载镜像文件。使用iso作为源进行系统升级时,不能将iso挂载到/mnt目录,否则会造成Filessystem软件包升级失败。

检测/mnt目录是否有挂载的系统文件,如果有就提示用户卸载。

bash:

df -h | grep /mnt

卸载/mnt目录挂载的系统文件。

bash:

umount /mnt

SELinux

SELinux规则差异化

SELinux规则差异化

SELinux在升级过程中,由于系统会对大量文件、进程进行修改或替换,可能与SELinux的安全策略冲突,进而影响升级参考官方文档

使用“getenforce”检测SELinux模式。

bash:

getenforce

如果是Enforcing模式则临时修改为Permissive模式。

bash:

sudo setenforce 0

特殊权限文件

特殊权限文件

特殊权限文件

特殊权限对文件的保护逻辑与升级所需的文件可操作性需求相矛盾,可能导致升级中断。

执行命令查询特殊权限文件:

bash:

lsattr -alR ${dir} 2>/dev/null | grep -E "Append_Only|Immutable"

使用以下路径代替命令中的${dir}:

  • /etc/*
  • /boot/*
  • /var/*
  • /run/*
  • /opt/sut/check_result/*

手动修改特殊权限文件的权限。

bash:

chattr -a -i <具体文件名>

相关文档