背景
操作系统:ubuntu16
glibc版本:2.23
修改原因:
经过一系列报错和手工构建之后,vulkansdk
成功安装(起码运行./vulkansdu
成功),在进行./vulkaninfo
进行验证时,报错:
(意思是当前glibc版本过低,需要更高版本的glibc?可以理解,因为我安装的vulkansdk是ubuntu18的,强行安装到ubuntu16上;因此需要更新glibc版本到2.27)
修改过程:
手动源码安装glibc-2.27
然后将libc-2.27.so放到/lib/x86_64-linux-gnu下,sudo修改libc.so.6软链接指向libc-2.27.so(原来指向libc-2.23.so)
然后出错(且当前不是root用户)
初步调研
ubuntu系统,libc.so.6 版本升级时遇到的各种坑,以及最终解决办法尝试了第一和第二个解决方法,无效
ubuntu如何从升级glibc失败中恢复和2021-03-18 关于ubuntu的libc.so.6的更新和误删操作解决和关于libc.so.6误删除紧急恢复的方案只能通过root用户来进行修复
ubuntu如何从升级glibc失败中恢复和Ubuntu 16.04 找回libc.so.6使用U盘启动,最终使用这个方法
修复过程
原理:使用U盘的ubuntu系统作为启动盘,将原来的ubuntu16挂载到U盘的ubuntu系统下,U盘的系统是好的,从而使用命令行修改原来的系统,重新建立软链接
(注意ubuntu救援模式或紧急模式没用,因为系统根本无法启动)
制作U盘启动盘
使用rufus制作U盘启动盘,原来服务器是ubuntu16 desktop,这里U盘启动版使用ubuntu16 server
使用U盘进行启动
大致参考戴尔R730从U盘启动,具体过程没有拍照记录
进入U盘系统
- 选择resecu a broken system
- 配置键位
- 配置网络
- 挂载文件:linux 系统崩溃了,使用u盘启动,进入try ubuntu 如何找到本机系统的挂载点?
- 进入救援模式
- 成功进入U盘系统
- 重新建立软链接,并且使用chroot将root启动点修改到原硬盘
- 使用reboot(或者长按开机键)重新启动
进入原来系统的recovery模式
- 我这里是resume模式进行启动,再重启,之后正常