10.3. 已知问题
从 RHEL 7 升级到 RHEL 8 时可能会遇到的已知问题。
- 当网络管理器被禁用或未安装时,当执行原位升级时,NIC team 目前无法正常工作。
-
如果您的 RHEL 7 系统使用由红帽提供但在 RHEL 8 中不可用的设备驱动程序,
Leapp
将会限制升级。但是,如果 RHEL 7 系统使用了第三方设备驱动程序,而Leapp
在/etc/leapp/files/device_driver_deprecation_data.json
文件中没有数据,则Leapp
不会检测这样的驱动程序并进行升级。然后,该系统可能会在升级后无法引导。
如果在
/etc/nsswitch.conf
文件中使用了winbind
和wins
Samba 模块,则不能执行原位升级。升级事务失败并显示以下出错信息,Lapp
会阻止升级:upgrade[469]: STDERR: upgrade[469]: Error in PREIN scriptlet in rpm package unbound-libs upgrade[469]: Error: Transaction failed upgrade[469]: Container el8userspace failed with error code 1. unbound-libs has a PREIN failure
upgrade[469]: STDERR: upgrade[469]: Error in PREIN scriptlet in rpm package unbound-libs upgrade[469]: Error: Transaction failed upgrade[469]: Container el8userspace failed with error code 1. unbound-libs has a PREIN failure
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要临时解决这个问题,请配置系统以便在更新的过程中只使用本地供应商的
user
,groups
, 和hosts
数据库。-
打开系统
/etc/nsswitch.conf
配置文件并搜索包含winbind
或者wins
字符串的条目。 -
如果您找到这样的条目,请创建一个
/etc/nsswitch.conf
的备份。 -
编辑
/etc/nsswitch.conf
并从包含它们的条目中删除winbind
或者wins
。 - 执行原位升级。
升级后,根据您的系统配置要求,将
winbind
和wins
字符串添加到/etc/nsswitch.conf
中的条目中。(BZ#1410154)
-
打开系统
Leapp
实用程序不会在升级过程中更改自定义验证配置。如果您使用已弃用的authconfig
工具在 RHEL 7 系统中配置身份验证,则 RHEL 8 的身份验证可能无法正常工作。要确保您的自定义配置在 RHEL 8 系统中正常工作,请使用authselect
程序重新配置您的 RHEL 8 系统。重要在原位升级过程中,删除已弃用的
pam_krb5
或pam_pkcs11
可插拔验证模块 (PAM)。因此,如果 RHEL 7 系统上的 PAM 配置包含pam_krb5
或pam_pkcs11
模块,如果这些模块具有required
或requisite
控制值,则如果执行原位升级,则您可能会被锁在系统之外。要临时解决这个问题,请在开始升级前将您的 RHEL 7 系统配置为不使用pam_krb5
或者pam_pkcs11
。
如果系统上安装的第三方软件包(不是红帽签名的)的名称与红帽提供的软件包名称相同,则原位升级会失败。要临时解决这个问题,请在升级前选择以下选项之一:
- 删除第三方软件包
- 使用红帽提供的软件包替换第三方软件包
为了安全起见,已从 RHEL 8 中删除了对 single-DES (DES)和 triple-DES (3DES)加密类型的支持。RHEL 7 Identity Management(IdM)仍支持 3DES 加密。
将 IdM 客户端从 RHEL 7 升级到 RHEL 8 或将整个 IdM 环境从 RHEL 7 迁移到 RHEL 8 是可能的,因为两个 RHEL 版本都默认首选更强的 AES 加密类型:Expand IdM 的版本 默认加密类型 其他支持的加密类型 RHEL 7
aes256-cts
aes128-cts
camellia256-cts
camellia128-cts
des3-hmac
arcfour-hmac
RHEL 8
aes256-cts
aes128-cts
aes256-sha2
aes128-sha2
camellia256-cts
camellia128-cts
arcfour-hmac
[a][a] RHEL 8 中默认弃用并禁用了 RC4 加密,因为它被视为不如较新的 AES-128 和 AES-256 加密类型安全。有关启用对与传统活动目录环境兼容的 RC4 支持的更多信息,请参阅 确保 AD 和 RHEL 中对通用加密类型的支持。如果您手动配置了一个非 IdM Kerberos 发行中心(KDC)、任何服务或任何用户为只使用 DES 或 3DES 加密的用户,您可能会在升级到 RHEL 8 中最新 Kerberos 软件包后遇到服务中断,例如:
- Kerberos 验证错误
-
unknown enctype
加密错误 -
带有 DES 加密数据库主密钥 (
K/M
) 的 KDC 无法启动
红帽建议不要在您的环境中使用 DES 或者 3DES 加密。有关重新加密 Kerberos 主体以使用更强大的加密类型的更多信息,请参阅 MIT Kerberos 文档中的 退出 DES。
- 在带有独立磁盘的软件冗余阵列(RAID)的系统上,原位升级可能会失败。(RHEL-3279)
- 禁用 GRUB 引导装载程序规格的系统(如使用 Puppet 的系统)无法为较新的内核创建新的 initramfs。要临时解决这个问题,请从引导装载程序条目中手动删除软件包和旧内核,如 第 6 章:执行升级后的任务 中所述。(BZ#1955099)
- IBM Z 构架中没有 Relax-and-Recover (ReaR) 程序。因此,IBM Z 系统无法完全由 OpenSCAP 套件修复,且可能无法与安全基准完全兼容。(BZ#1958939)
在原位升级过程中,
Leapp
工具通常会保留 RHEL 7 和 RHEL 8 之间的网络接口控制器(NIC)名称。但是,在某些系统上,如带有网络绑定的系统,NIC 名称需要在 RHEL 7 和 RHEL 8 之间更新。在这些系统上,执行以下步骤:-
设置
LEAPP_NO_NETWORK_RENAMING=1
环境变量,来防止Leapp
工具错误地保留原始 RHEL 7 NIC 名称。 - 执行原位升级。
验证您的网络是否正常工作。如果需要,请手动更新网络配置。
(BZ#1919382)
-
设置
原位升级后,如果系统满足以下条件,则 SSH 密钥将不再自动生成:
- 系统在云上。
- cloud-init 软件包已安装。
ssh_genkeytypes 配置在 /etc/cloud/cloud.cfg 文件中被设置为 ~,这是默认设置。
如果原始密钥已删除,则此问题防止使用 SSH 连接系统。有关防止此问题的更多信息,请参阅红帽知识库解决方案 将模板升级到 RHEL 8.7 或 9 后,无法 SSH 到新的虚拟机。(BZ#2210012)
- 在硬件级别 13 上创建的且使用 UEFI 引导的 VMware 虚拟机在升级过程中可能会遇到问题,因为 NVRAM 文件太小了。如需更多信息,请参阅红帽知识库解决方案 VMWare:在执行 efibootmgr 或 mokutil 命令添加条目时,得到 "No space left on device"。(RHEL-3362)
-
如果您使用带有 ISO 镜像的 RHUI 升级,则升级可能会失败。您可以通过不将
--iso
选项与升级一起使用来临时解决这个问题,或者查看红帽知识库解决方案 使用 ISO 离线 Leapp 升级失败并显示 'Failed to synchronize cache for repo 'rhul-microsoft-azure-rhel8', ignoring this repo。(RHEL-3296) 预升级过程可能会失败,并显示以下错误消息:
MountError:failed to create mount target directory …
如果出现这个问题,请导出
LEAPP_OVL_IMG_FS_EXT4=1
环境变量。如需更多信息,请参阅红帽知识库解决方案 Leapp 可能失败,并显示 MountError (OverlayFS + XFS ftype=1)。(RHEL-3330)如果挂载了太多文件系统,则预升级过程可能会失败,并显示以下错误消息:
OperationalError: unable to open database file Cannot create XFS filesystem in ...
OperationalError: unable to open database file Cannot create XFS filesystem in ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果出现这个问题,请完成以下步骤:
- 卸载与系统分区无关且在升级过程中不需要的文件系统。
-
注释掉
/etc/fstab
文件中卸载的文件系统的条目,以防止它们在升级过程中被挂载。 升级后恢复原始文件系统配置。
-
如果您的系统上没有
/etc/sysconfig/kernel
系统配置文件,升级会失败,导致系统故障。要防止这个问题,请使用预期的配置手动创建该文件。如需更多信息,请参阅 验证引导装载程序。(RHEL-22306) 如果
/etc/fstab
文件中定义的任何挂载的文件系统没有设置shared
传播标志,则升级可能会失败。要防止这个问题,请重新挂载这些文件系统,来将其设置为 shared :mount -o remount --make-shared <mountpoint>
# mount -o remount --make-shared <mountpoint>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用每个文件系统的挂载点替换 mountpoint。
如需更多信息,请参阅红帽知识库解决方案 在 DNF 事务检查过程中,Leapp 报错"Can not load RPM file"。(RHEL-23449)
-
如果为升级过程设置了有限的资源,则升级可能会失败。例如,如果设置了,升级进程可能会达到
打开的文件描述符的最大数
和进程及其子进程写的文件的最大大小
属性。要防止这些问题,请在升级之前增加或减少这些限制。如需更多信息,请参阅红帽知识库解决方案 为什么 leapp 预升级失败并显示 sqlite3.OperationalError: unable to open database file traceback 错误? ,并确保 /var/lib/leapp/scratch/diskimages/root_boot 中有足够的磁盘空间,至少需要 XXX mib。(RHEL-16881, RHEL-26459) 如果系统上安装了
jbcs-httpd24-brotli
RPM,例如,如果您的系统使用 JBoss Core Services Web 服务器,则升级可能会失败。要防止这个问题,请在升级前删除软件包。另外,如果您无法在升级前删除软件包,请运行以下命令,以确保brotli
软件包在升级过程被安装:echo brotli >> /etc/leapp/transaction/to_install
# echo brotli >> /etc/leapp/transaction/to_install
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 网卡没在 PCI 总线上的系统,如 IBM Z 机器上的 RoCE ,可能会因为 NIC 名称的更改,在升级后遇到连接丢失的情况。要防止这个问题,请在升级前完成以下步骤:
在内核引导参数中添加
net.ifnames=0
:grubby --update-kernel=ALL --args 'net.ifnames=0'
# grubby --update-kernel=ALL --args 'net.ifnames=0'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 IBM Z 系统上,输入以下命令使更改有效:
zipl
# zipl
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启您的系统。
-
如果您的 RHEL 7 系统使用红帽提供的但在 RHEL 8 中没有的设备驱动程序,在原位升级前必须卸载该驱动程序。但是,当某些设备驱动程序(如
mptcl
驱动程序)被其他服务使用时,驱动程序可能会被自动重新载入。有关解决这个问题的更多信息,请参阅红帽知识库解决方案 由于无法卸载的 mptctl 模块,IPU 被禁止。(RHEL-15894) -
如果您使用 RHUI 进行升级,则
/usr/share/leapp-repository/repositories/system_upgrade/common/files/rhui/
目录中的文件在预升级报告中被错误地报告为自定义文件。除非手动修改这些文件,否则您可以忽略报告中有关这些文件的警告,原位升级将不会受到影响。(RHEL-40115) - 升级后,活动目录身份验证可能会有问题。如需更多信息,请参阅红帽知识库解决方案 从 RHEL 7 到 RHEL 8 的 LEAPP 升级后,活动目录身份验证无法正常工作。
-
RHEL 8 上的
logrotate
配置与 RHEL 7 上的不同。因此,如果您自定义了logrotate
配置,则在升级后logrotate
可能会失败。有关解决这个问题的更多信息,请参阅红帽知识库解决方案 在从 RHEL 7 原位升级到 RHEL 8 后,logrotate 异常退出。 如果没有存储的的任何文件系统在
/etc/fstab
文件中使用存储定义了,则升级可能会失败。对于使用SysVinit
的旧系统,此类设置是典型的,但对于带有systemd
的系统是无效的。要防止这个问题,请从/etc/stab
文件中删除这些条目。以下挂载点通常用于没有存储的文件系统:- /dev
- /dev/pts
- /dev/shm
- /proc
- /run
- /sys
- /sys/firmware/efi/efivars
- /sys/fs/bpf
- /sys/fs/cgroup
- /sys/fs/pstore
- /sys/fs/smackfs
/sys/kernel/security
-
如果您使用 HTTP 代理,则必须将 Red Hat Subscription Manager 配置为使用代理服务器,或在执行
subscription-manager
命令时使用--proxy <hostname>
选项 。否则,subscription-manager
命令的执行会失败。如果您使用--proxy
选项而不是配置更改,升级过程会失败,因为Leapp
无法检测到代理。要防止这个问题发生,请手动编辑rhsm.conf
文件。如需更多信息,请参阅红帽知识库解决方案 如何为红帽订阅管理配置 HTTP 代理。(BZ#1689294) -
对于需要代理来访问 RHEL 8 内容的系统,您通常需要在
/etc/dnf/dnf.conf
配置文件中配置通过 DNF 使用代理。如果当前的 DNF 配置与目标系统上的 DNF 版本不兼容,请在/etc/leapp/files/dnf.conf
配置文件中指定有效的目标配置。如需更多信息,请参阅红帽知识库解决方案 Leapp 如何使用代理? 当满足所有以下条件时,升级可能会失败,并显示
MountError
消息:-
/etc/fstab
中定义的挂载点包含下划线字符。 如果下划线字符被替换为正斜杠,则
/etc/stab
中定义的另一个挂载点有相同的名称。例如,在
/etc/fstab
中定义/var/tmp
和/var_tmp
挂载点会导致升级失败。要防止这个问题,请卸载包含下划线字符的挂载点,并在升级前在
/etc/fstab
文件中注释掉挂载点。您可以在升级后恢复配置。
-