RHEL8.0升级包后图形化界面进入异常,提示 “Oh no! Something has gone wrong.Logout!”

1 问题背景

近期遇到一个问题,RHEL8.0因为扫出漏洞,根据漏洞做了更新,重启后,发现图形化界面进入异常,提示“Oh no! Something has gone wrong.Logout!”,此时,ssh远程登录正常。

2 排查过程

2.1 日志

ssh登录,查看 messages 日志,从日志中可以查看到以下错误信息(还有其他的错误日志,但是后面排查了才发现此为关键日志)。

/usr/libexec/gdm-x-session[37969]: gbm: failed to open any driver (search paths /usr/lib64/dri)
/usr/libexec/gdm-x-session[37969]: gbm: Last dlopen error: /usr/lib64/dri/vmwgfx_dri.so: undefined symbol: amdgpu_bo_list_create_raw
/usr/libexec/gdm-x-session[37969]: failed to load driver: vmwgfx
/usr/libexec/gdm-x-session[37969]: gbm: failed to open any driver (search paths /usr/lib64/dri)
/usr/libexec/gdm-x-session[37969]: gbm: Last dlopen error: /usr/lib64/dri/kms_swrast_dri.so: undefined symbol: amdgpu_bo_list_create_raw
/usr/libexec/gdm-x-session[37969]: failed to load driver: kms_swrast
/usr/libexec/gdm-x-session[37969]: gbm: failed to open any driver (search paths /usr/lib64/dri)
/usr/libexec/gdm-x-session[37969]: gbm: Last dlopen error: /usr/lib64/dri/swrast_dri.so: undefined symbol: amdgpu_bo_list_create_raw
/usr/libexec/gdm-x-session[37969]: failed to load swrast driver
/usr/libexec/gdm-x-session[37969]: couldn't get display device

根据查到的错误日志的信息,初步判断为 drvier 加载失败,导致图形化界面无法启动,会话关闭退出。

2.2 从报错出发

/usr/libexec/gdm-x-session[37969]: gbm: Last dlopen error: /usr/lib64/dri/kms_swrast_dri.so: undefined symbol: amdgpu_bo_list_create_raw

根据以上报错,查询到相关的解决方案,更新 libdrm 至最新版 libdrm-2.4.100-1.el8.x86_64,安装后需重启 gdm 服务,这个是图形化界面管理服务,重启系统实际上也是重启了此服务。所以重启服务也可以重现到以上问题。

参考链接 https://access.redhat.com/solutions/5212951

安装后重启服务,则一直卡在以下画面,查看 messages 日志,可以看到一直在刷着相关的信息,即类似不断重启 gdm 的过程。由此可见,仅安装 libdrm 还不足以解决问题。

2.3 检查更新的包

因为更新包之前是正常的,所以确认是此次更新导致,再加上按照官方的方案处理,还是存在问题,可能还是包的问题。

首先,根据 /usr/lib64/dir/ 目录确认相关的包,为 mesa-dri-drivers-19.3.4-2.el8.x86_64 。

rpm -qf /usr/lib64/dri/kms_swrast_dri.so 

尝试查询该包的相关依赖,因为把所需要升级的包都放到一个目录,配置成 repo 源,所以直接使用 yum 查询。

但这种方式所查询到的依赖,是不全的,这在后面的排查中才发现。

yum deplist mesa-dri-drivers | grep provider | sort | uniq 

进入更新包所在目录,确认 mesa- 相关的包,以及当前系统中相关名称的包,可以确定,只安装了两个,其他几个没有安装。

所以尝试将升级几个版本较低的相关的包,升级到统一版本,经过测试,还需要其他的依赖,包列表如下。

libdrm-2.4.100-1.el8.x86_64.rpm
libglvnd-1.2.0-6.el8.x86_64.rpm
libglvnd-egl-1.2.0-6.el8.x86_64.rpm
libglvnd-gles-1.2.0-6.el8.x86_64.rpm
libglvnd-glx-1.2.0-6.el8.x86_64.rpm
mesa-libEGL-19.3.4-2.el8.x86_64.rpm
mesa-libgbm-19.3.4-2.el8.x86_64.rpm
mesa-libGL-19.3.4-2.el8.x86_64.rpm
mesa-libglapi-19.3.4-2.el8.x86_64.rpm

安装完成之后,因为前面一直在重试,所以也不需要另外重启服务了,问题恢复。

 

2.3 其他方法

此问题其实还有一个更简单的方法,卸载导致问题的包,重新找回原来版本的包安装回去即可。

rpm -e --nodeps llvm-libs-9.0.1-4.module+el8.2.0+5887+847e8a86.x86_64
rpm -e --nodeps mesa-dri-drivers-19.3.4-2.el8.x86_64
rpm -e --nodeps mesa-filesystem-19.3.4-2.el8.x86_64
rpm -ivh llvm-libs-7.0.1-1.module+el8+2560+c32c7af1.x86_64.rpm
rpm -ivh mesa-dri-drivers-18.3.1-2.el8.x86_64.rpm
rpm -ivh mesa-filesystem-18.3.1-2.el8.x86_64.rpm

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Linux系统上安装RHEL 8.0(Red Hat Enterprise Linux 8.0),可以按照以下步骤进行操作: 1. 首先,确保你有RHEL 8.0的安装介质(例如ISO镜像文件)或者可以通过网络进行安装。 2. 创建一个可启动的USB驱动器或者DVD,用于安装RHEL 8.0。你可以使用工具如Rufus或者Etcher来创建启动盘。 3. 将USB驱动器插入计算机,并在计算机启动时按下相应的按键(通常是F2、F12或Del键)进入BIOS设置。确保将计算机设置为从USB驱动器启动。 4. 确定计算机从USB驱动器启动后,会显示RHEL 8.0的安装界面。选择“Install Red Hat Enterprise Linux 8.0”并按下Enter键。 5. 在接下来的屏幕上,选择适合你的语言、键盘布局和时区设置。 6. 在“Installation Destination”屏幕上,选择你要安装RHEL 8.0的硬盘或分区。你可以选择自动分区或手动分区,具体取决于你的需求。 7. 在“Software Selection”屏幕上,选择你需要安装的软件包组。默认情况下,会选择"Server with GUI"软件包组,但你可以根据需要进行更改。 8. 在接下来的设置屏幕上,设置主机名、网络设置和root用户密码。 9. 完成设置后,点击“Begin Installation”按钮来开始安装过程。系统会进行格式化和安装。 10. 安装完成后,点击“Reboot”按钮重启计算机。 11. 计算机重新启动后,会显示初始设置屏幕。按照屏幕上的指示进行初始设置,包括创建用户和选择许可证选项。 完成上述步骤后,你就成功地在Linux系统上安装了RHEL 8.0。记得备份重要数据,并确保你的计算机符合RHEL 8.0的系统要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值