我在 VirtualBox 上运行 Ubuntu 12.04。我试图用 rsyslog 创建一个中央日志服务器。在某个时候,我对 conf 文件进行了更改并尝试重新启动 rsyslog,但开始出现以下错误:
无法连接到 Upstart:无法连接到套接字 /com/ubuntu/upstart:连接被拒绝
根据这个问题的建议 http://ubuntuforums.org/showthread.php?t=1997229
我发出了以下命令
dpkg-divert --local --rename --add /sbin/initctl
ln -s /bin/true /sbin/initctl
但是这并没有解决问题,因为运行以下命令实际上并没有重新启动 rsyslog。
service rsyslog restart
所以我尝试通过以下方式撤消初始命令
dpkg-divert --local --remove /sbin/initctl
rm /sbin/initctl
但是删除 initctl 开始导致其他问题。所以我重新启动了机器,但机器无法正常启动。我进入恢复模式,在显示恢复菜单之前,它打印了/proc/self/fd/9: 5: /proc/self/fd/9: initctl: not found
。
有人知道我该如何恢复 initctl 吗?
编辑:我还使用 12.04 的 iso 映像启动了 VM 并进入恢复菜单,但是似乎没有办法恢复已删除的文件。
答案1
尝试重新安装 Upstart:
sudo apt-get --reinstall install upstart
否则,没有办法恢复丢失的二进制文件。initctl
与不同start
,stop
或者restart
是单独的可执行文件,而不是指向 init 本身的链接。
如果您没有连接,请查看您拥有的 Upstart 软件包的版本dpkg -l|grep upstart
,然后在另一台机器上手动将软件包下载到 USB 记忆棒上,然后从记忆棒上重新安装。所有依赖项都是正确的,因为您只是重新安装完全相同的版本。
答案2
我遇到了同样的问题,这就是我解决的方法,我的 ubuntu 14.04 开始正常启动。
- 获取实时 CD/USB,启动它并选择尝试 ubuntu 而不安装。
- CTRL+ALT+T 进入终端
- 复制/sbin/initctl文件从实时 CD/USB 复制到/sbin机器上安装的 ubuntu。
- sudo cp /sbin/initctl /media/ubuntu/你的 ubuntu 分区/sbin
笔记:将“你的 ubuntu 分区”替换为你原来安装 ubuntu 的分区。