Linux

在 /etc 中發生錯誤更改後,Raspbian 啟動到 root@(none) 提示符

  • March 15, 2015

在嵌入可愛的 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 風格的問題,我很確定還有另一種命令行方法可以從這種愚蠢中恢復……

如果您有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

引用自:https://unix.stackexchange.com/questions/190370