私はsystemd、カスタムカーネル、カスタムinitramfs、カスタムinitスクリプトを使用するGentooシステムを持っています。システムが稼働中です。これ以上ではありません。明らかに何かが変わったようですが、何かはわかりません。
initスクリプトがinitシステム(exec switch_root /mnt/root /var/lib/systemd/systemd
)を起動すると、次のエラーが発生します。
Welcome to Gentoo/Linux!
[!!!!!!] Failed to isolate default target, freezing.
このエラーはどういう意味ですか?問題を解決するにはどうすればよいですか?
答え1
システム用語では、分離単位は少し特別な形態です。スタートまたは活性化これはほとんどの場合(後でもう一度説明しますが)アクティブ化と同じように扱われます。ブートストラップのsystemdは、システムが緊急モード、構造モード、または通常モードで起動されているかどうかに応じて、3つのターゲットのうちの1つを分離します。最初の2つは、最初のプロセスに渡されたカーネルコマンドラインで、およびで指定され、それぞれと-b
分離されます。通常モードはデバイスを切り離します。-s
emergency.target
rescue.target
default.target
ニックネーム()を使用して、またはsystemctl set-default
などの他の特定の目標を設定します。他のすべてのデバイスが流れる最初のデバイスを切り離すことができないのはかなり深刻なエラーです。これが発生すると、systemdはメッセージをエクスポートして停止します。graphical.target
multi-user.target
切り離すことができないことはdefault.target
珍しいことです。これは、重大な設定エラー(たとえば、ブロックされた人sysinit.target
)または非常に珍しい設定(たとえば、システム前提条件の1つ違反、たとえば/usr
同じ/etc
ファイルシステム、または少なくとも一緒にインストールされている/
)を示します。これを診断するには、前述の緊急モードと救助モードがさらに必要です。ただ起動してくださいそれら通常モードではなくモード手動デバイスを起動しdefault.target
、何が起こったのか、どのようなエラーが発生したのか、ログの内容を確認してください。ここでは、分離と活性化の違いが重要です。必須いいえdefault.target
これは、デバイスを分離する過程で緊急/構造モードのログインセッションが閉じられるためです。必須スタートそれ。
ちょっとゆったりとした時間を持っているようです。
追加読書
答え2
私のシステムが起動しない理由を理解するために、ほとんど@CodyCreagerのアドバイスに従いました。私は--log-level=debug
andを追加しましたが、--log-target=console
これがexec switch_root ...
望む効果を出しました。systemd.journald.forward_to_console=1
カーネルパラメータを追加するのと同じ効果を得る方法がわかりません。しかし、そうしなくても十分な情報を得ました。
私のシステムが起動しない理由は誰にも役に立ちません。 initramfsでカスタムアクションを実行し、systemd設定を使用してカスタムアクションを実行していますが、systemdはこれに満足していません。特に暗号化されたファイルシステムを使用していますが、それを見つけるためにシステムを構築することはできません。