在 /etc 中發生錯誤更改後,Raspbian 啟動到 root@(none) 提示符
在嵌入可愛的 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 風格的問題,我很確定還有另一種命令行方法可以從這種愚蠢中恢復……
如果您有
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