在可爱的 Raspberry Pi B 2 中嵌入的 Raspbian 3.18.7 ARMV71 GNU/Linux 下,当在/etc/init.d
具有明显损坏且愚蠢的文件的文件下配置一些“静默”选项时,出现以下症状:
- Linux 启动时有
root@(none)
提示, - 系统是一个“只读文件系统”,
- 大多数(如果不是全部)功能如果损坏。
该错误是 下的注释行/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+C和Ctrl+Z不起作用)。
mount -o remount,rw /
bash
现在您已准备好进行维修。
完成后,以只读方式重新挂载根文件系统(以及以读写方式挂载的任何其他文件系统),然后重新启动。
mount -o remount,ro /
reboot -f