昨晚我的 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
- 它没有给我任何种类的 shell
- 我尝试了 GRUB 菜单中的恢复项,但出现相同的错误
- 我也尝试将其添加
systemd.unit=rescue.target
为内核参数;但它也不起作用。
我怎么解决这个问题?
答案1
从您收到的消息中我们可以看出,最可能的原因是权限问题。此外,似乎/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
因为sh
它具有自动完成功能。
或者,您也可以不删除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
重新启动系统。