进一步阅读

进一步阅读

我有一个 gentoo 系统,它使用 systemd、自定义内核、自定义 initramfs 和自定义 init 脚本。这个系统正在发挥作用。现在却没有了。显然一定有什么改变了,但我不知道是什么。

当 init 脚本启动 init 系统 ( exec switch_root /mnt/root /var/lib/systemd/systemd) 时,出现以下错误:

Welcome to Gentoo/Linux!

[!!!!!!] Failed to isolate default target, freezing.

这个错误是什么意思?我可以做什么来解决它?

答案1

用系统术语来说,隔离单位是一种稍微特殊的形式开始或者激活它,大多数情况下(尽管我会回到这一点)被视为与激活相同。 bootstrap 中的 systemd 根据系统是否在紧急、救援或正常模式下启动来隔离三个目标之一。前两个由传递给第一个进程的内核命令行上的-b和指定,并分别隔离和。正常模式隔离该单元,这是一个-semergency.targetrescue.targetdefault.target别名(用systemctl set-default)设置其他一些具体目标,例如graphical.targetmulti-user.target。未能隔离第一个单元(其他所有单元都从中流动)是一个相当严重的错误,当发生这种情况时,systemd 会发出一条消息并冻结。

不可隔离是default.target不寻常的,它暗示了一些严重的错误配置(例如屏蔽的人sysinit.target)或非常不寻常的设置(例如违反了 systemd 前提之一,例如/usr/etc以下文件系统相同,或者至少与, 一起安装/)。对此的诊断进一步涉及前述的紧急情况和救援模式。只需引导进入那些模式而不是正常模式,然后手动启动default.target设备,查看发生的情况、发生的错误以及日志中的内容。这就是隔离和激活之间的区别很重要的地方。一必须不是isolate default.target,因为这会关闭紧急/救援模式登录会话,作为隔离设备的一部分。一必须开始它。

我好像还有一段闲着。

进一步阅读

答案2

为了理解为什么我的系统无法启动,我主要遵循了@CodyCreager 的建议。我添加了--log-level=debug和,--log-target=consoleexec switch_root ...达到了预期的效果。我不知道如何达到与添加systemd.journald.forward_to_console=1到内核参数相同的效果。但我没有这样做就获得了足够的信息。

至于为什么我的系统无法启动......这对任何人都没有帮助。我在 initramfs 中执行自定义操作,并使用 systemd 设置执行自定义操作,但 systemd 对此并不满意。具体来说,我正在使用加密的文件系统,但我无法让 systemd 弄清楚这一点。

相关内容