在一次写脚本的时候,突然发现rhel9.4采用rocky9.4源后,openssl安装的东西经常性的报错。一开始到处去查也没有先例和解释。然后到了rocky论坛的一个帖子( https://forums.rockylinux.org/t/issue-with-openssl-fips-provider-during-migration-from-rhel-9/15290/4 )里面找到了问题。
核心问题是 openssl-fips-provider 和 openssl-libs 都提供了 /usr/lib64/ossl-modules/fips.so,至少在 openssl-libs-1:3.0.7-27 之前,Rocky 拥有/拥有一个软件包 openssl-libs,而 RHEL 构建 openssl-libs 和 openssl-fips-provider,将一些内容拆分为后者
后来,我结合了一些学过的命令,将冲突地方强制删除,换上
rpm -e --nodeps openssl-fips-provider
yum install https://shell.nuoyis.net/download/openssl-devel-3.0.7-27.el9.0.2.x86_64.rpm
yum install https://shell.nuoyis.net/download/openssl-libs-3.0.7-27.el9.0.2.x86_64.rpm
然后问题就迎刃而解了,重启也是正常进入系统。
如果重启未能成功进入系统,则可能是uefi启动方式,这里经过一段时间测试和研究,给出了以下解决源码:
if [ -d /sys/firmware/efi ] && [ -d /boot/efi/EFI/redhat ];then
echo "你的Boot分区为EFI,正在进行特别优化"
mv /boot/efi/EFI/redhat/ /boot/efi/EFI/rocky
bootid=$(efibootmgr | grep BootCurrent | egrep -o "[0-9]+")
efi_uuid=$(efibootmgr -v | grep -A 1 "Boot"$bootid | egrep -o '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')
efi_id=$(lsblk -o NAME,UUID,PARTUUID | grep $efi_uuid | egrep -o '[n|v][[:alnum:]]+')
diskname=$(echo $efi_id | sed 's/[0-9]*$//; s/p[0-9]*$//')
efi_disknumber=$(echo $efi_id | egrep -o '[0-9]$')
sudo efibootmgr -b $bootid -B
sudo efibootmgr --create --disk "/dev/$diskname" --part $efi_disknumber --label "nuoyis-redhat Linux" --loader "\EFI\rocky\shimx64.efi"
sudo grub2-mkconfig -o /boot/efi/EFI/rocky/grub.cfg
fi
这段代码已经加入到我的脚本判断,RHEL9用户可以直接使用并进行系统初始化:
curl -sSO https://shell.nuoyis.net/nuoyis-init.sh;bash nuoyis-init.sh