离线环境下通过ISO将RHEL 7.9虚拟机升级至RHEL 8.6时Leapp预升级报错求助
离线环境下通过ISO将RHEL 7.9虚拟机升级至RHEL 8.6时Leapp预升级报错求助
针对你遇到的这些Leapp预升级报错,我整理了逐个问题的离线可行解决步骤,帮你推进升级:
一、核心阻止升级的问题处理
1. 已加载的内核驱动在RHEL 8中被移除
首先得明确具体是哪些驱动触发的问题,执行命令查看详细报告:
leapp report
根据报告里的驱动名称,对应处理:
- 如果是第三方非必需驱动:直接卸载驱动包,比如
rpm -e <driver-package-name>,重启系统确认驱动不再加载后,重新运行预升级。 - 如果是系统内置驱动:在
/etc/modprobe.d/下新建blacklist-<driver-name>.conf文件,写入blacklist <driver-name>,重启后确认驱动未加载再重试。 - 要是驱动是业务必需的:从Red Hat官方获取RHEL 8兼容的驱动包(离线场景可从联网的RHEL 8机器下载对应rpm),传到目标机器安装后再执行升级。
2. 未使用最新安装的内核
先核对当前运行内核和已安装内核版本:
# 查看当前运行的内核 uname -r # 查看所有已安装的内核 rpm -qa kernel | sort
如果确实有更新的内核未运行,直接重启虚拟机,在GRUB菜单中选择最新内核启动,之后重新执行leapp preupgrade命令。
3. root远程登录可能存在问题
这是警告类提示,不会直接阻止升级,但需要提前知晓:RHEL 8默认会禁用root用户的SSH远程登录(PermitRootLogin会被设为prohibit-password或no)。
- 若需要保留root远程登录:升级前修改
/etc/ssh/sshd_config,将PermitRootLogin设为yes(更推荐用普通用户+sudo替代),或者升级后再调整配置。 - 不需要的话可直接忽略该提示,升级后遵循默认规则即可。
4. 答案文件中缺少必要的回答
Leapp预升级会生成需要确认的配置项,先查看所有待填写的项:
leapp answer --list
针对每个缺失项,用命令补充回答,比如确认PAM配置迁移:
leapp answer --section remove_pam_pkcs11_module_check.confirm --add True
也可以直接编辑/var/log/leapp/answerfile文件,手动补充缺失内容,保存后重新运行预升级。
二、高/中 severity 问题处理
1. 排除的仓库中的包无法安装
先检查系统的yum仓库配置:
grep -r "exclude" /etc/yum.repos.d/
- 如果排除的仓库包含升级必需的包:修改对应repo文件,移除
exclude字段,或者挂载ISO后从Packages目录提取对应rpm手动安装。 - 如果是非必需的包:可忽略提示,但建议确认这些包是否影响系统核心功能,避免升级后出现异常。
2. Python版本差异问题
RHEL 7默认用Python 2,RHEL 8默认是Python 3,需要做这些准备:
- 检查系统中自定义的Python脚本,将依赖Python 2的脚本迁移到Python 3,或者从ISO的
Packages目录找到python2相关rpm,用rpm -ivh安装兼容包。 - 系统层面的Python迁移Leapp会自动处理,但自定义应用的兼容性需要你提前测试验证。
备注:内容来源于stack exchange,提问作者King David
相关产品推荐
相关产品推荐

