事情起因
最近在做嵌入式视觉,捣弄rknn3588,在推理过程中报了一个错,就是说我的GLIBC的版本太低了,我也没有多想,想着升一下版本就好了,然后找到了这篇博客。【请谨慎操作】Ubuntu18.04升级GLIBC_2.29,解决ImportError: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29‘-CSDN博客
对着指令直接复制粘贴到终端,但是突然发现常用的指令,ls,cd这些都没法用了,我也没在意准备关闭终端重新打开,结果终端也打不开了,用惯了windows系统,做了最后悔的操作——重启。
结果导致了ubuntu根本打不开,即使是recovery mode也无效了。
如果你还没来得及关闭终端可以直接用下面的方法:
//恢复之前的连接的方法
$ LD_PRELOAD=/lib/x86_64-linux-gnu/libc-2.23.so ln -s /lib/x86_64-linux-gnu/libc-2.23.so libc.so.6
//或者直接更新这个连接
$ LD_PRELOAD=/lib/x86_64-linux-gnu/libc-2.27.so ln -s /lib/x86_64-linux-gnu/libc-2.27.so libc.so.6
还有一些解决方案是直接使用虚拟机的光盘救援,但我的是双系统实现不了。
Rufue制作一个启动盘
期间也花了很多时间去试了其他的方法,均无效,我这里是使用U盘做了一个ubuntu的安装盘(版本应当与你的ubuntu系统相当)
rufus软件下载地址:Index of /downloads
ubuntu的ios下载:https://ubuntu.com/#get-ubuntu
制作方法也很简单,打开rufus,如果用的是U盘就勾选上显示USB外置硬盘。然后开始制作就好了,当然你的U盘会被格式化,所以文件的话最好自己备份一下,等用完之后重新格式化就能重新使用了。ios镜像文件是ubuntu18 desktop。
Windows下制作好后的大概样子。
使用U盘进行启动
这里每个机子都有不同的方法,我的是惠普,在开机的时候不断的点击F12就进入了这里,我看大多方法是使用BIOS进入,这个大家可以自己去查查
这里直接点击Try Ubuntu就好了。
修改文件
现在要做的就是找到本机系统文件的位置,并把它挂载到当前系统的目录中,本机系统在dev中,首先你需要新建一个文件,这里我新建的文件夹叫做mnt
sudo mkdir /mnt
接下来的图片里面有一些是没用的操作,所以大家就尽量的自己进行辨别。
然后挂载我们的文件到mnt文件中
你需要先找到含有lib文件夹的位置,这个你可以在other locations中找到,因为在这个U盘的系统你会发现之前原系统的文件,当然不是computer里面,因为这里的computer是U盘的系统的,你应该查看其他的文件,然后在其旁边就会出现/dev/...
比如我这里就是/dev/sdb4
sudo mount /dev/sdb4 /mnt/
这里你就会发现在mnt文件中应该会有这样的文件,如:lib,lib32,lib64,bin这种
cd /mnt/lib/x86_64-linux-gnu
检查文件的链接情况:
ldd /mnt/lib/x86_64-linux-gnu/libm.so.6
可以看到下面图片当中的报错,没有这个文件
接下来强制链接:
sudo ln -sf libm-2.27.so libm.so.6
重新检查一下:
ldd /mnt/lib/x86_64-linux-gnu/libm.so.6
链接上了,真的不容易
这里建议大家再次cd进入我们原系统的那个文件路径,用ldd /mnt/lib/x86_64-linux-gnu/libm.so.6再检查一下原系统当中是否链接成功了。
最后,解除搭载
umount /mnt
键入reboot重启即可(也可以强制关机)。
成功复活!!!
后续
有时候真的不要手贱去动这些文件,不然除了氪金或者重装系统,光凭网上这些不是很详细的教程,真的很难去抢救回来,也是这个是生产机而且还不是我的,不然我肯定直接重装了。总得来说积累了不小的 "运维" 经验。
rk3588继续搞,1.5的工具箱没法用,我肯定要直接换一个版本的,真不想改它这个bug了,给我整害怕了都。
参考文章
ubuntu如何从升级glibc失败中恢复_ubuntu16.04 更新libc6 还原-CSDN博客
ubuntu系统,libc.so.6 版本升级时遇到的各种坑,以及最终解决办法_oserror: /lib/x86_64-linux-gnu/libc.so.6: version -CSDN博客
记一次ubuntu16误删libc.so.6操作的恢复过程_ubuntu libc恢复-CSDN博客
戴尔R730从U盘启动_r730 nvme启动-CSDN博客
centos光盘修复引导_CentOS通过光盘启动救援数据-CSDN博客
linux 系统崩溃了,使用u盘启动,进入try ubuntu 如何找到本机系统的挂载点? - 知乎 (zhihu.com)
Ubuntu 16.04 找回libc.so.6_ubuntu libc.so.6 被修改-CSDN博客