admin管理员组文章数量:1567261
救援思路
大致的操作步骤:
- 准备对应版本的Try Ubuntu启动盘以及在另一个U盘准备好需要传入的usr.tar.gz(相同发行版的/usr打包文件)
- 通过bios设置U盘启动,进入Try Ubuntu系统
- 将待恢复的系统根目录与存放
usr.tar.gz
文件的u盘都挂载到Try Ubuntu - 通过Try Ubuntu系统提供的临时环境(包含了基本的linux操作,如cp、mount等),将
usr.tar.gz
拷贝到待恢复系统的根目录,并解压复原出/usr目录 - 重新启动系统,进入之前待恢复的系统。这里有个问题是系统根目录下的文件与导入的/usr中的内容可能不再匹配,考虑重装dpkg中记录的所有程序(
sudo apt-get install --reinstall $(dpkg --get-selections | grep -v deinstall | awk '{print $1}')
),然后再重启系统
实施步骤
待救援系统以ubuntu-20.04.6-live-server-amd64.iso
发行版为例。
准备系统启动盘与存放usr.tar.gz
的存储盘
参考:http://t.csdnimg/yGiJg
使用Rufus工具制作启动盘
- Rufus官网
- 清华大学镜像源
由于我们需要使用Try Ubuntu
系统,所以需要选择对应发行版的desktop桌面版,服务器版的没有内置Try Ubuntu
。
准备usr.tar.gz
存储盘
可以考虑在虚拟机中安装ubuntu-20.04.6-live-server-amd64.iso
发行版,装一些基础软件(如ssh
)后再将其/usr
目录打包为usr.tar.gz
。
# 在root用户或sudo权限下执行打包压缩命令
sudo tar -zcvf ~/usr.tar.gz /usr
存储盘同样也可以选择U盘,接入虚拟机后直接将准备好的usr.tar.gz
拷贝到U盘中。
至此恢复前的准备工作就做完了。
补充说明:应该是有方法将usr.tar.gz
和桌面版镜像一起做到启动盘中,有兴趣的读者可以去了解下。
BIOS设置与Try Ubuntu
系统的使用
BIOS设置
上图为VMWare虚拟机中的BIOS设置,CD-ROM Drive
应该是光盘等启动介质,Removable Devices
应该是U盘、SD卡等可移动介质。
真实的设备也有类似的BIOS配置选项,可以根据设备的使用说明书或在搜索引擎中搜索设备型号的BIOS设置方法。可能与上图这种界面差异会比较大,但一般都能够找到设置启动介质的地方。
进入Try Ubuntu
写文档的电脑里没有20.04.6
的桌面版系统,下载需要4.1G
,有点大。索性就用18.04.1
的桌面版Try Ubuntu
来演示。
需要注意的是,这个场景下我们救援系统主要只涉及文件的操作(拷贝、解压),如果涉及到驱动处理
、磁盘分区处理
、Grub救援
等操作,用相匹配的Try Ubuntu
可能会比较好。
在Try Ubuntu
系统挂载待修复系统的根目录与存储盘
挂载操作
这里可以看到,系统已经自动将存储盘挂载到了/media/ubuntu/KINGSTON
目录。
# 创建挂载点目录,挂载待修复系统根目录
sudo mkdir -p /mnt/my_root
sudo mount /dev/mapper/ubuntu--vg-ubuntu--lv /mnt/my_root
输入mount
命令,可以看到待救援系统根目录与存储盘均已挂载完成。
拷贝存储盘中的usr.tar.gz
到待修复系统根目录并解压
进行解压操作:
sudo tar -zxf usr.tar.gz
可以看到usr
恢复后,之前红色的软链接此时也有正确链接的目标。
重启后启动待修复的主系统并处理dpkg包状态与/usr不一致问题
重启后,看到了熟悉的窗口,接下来就是处理dpkg包状态与/usr不一致问题。
这里可以看到,输入gcc指令时,系统提示我们进行安装,但通过dpkg --get-selections | grep gcc
,dpkg已经认为安装了gcc。
dpkg
是 Debian 系列 Linux 发行版(如 Ubuntu)中的包管理工具,用于安装、卸载、查询和管理 .deb
包文件。这里需要通过它来处理待救援系统中记录的已安装package与拷贝过来的/usr中内容不匹配问题(记录中xxx应用或lib库已安装,但拷贝过来的/usr中实际没有)。
重新安装dpkg中状态为install
的package:
# 重新安装所有已安装的包
sudo apt-get install --reinstall \
$(dpkg --get-selections | grep -v deinstall | awk '{print $1}')
# 清理和修复系统
sudo apt-get autoremove
sudo apt-get clean
sudo apt-get install -f
sudo dpkg --configure -a
删除/usr之前通过dpkg --get-selections
导出的包信息与恢复后重装所有包后的导出信息没有太大差异,前面不能使用的gcc
指令也完成了恢复,至此应该算是成功完成了救援。
其他
删除/usr的系统
Try Ubuntu
补充说明
在ubuntu14桌面版的Try Ubuntu
挂载Kali-Linux
的根目录到/mnt/kali_root
目录。看来只是进行简单的文件操作时,其实不是很在意Try Ubuntu
的版本,只要能够将待修复系统的根目录挂上来,执行需要的文件处理操作即可。Try Ubuntu
比较类似于Windows系统安装过程中有时会用到的微PE
,用于提供了一个轻量、但具备基本功能的操作系统供我们使用。
顾名思义,Try Ubuntu
本意是试用的Ubuntu系统。用来救援一个无法正常使用的系统,还真是一个巧妙的运用。
ubuntu系统在丢失/usr时自动进入了initramfs
这个临时系统也有一些基础指令,看起来似乎都不需要Try Ubuntu
就能恢复。
待救援系统根目录被默认以read-only的方式挂载到了/root
。
以可读可写方式重新挂在待救援系统根目录:
mount -o remount,rw /dev/mapper/ubuntu--vg-ubuntu--lv /root
挂载包含usr.tar.gz
的存储盘:
通过插拔U盘来查看它对应到哪个块设备。
# 挂载存储usr.tar.gz的U盘
mkdir -p /mnt/usr_dir && mount /dev/sdb1 /mnt/usr_dir
突然发现initramfs
没有提供tar
指令,看来要用这种方式去修复/usr
,得直接把/usr
给拷贝到存储盘中,不能去压缩它。不过这样处理,也不知道文件权限这些会不会丢失。
参考文章
- 江湖救急 : CentOS7.5 /usr 目录误删, 恢复操作._centos7 根目录不小心删除了-CSDN博客
- Ubuntu系统误删内核后修复方法_ubuntu 修复-CSDN博客
- 手一抖,我删除了etc目录 | 土豆不好吃
- 误执行 rm -fr /* 别急来看看怎么恢复-IT技术资讯
- ubuntu系统崩溃,甚至Recovery模式和tty都无法进入,这个方法可以救援!_try ubuntu-CSDN博客
- 虚拟机里的Ubuntu18.4启动时进入到grub rescue救援模式(无法正常进入到系统),ls查看后只有一个硬盘和分区,且无法找到/boot/grub文件【已解决】-CSDN博客
- 真没想到,vmware进入 bios设置 的方法是这样的_vmware bios-CSDN博客
版权声明:本文标题:ubuntu系统误删usr后的救援处理 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1726195441a1059987.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论