误删大量驱动与系统组件后,无网络环境下如何通过USB重装恢复?
误删大量驱动与系统组件后,无网络环境下如何通过USB重装恢复?
兄弟,这情况我太懂了——autoremove手滑删了一堆关键组件,连网络管理都没了,还碰上个加密硬盘不能直接挂载,简直要命!别慌,咱们一步步来把系统救回来:
第一步:准备匹配版本的Live USB
首先确保你的Live USB和受损系统是同一发行版同一版本(比如都是Ubuntu 22.04 Jammy),不然包版本不兼容只会添乱。插好Live USB,重启到你的受损系统(不是Live环境哦)。
第二步:解密并挂载你的加密系统分区
因为是加密硬盘,得先解锁才能操作:
- 先找出你的加密分区:
找带lsblkcrypt标识的分区,一般是/dev/sda2或者类似的,记下来。 - 解密分区:
输入你的加密硬盘密码,解锁后会生成sudo cryptsetup luksOpen /dev/[你的加密分区名] cryptroot/dev/mapper/cryptroot这个设备。 - 挂载根分区到
/mnt:sudo mount /dev/mapper/cryptroot /mnt - 挂载系统必需的虚拟目录,保证chroot后能正常操作:
sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys
第三步:挂载Live USB的存储分区
现在把Live USB的内容挂进来:
- 先找Live USB的设备:
一般是lsblk/dev/sdb1(注意别和你的系统分区搞混)。 - 创建挂载点并挂载:
sudo mkdir /mnt/usb sudo mount /dev/sdb1 /mnt/usb
第四步:chroot到受损系统,开始恢复
chroot相当于把你的操作环境切换到受损系统里:
sudo chroot /mnt
现在你就相当于在自己的系统里操作了,接下来有两种恢复方式:
方式一:直接用Live USB里的deb包安装
Live USB里自带了很多基础包,找到对应的deb文件安装:
- 比如找network-manager的包,路径大概是:
/usb/pool/main/n/network-manager/ - 直接用dpkg安装:
如果出现依赖报错,先看提示里缺什么包,去对应的目录找了先装依赖,再装主包。dpkg -i /usb/pool/main/n/network-manager/network-manager*.deb
方式二:临时把Live USB当APT源用
这种方式更省心,能自动解决依赖:
- 编辑系统的源列表:
nano /etc/apt/sources.list - 加一行Live USB的本地源(把
focal换成你的系统版本代号,比如jammy):deb file:///usb focal main - 更新源并安装需要的组件:
把你被删掉的其他组件(比如network相关工具)也一起列在后面安装就行。apt update apt install network-manager gnome-settings-daemon
第五步:收尾并重启
恢复完之后:
- 退出chroot环境:
exit - 依次卸载挂载的目录:
sudo umount /mnt/usb sudo umount /mnt/dev sudo umount /mnt/proc sudo umount /mnt/sys sudo umount /mnt - 关闭加密分区:
sudo cryptsetup luksClose cryptroot - 重启系统,应该就能正常使用网络和设置了!
补充小技巧
- 不知道哪些包被删了?去看
/var/log/apt/history.log,里面有autoremove的完整记录,把那些包名抄下来一起安装就行。 - 如果Live USB里的包不全,找另一台能上网的机器,下载对应版本的deb包(要和系统版本严格匹配)放到USB里,再重复上面的步骤安装。
备注:内容来源于stack exchange,提问作者cbrng
相关产品推荐
相关产品推荐

