Ubuntu将无法启动:run-init:/ sbin / init:权限被拒绝和/ bin / sh:0:无法打开启动

昨晚我的Ubuntu 16.04一切都很好。 今天我试图打开它,它根本无法启动,抛出这些错误:

run-init: /sbin/init: Permission denied Target filesystem doesn't have requested /sbin/init. run-init: /sbin/init: Permission denied run-init: /etc/init: Permission denied run-init: /bin/init: No such file or directory /bin/sh: 0: Can't open splash 
  • 它没有给我任何forms的壳
  • 我尝试了GRUB菜单中的恢复项,但出现了同样的错误
  • 我还尝试添加systemd.unit=rescue.target作为内核参数; 它也没用。

我怎么解决这个问题?

正如我们在您收到的消息中看到的那样,最可能的原因是权限问题。 似乎/sbin/init/etc/init存在,但/bin/init不存在。


摆脱/ bin / sh:0:无法打开启动画面

首先,我们应该得到一个shell来解决问题。 摆脱/bin/sh: 0: Can't open splash并获取shell:如果你只安装了Ubuntu(默认情况下不会出现GRUB),系统启动时按住shift键使GRUB出现。 然后在默认菜单上按E.

你会发现一个以Linux开头的行。 在该行删除splash参数,然后按Ctrl + x ,现在您将被放入sh shell。 如果你愿意,运行/bin/bash来获取bash shell。 我更喜欢bash over sh因为它具有自动完成function。

或者,不是删除splash参数,而是可以在该行的末尾添加init=/bin/bash ,然后按Ctrl + x ; 这次我们将被放入bash而不是sh


修复run-init:/ sbin / init:权限被拒绝

跑:

 ls -lH /sbin/init 

它应该产生类似的东西:

 -rw-r--r-- 1 root root 1577000 Feb 15 12:20 /sbin/init 

我们可以看到权限搞砸了。 在几乎所有系统中,这些天/sbin/init是一个指向systemd的链接,只是为了确保:

 # ls -l /sbin/init -rw-r--r-- 1 root root 1577000 Feb 15 12:20 /sbin/init -> /lib/systemd/systemd 

当然是,你的/ (根)文件系统挂载在ro状态(只读),让我们把它改为rw (读写):

 # mount -o remount,rw / 

然后修复权限:

 # chmod u=rwx,g=rx,o=rx /lib/systemd/systemd 

重新启动系统。