针对服务器操作系统比较常见的问题,推出常见问题解析系列报道,本期为第八篇,介绍用户对操作系统的库文件等重要文件进行误操作,导致系统崩溃且重启后无法进入系统问题。
用户在使用操作系统(如 KeyarchOS 5.8 SP1)时,误将手动编译的 openSSL 库文件替换了系统自带的库文件,导致系统崩溃。在重启后,系统无法正常启动,无法进入操作系统环境。
救援模式允许用户从CD-ROM或其他启动设备(而非系统硬盘)启动一个小型操作系统环境。顾名思义,救援模式的目的是帮助用户在操作系统无法正常启动时恢复访问系统文件。在正常情况下,操作系统依赖硬盘上的文件来执行各项任务,如运行程序和存储数据。但如果操作系统无法正常启动,用户仍然可以通过救援模式访问硬盘上的文件,从而进行必要的修复或数据恢复操作。
打开BMC的KVM,挂载KeyarchOS5.8 SP1的ISO镜像,点击“启动镜像”,对服务器进行开机操作,开机时按F11进入选择启动项界面,选择从挂载的镜像启动。
选择Troubleshooting
选择Rescue a KeyarchOS system
输入1进入救援模式
此时便进入了由镜像提供的一个系统,之前的故障系统在/mnt/sysroot目录下
进入损坏的系统:
sh-4.4# chroot /mnt/sysroot
此时便进入了硬盘上的系统。
进入救援模式下的临时系统运行环境,原本出现故障的系统位于 /mnt/sysroot 目录下,通过执行 chroot 命令,切换到故障系统的根目录环境:
sh-4.4# chroot /mnt/sysroot
这样,用户便进入了硬盘上存在问题的实际系统环境,从而能够对其进行修复。
根据用户反馈,客户进行了如下操作,其中修改了库文件的链接
tar -zxvf openss1-1.0.21.tar.gz
cd openss1-1.0.21
./config --prefix=/usr/local/openss1 shared
make
make test
make install
ln -s /usr/local/openssl/bin/openssl /usr/bin/openss1
1n -s /usr/local/openssl/include/openssl /usr/include/openssl
ln -s /usr/local/openssl/lib/libss1.so.1.0.0 /usr/lib64/libss1.so
ln -s /usr/local/openss1/1ib/1ibss1.so.1.0.0 /usr/1ib64/1ibss1.so.10
ln -s /usr/local/openss1/1ib/1ibcrypto.so.1.0.0 /usr/1ib64/1ibcrypto.so.10
echo "/usr/local/openss1/1i” >> /etc/ld.so.conf
idconfig -v
openssl version .a
下图为出现问题文件系统的openssl库的链接关系
对比镜像系统中openssl库的链接关系
问题根因
在本地编译并手动替换 openSSL 库文件后,由于未能正确处理库文件之间的依赖关系,导致原有的库链接出现错乱,最终导致系统无法正常启动。
对比问题系统的文件系统,结合用户手动安装openssl时修改的链接库,按照救援模式下的连接方式,手动恢复。
ln -s libssl.so.1.1.1k libssl.so.1.1
如上图:救援模式中的系统中libssl.so.1.1被手动修改指向了libssl.so.1.1.1k库,而问题系统中指向了libssl.so.1.1,按救援模式中的链接关系,重新链接库文件,重启可恢复系统。
售前咨询
售后服务
回到顶部