好吧,如果有人想扮演上帝并创造奇迹,我就失望了。
所以,我的任务是制作一个脚本,找到超过 6 个月的文件,压缩它们然后删除它们。在制作 tihs 脚本的过程中,我运行了这个:
find / -type f -mtime -400 ! -mtime -180 | xargs gzip blablabla
这给了每个文件一个 .gz 扩展名。现在我一注意到就解开了它,但为时已晚。命令完成后,我的 bash 命令都不起作用,因为 $PATH 变量自己清空了。在意识到问题所在之前,我尝试了很多东西。
所以在解压缩所有东西时我仍然无法启动。我已经成功地进行了 grub 救援,之后我按照在线说明进行了以下操作:
root (hd0,0)
setup (hd0)
kernel (hd0,0)/boot/vml[...]
initrd (hd0,0)/boot/initrd.im[...]
之后我的 linux 部分启动但给了我以下错误:
Begin : Running /scripts/init-bottom ... mount : mounting /dev on /root/dev failed : No such file or directory
mount: mounting /sys/ on /root/sys failed: No such file or directory
mount: mounting /proc on /root/proc failed : No such file or directory
Target filesystem doesn't have requrested /sbin/init.
No init found. Try passing init= bootarg.
我尝试修复文件系统,我从 3 个不同的 LiveCD/救援磁盘启动,我从 2 个不同的 dicsc 运行启动修复。我确实强制 fscks ......
我真的没有想法,我需要让这台服务器至少启动,这样我才能恢复我的 SQL 数据库。我迫切需要帮助,如果需要,我什至会付钱。
我整天都在论坛里潜伏了 3 天,以寻找可能的解决方案,但我仍然在同一点上......请帮忙?
我要尝试的第一件事是运行 LiveCD 环境并尝试解压缩所有内容,希望这会使系统恢复到可启动状态。注意:如果原始 gzip 进程被中断,我会担心潜在的数据损坏。
否则,我会尝试按照其他人的建议将数据库迁移到新系统,但正如您所遇到的那样,可能存在需要单独解决的劳动密集型依赖和配置问题。
这将取决于文件系统是否已修复到足以让您能够从 LiveCD 挂载这些分区。不要费心尝试启动系统。首先,挂载分区并解压缩所有 .gz 文件。这将为您提供 init 和系统二进制文件的工作副本。然后你可以使用 grub 来修复引导扇区。然后引导到单用户模式并再次 fsck 文件系统。如果可行,您将拥有一个正在运行的系统。您还会有一堆真正应该压缩的解压缩文件(如手册页),但这比拥有一个无法启动的系统要好。
如果您无法从 LiveCD 挂载分区,那么您很不幸。那时没有任何东西可以恢复您的系统。
这里的普遍共识是,您应该将磁盘安装在工作系统中并拯救您的文件,这并没有错。这是明智的做法。但另一种方式更有趣,也很有教育意义。在摆脱其他人会放弃并从头开始重新安装的混乱情况时,我学到了很多东西。(虽然不在其他人所依赖的服务器上......)
无论如何,到目前为止你有一个运行的 initramfs(initrd)。这是一个好的开始。但它无法完成向 init 的切换,因为 init 现在
init.gz
可能是?为了取得任何进展,准确了解您拥有的 Linux 发行版会有所帮助,因此我们可以查看其 initramfs 中有哪些工具可用于紧急使用。您提供的错误消息看起来可能来自 Debian 的 initramfs。如果是 Debian,那么你应该
(initramfs)
在最后一个错误之后的下一行得到一个 shell 提示。如果你这样做了,你应该看看那些失败的坐骑是怎么回事。失踪/root/dev
了吗?(/root
是在运行 initramfs 期间应该挂载您的正常根 fs 的位置)如果您没有得到 shell 提示,那么接下来的内容
No init found. Try passing init= bootarg.
将会很有趣。即使它只是一个闪烁的光标,那也是一个线索。如果它看起来完全冻结,请尝试使用魔法 sysrq 或 Ctrl+ScrollLock 获取有关仍在运行的进程的一些信息。break=
Debian initramfs 还允许您通过向内核命令行添加参数来在一些特殊地标处请求 shell 。例如,要在该Running /scripts/init-bottom
行之前获取一个 shell,请使用break=bottom
.旁白:我不知道该
find
命令如何压缩每个文件...对于选择 180 到 400 天之间的文件来说,它看起来是正确的。