
# OS版本升级兼容性问题
当您选择Red Hat Enterprise Linux（RHEL）7.9 -\> 8.x路径进行OS版本升级时，已识别的兼容性问题如[表1]所示，本章节针对表内各类兼容问题，提供了建议修复方案，帮助您快速恢复设备正常使用，降低升级对系统运行的影响。
 表1OS版本升级兼容性问题汇总 
| 组件                                                            | 兼容性问题                                                                                                                                                                                                                                               | 兼容性问题类别                                                                                                                                                                                               | 具体说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | 检查步骤                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | 修复建议                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|:---|:---|:---|
| vsftpd (FTP服务器软件)           | RHEL-8中不再支持tcp_wrappers配置（一种基于TCP层的简易防火墙软件）。                                                                                                                                                                                                        | 配置项废弃                                                                                                                                                                                                 | 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 ```     2. 检查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 ```   3. 综合判断： 根据上述两个步骤的结果，如果vsftpd配置文件中没有 \`tcp_wrappers=YES\` 设置，并且tcp_wrappers的配置文件中也没有针对vsftpd的规则，则可以认为vsftpd的配置是符合要求的。    通过以上步骤，您可以确保vsftpd的配置不会因为tcp_wrappers的存在而产生冲突或问题。 | 请参考官方文档进行修复：[Replacing TCP Wrappers in RHEL 8 and 9](https://access.redhat.com/solutions/3906701)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| 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 Daemon（守护进程）的一个配置选项，用于指定在身份验证字符串中是否显示二进制文件的补丁级别。这个选项仅适用于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默认值变化   | - 配置项默认值变化  - 配置项废弃   | - dnssec-lookaside：这个选项用于指定DNSSEC验证时使用的DLV（Delegation Signer）服务器。随着DNSSEC技术的发展，BIND默认不再支持通过DLV进行签名验证，因此"dnssec-lookaside"语句可能不再被接受。升级到RHEL 8后，Bind会忽略该配置（无报错，配置失效）；若配置了自定义lookaside区域，可能导致无效查询，影响DNS响应效率。如果您需要使用DNSSEC功能，建议检查最新的BIND文档来了解如何正确配置DNSSEC。  - 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 ```     2. 执行以下命令，如果输出为空，说明没有"listen-on-v6"相关语句。 bash： ``` grep "listen-on-v6" /etc/named.conf ```                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | 删除dnssec-lookaside，如果仍然需要该功能，参考[官方文档](https://docs.redhat.com/zh-cn/documentation/red_hat_enterprise_linux/8/html/managing_networking_infrastructure_services/bind-migration-from-rhel-7-to-rhel-8_assembly_setting-up-and-configuring-a-bind-dns-server)去修订； 根据期望用法去显示配置开关或者不配置listen-on-v6。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| pam_pkcs11.so pam_krb5.so | so库不再支持                                                                                                                                                                                                                                             | so库不再支持                                                                                                                                                                                               | - "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中部分旧参数被废弃或者重命名。  - 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库配置。 更多请参考[官方文档](https://docs.redhat.com/zh-cn/documentation/red_hat_enterprise_linux/8/html/upgrading_from_rhel_7_to_rhel_8/known-issues_troubleshooting)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| 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 （防火墙软件）           | 防火墙规则大量变动，多项用法不再支持                                                                                                                                                                                                                                  | 配置项变化                                                                                                                                                                                                 | Firewalld对防火墙规则的支持范围进行了精简，尤其在Ebtables类型和IpSetType上明确了仅支持的子集，不符合的类型会导致规则失效或防火墙启动失败。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | 排除法： - 仅支持Ebtables类型： filter和nat。  - 仅支持IpSetType: hash:ip、hash:mac和hash:net。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | 需检查所有防火墙规则和配置文件，将不符合的类型替换为支持的类型，删除不支持的用法（按照对应版本文档说明重新修正，[RHEL8防火墙配置链接](https://docs.redhat.com/zh-cn/documentation/red_hat_enterprise_linux/8/html/system_design_guide/using-and-configuring-firewalld_system-design-guide#predefined-firewalld-services_using-and-configuring-firewalld)）。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Btrfs (新型文件系统)             | Btrfs组件在8中被弃用                                                                                                                                                                                                                                       | 组件废弃                                                                                                                                                                                                  | Btrfs是一款设计用于高端存储需求的现代文件系统，支持快照、RAID、动态卷管理等高级功能。在RHEL7中作为可选组件。 RHEL8中弃用Btrfs，升级时不再提供Btrfs作为可选文件系统，无法在系统安装时将分区格式化为Btrfs。官方仓库中移除了Btrfs的核心工具包。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 可以参考[官方文档](https://access.redhat.com/solutions/7020130)进行检查修复。 - 如果存在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 ```     2. 卸载"btrfs"内核模块： 执行以下命令，即可安全地从系统中卸载"btrfs"模块。 bash： ``` sudo modprobe -r btrfs ```                                                                                                                                                                                                                            |
| XFS （高性能的日志型文件系统）           | 配置项废弃                                                                                                                                                                                                                                               | 配置项废弃                                                                                                                                                                                                 | 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工具升级。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | 请参考[官方文档](https://access.redhat.com/solutions/5213331)进行迁移。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | 请参考[官方文档](https://access.redhat.com/solutions/5213331)进行迁移。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| 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 ```                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | 请参考[官方文档](https://access.redhat.com/solutions/2643721)手动安装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 ``` 更多详情可参考[官方文档](https://access.redhat.com/solutions/7049940)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| 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                                                                                                                                                                                                                         | 配置项废弃                                                                                                                                                                                                 | RHEL 7升级到 RHEL 8的过程中，sendmail与TCP Wrappers产生冲突。要检查sendmail是否已安装，并确定是否需要更新配置。同时，如果使用了TCP Wrappers，则禁止升级。为避免升级后sendmail服务异常，需在升级前执行以下检查，若发现依赖TCP Wrappers，则需禁止升级或调整配置。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | 1. 检查sendmail是否安装。 bash： ``` rpm -qa | grep -i sendmail ```     2. 检查sendmail是否依赖TCP Wrappers，TCP Wrappers的核心依赖库为libwrap.so。 bash： ``` ldd $(which sendmail) | grep libwrap ```     3. 检查是否实际使用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中的部分配置、命令选项或协议支持在新版本中被移除或修改。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | - "--ssl"选项不再接受参数：在RHEL-8中，"spamc"命令行工具的"--ssl"选项不再支持传递额外参数。这意味着如果您之前使用了如\`--ssl=hostname:port"这样的格式，现在需要调整为直接指定主机名和端口。  - "spamd"不再支持"--ssl-version"选项：在RHEL-8版本中，"spamd"服务启动时不再支持\`--ssl-version\`选项。如果您的配置文件中有这个选项，请移除或替换为其他方式来控制SSL版本。  - SSLv3不再被支持：为了安全起见，RHEL-8中的SpamAssassin已经完全移除了对SSLv3的支持。如果您仍然依赖于SSLv3，请考虑升级到更安全的协议版本。  - "spamassassin.service"类型已从"forking"改为"simple"：在RHEL-8中，SpamAssassin的服务类型已经被修改为"simple"，而不是之前的"forking"。这可能会影响如何配置和管理SpamAssassin服务。请确保您的系统服务管理工具（如systemd）正确地处理这种变化。  - 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> ``` 更多请参考[官方文档](https://access.redhat.com/solutions/4723671)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| 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时存储空间不足，导致自动迁移无法进行                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | 确认当前系统中RHEL Satellite的安装状态和具体版本。 bash： ``` rpm -q Satellite ``` 可能出现需要警惕的情况： - 未查询到\`Satellite\`包,但是在使用\`Satellite\`服务。  - 查询到的版本与升级路径不匹配，未按官方要求逐步升级（如直接从6.7跨版本到6.11，跳过中间版本），或版本低于6.7（官网中问题基于6.7+升级场景）  - 包状态异常。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | 请参考[官方文档](https://access.redhat.com/solutions/6794671)手动迁移数据                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| 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替代。                                                                                                                                                                                                                                                                                                                                                                                                                                | 请参考[官方文档](https://access.redhat.com/solutions/3906701)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | 请参考[官方文档](https://access.redhat.com/solutions/3906701)移除不支持的配置项。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| 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和ramdisk配置： 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目录，否则会造成Filesystem软件包升级失败。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | 检测/mnt目录是否有挂载的系统文件，如果有就提示用户卸载。 bash： ``` df -h | grep /mnt ```                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | 卸载/mnt目录挂载的系统文件。 bash： ``` umount /mnt ```                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| SELinux                                                       | SELinux规则差异化                                                                                                                                                                                                                                        | SELinux规则差异化                                                                                                                                                                                          | SELinux在升级过程中，由于系统会对大量文件、进程进行修改或替换，可能与SELinux的安全策略冲突，进而影响升级参考[官方文档](https://docs.redhat.com/zh-cn/documentation/red_hat_enterprise_linux/8/html/upgrading_from_rhel_7_to_rhel_8/applying-security-policies_upgrading-from-rhel-7-to-rhel-8)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 使用"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 <具体文件名> ```                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   
