SDB:应急模式

跳转至: 导航, 搜索

测试版本

推荐条目

Icon-manual.png

{{{2}}}

相关条目

Icon-help.png

{{{3}}}


本文章教您如何在应急模式下修复系统。

情景

当您的硬盘分区发生了错误,尤其是 /boot 和 /root 发生错误时,openSUSE 将启动到应急模式。


规程

确定无错

使用 Ctrl + D 正常启动,或使用 root 登录后输入:

shutdown -r now

重启。

有时 shutdown 无法工作,可使用电源按钮

硬盘分区出错

在应急模式的命令行提示语中,会告诉您是哪个分区出现了错误,比如 /dev/sda2

若该分区为 ext4 格式

使用:

fsck.ext4 /dev/sda2 

修复分区,然后重启进入正常模式

若该分区为 btrfs 格式

使用:

fsck.btrfs /dev/sda2

修复分区,然后重启进入正常模式。

另外如下两种方式也可以有所帮助:

修复死的超锁定

如果超锁定损坏(通过 fsck.btrfs 检测),请先询问 btrfsck 是否允许使用超锁定的其它副本而不是默认的超锁定 #0。可以使用:

# ./btrfsck -s 2 /dev/sd2

来做。

要是 btrfsck 同意,接下来使用 btrfs-super-select 来恢复默认超锁定 (副本 #0)

# ./btrfs-super-select -s 2  /dev/sda2
注意: 这会覆盖磁盘分区中所有的超锁定,您只有一次机会。要是您在找出哪个副本是好的之前就用掉了机会,那您就失去了找到好的副本的机会,即使有好的副本也用不了了,因此请一定先运行 btrfs -s 测试。

清空 BTRFS 日志

这只在一种情况下有效!

3.4.4 上测试通过

如果您在强行关机、系统崩溃或断电后,无法挂载 btrfs 分区,可能是由于 3.2 版本以前内核的错误日志导致的。首先应该尝试升级或重装内核软件包,然后挂载,这是对新手来说最简单的办法。如果这么做不行,一种替代办法是清理 btrfs 日志,但只有您在 oops 调用堆栈中看到 "replay_one_*" 函数时才能这么做。

要清理 btrfs 分区日志 (因此也会丢失所有只存在于日志中的更改), 请使用:

# ./btrfs-zero-log /dev/sda2

这不是一个通用技术,工作时会永久性抛弃一部分可能好的数据。

参考

外部链接