Debian Lenny 系统上的常规文件系统检查触发了 fsck,并且摧毁了层次结构中的少数链接/etc/rc?.d
(不幸的是我没有保留列表)。
系统似乎可以正常启动和运行,但我担心它会为未来埋下隐患。
有没有一种简单(相当自动化)的方法来重建系统的这一部分?据我了解,链接通常由使用 update-rc.d 的包 postinst 脚本来操作(并且我没有对已安装的默认值进行任何更改)。
如果没有更好的想法,我的计划如下:
- 将列表与另一个类似的系统进行比较,以确定哪些包需要修复其链接。
- 等到系统升级到 Squeeze(希望不要太久:^)并假设大规模包升级将恢复所有缺失的链接。
答案1
如果您没有备份,您可以尝试安装rcconf
并查看它是否会重新创建链接。但实际上,所有 Debian init 文件都会在每个脚本的顶部包含以下信息:
### BEGIN INIT INFO
# Provides: inetd
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Should-Start: $syslog
# Should-Stop: $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start or stop the xinetd daemon.
### END INIT INFO
仅基于这些信息,您就可以部分使用一些基本的 shell 脚本恢复所有内容。
# Default-Start: 2 3 4 5
告诉您此初始化脚本的 Start 符号链接应该进入/etc/init{2,3,4,5}.d/S<XX>blah
。
# Default-Stop: 0 1 6
意思是杀死链接进入/etc/init{0,1,6}.d/K<XX>blah
。
问题在于这个<XX>
部分。这是进程启动和停止的顺序,因此如果您不知道顺序,则可能会导致启动挂起。例如,当您尝试在网络之前启动 NFS 时。