【虚拟机ubuntu损坏】通过制作双系统,使用grub引导新系统,恢复旧系统文件

【背景】:电脑未知情况下虚拟机系统损坏导致Ubuntu系统崩溃不能启动,通过error报错猜测是lib库文件损坏。
error报错信息:
error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument
错误界面
【解决方案】:因为进入不到损坏的系统当中,且里面存储大量项目文件和程序源码,所以修复必须保证文件系统work目录内容完好。通过各种引导未果,想到通过制作双系统,然后通过新系统访问到损坏系统的文件系统,修复文件系统,亦可以把文件系统的资料拷贝出来。

【注】:因为是实现之后的记录,所以很多操作无法通过图片记录下来重现,但是重要的步骤都会通过图片呈现出来,缺少的地方读者需自行脑补,抱歉!

一、制作双系统
1、扩展磁盘容量,之前系统是40G在/dev/sda1分区,新扩展分区到80G。
扩展磁盘容量后的虚拟机设置信息
2、下载和当前损坏Ubuntu系统相同的iso镜像,通过CD/DVD(IDE)配置ISO镜像文件。
配置ISO文件结果
3、和正常安装Ubuntu大部分相同,不同的是安装类型的选择,我选择的是第三个,根据描述信息切记不可以选择第二个,第一个没有测试可不可以。
安装类型选择
【重点】
4、配置增加分区信息,点击没有配置的分区,然后点击Add,选择Ext4格式和Mount point:
配置分区信息
5、图示是配置好的分区信息,点击Install Now,等待安装完毕即可。
分区信息

二、通过Grub引导进入新系统
1、ESC 进入如图 点击键盘c 进入grub命令行:
进入grub命令行
2、ls 查看当前目录下的所有硬盘分区
ls命令  结果
3、通过linux命令指定内核位置名称和Linux的/根所位于的分区,这里的root所位于的分区与之前配置的分区信息对应 (可用teb补全)

grub> linux (hd0,msdos6)/boot/vmlinuz-3.2.0-23-generic root=/dev/sda6

linux命令 结果
4、通过initrd命令指定虚拟文件系统位置名称(可用teb补全)

grub> initrd (hd0,msdos6)/boot/initrd.img-3.2.0-23-generic(可用tab补全)

initrd命令 结果
5、grub> boot(进入新系统)

6、fdisk -l 查看分区信息,/dev/sda1 是之前损坏的系统 /dev/sda6 是新制作的当前ubuntu系统, 需要将/dev/sda1挂载到当前系统文件目录下才可以操作之前损坏的系统文件。
fdisk 命令查看分区信息
7、挂载损坏的文件系统到新系统文件中,
创建新的挂载目录:mkdir /mnt/work
挂载:mount /dev/sda1 /mnt/work/
挂载之后的结果
8、考虑到lib的链接库文件不被损坏,然后将新系统根目录下的lib文件tar打包,拷贝到当前目录下解包即可重启旧系统,损坏的系统便修复好了。此时亦可以通过将损坏系统的文件系统资料目录拷贝到新系统当中。

猜你喜欢

转载自blog.csdn.net/u011539437/article/details/106819224
今日推荐