/etc 发生错误更改后,Raspbian 启动至 root@(none) 提示符

/etc 发生错误更改后,Raspbian 启动至 root@(none) 提示符

在可爱的 Raspberry Pi B 2 中嵌入的 Raspbian 3.18.7 ARMV71 GNU/Linux 下,当在/etc/init.d具有明显损坏且愚蠢的文件的文件下配置一些“静默”选项时,出现以下症状:

  1. Linux 启动时有root@(none)提示,
  2. 系统是一个“只读文件系统”,
  3. 大多数(如果不是全部)功能如果损坏。

该错误是 下的注释行/etc/init.d/dphys-swapfile,应该按原样。现在编辑它们是不可能的。

当然,原始文件的备份在那里,在<filename>_bkp名称下,但系统是只读的,并且重命名命令都被禁用。

如何编辑这些init.d文件下的“攻击性”行,或恢复备份文件,或在恢复模式下启动?

Raspberry Pi 交换解决方案都是“擦除并重新安装”类型,但这是一个更具 Linux 风格的问题,我很确定存在另一种命令行方法来从这种愚蠢中恢复......

答案1

如果出现root@(none)提示,那么您已经非常接近恢复了:您已经有了 root shell。恢复最困难的部分通常是找出问题所在,但如果您有正确文件的备份,那应该很容易。

您应该做的第一件事是安装几个文件系统。它们可能是必要的,也可能不是必要的,具体取决于您需要做什么,但它们不会造成伤害。

mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t devpts devpts /dev/pts
mount -t tmpfs -o mode=1755 tmpfs /tmp
mount -t tmpfs -o mode=1755 tmpfs /run

如果您没有/run(我不知道您的 Raspbian 版本中是否存在),请忽略该行。如果你没有/dev/pts,那就是你错过了更多东西的征兆/dev;我认为这表明您的系统内置了 devtmpfs,因此您应该运行mount -t devtmpfs devtmpfs /dev.

您还需要以读写方式重新挂载根文件系统。然后启动一个新的 shell(您获得的 shell 是进程 ID 1,这会导致一些信号处理奇怪,特别是使Ctrl+CCtrl+Z不起作用)。

mount -o remount,rw /
bash

现在您已准备好进行维修。

完成后,以只读方式重新挂载根文件系统(以及以读写方式挂载的任何其他文件系统),然后重新启动。

mount -o remount,ro /
reboot -f

相关内容