通过 chroot 解决 Linux 系统无法启动的问题

这篇博客讲述了博主为了安装 sqlite3,不小心删了 boot 目录下的内核,还重启系统。结果重启失败,通过 Ubuntu 安装 U 盘和 chroot 修复的故事。

想在学校的服务器上装一个 sqlite3,被告知之前一次更新内核由于 boot 目录满了,没有更新成功,需要完成内核的更新才能进行其它软件的安装。我一看 boot 分区里已经有了很多版本的内核,想都没想就把旧版本的内核 mv 到了 home 目录下,只在 boot 中留了最新版本的内核,然后执行 update-grub 命令再重启,BOOM,系统开不起来了...刚刚才提示的上一次内核更新没有完全结束,怎么会脑子一抽只留不完整的最新内核呢!

 

一、修复过程

没办法,只好带了一个 Ubuntu 的安装 U 盘跑去机房。用 U 盘启动后,选择“试用 Ubuntu”进入 liveCD(或者应该叫 liveUSB?)。幸好之前把旧版本的内核在 home 目录下备份了,把完整的旧内核复制回 boot 目录,执行 update-grub 后,得到了错误提示:

/usr/sbin/grub-probe: error: failed to get canonical path of `aufs'.

上网搜索了一下,aufs 是一种特殊的文件系统,liveCD 里有用。原来我们执行 update-grub 的环境是在 liveCD 中,而不是我们要修复的硬盘上的系统,当然会报错。接下来我们就要通过 chroot 把环境转换到硬盘上的系统中,再重新安装 grub 并 update-grub 就能完成修复。

1. 挂载分区

为了 chroot 到硬盘上的系统中,首先需要挂载硬盘分区。通过  sudo fdisk -l  命令可以查看硬盘的分区情况,寻找 root 目录所在的分区。下面用我的虚拟机进行演示。我的虚拟机并没有给 boot 目录或者 usr 目录或者 var 目录一类的单独分区,而是全部划在一块硬盘分区里。执行 fdisk 后,可以看到以下输出:

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值