如何修复安装,意外删除了 /sbin/initctl

如何修复安装,意外删除了 /sbin/initctl

我在 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与不同startstop或者restart是单独的可执行文件,而不是指向 init 本身的链接。

如果您没有连接,请查看您拥有的 Upstart 软件包的版本dpkg -l|grep upstart,然后在另一台机器上手动将软件包下载到 USB 记忆棒上,然后从记忆棒上重新安装。所有依赖项都是正确的,因为您只是重新安装完全相同的版本。

答案2

我遇到了同样的问题,这就是我解决的方法,我的 ubuntu 14.04 开始正常启动。

  1. 获取实时 CD/USB,启动它并选择尝试 ubuntu 而不安装。
  2. CTRL+ALT+T 进入终端
  3. 复制/sbin/initctl文件从实时 CD/USB 复制到/sbin机器上安装的 ubuntu。
  4. sudo cp /sbin/initctl /media/ubuntu/你的 ubuntu 分区/sbin

笔记:将“你的 ubuntu 分区”替换为你原来安装 ubuntu 的分区。

相关内容