最小限のシステム起動で仮想コンソールでgettyを起動するには何が必要ですか?

最小限のシステム起動で仮想コンソールでgettyを起動するには何が必要ですか?

SysVの場合は、gettyエントリ、バイナリ、シェルバイナリと共有ライブラリ、PAM /security/shadowコンテンツ、および一部のデバイスファイルを再生成する必要がinitあります。/etc/inittab/sbin/initlogingetty

upstartほとんど同じ要件が必要ですが、必要ないため、/etc/inittab以下にいくつかの*.confファイルがあります。ランレベルを設定するため/etc/initの* .confと適切なランレベルReborn ttyで、そのttyの各boot /の* .confです。start on startuptelinitgetty

どの構成とバイナリが必要ですかsystemd init

私が見つけたすべての文書は、インストールされたシステムを使用してサービスを開始および停止する方法に焦点を当てたようです。

実行からコピーされた最小ファイルのリスト(kernel / initrdを除く)アーチまたはFedoraの帽子インストールはうまくいきますが、これに関する情報が見つからないようですsystemd


私が知りたいのは、initramfsから呼び出されるsystemdために必要なファイルと含める必要があるファイルです。switch_rootsystemd /sbin/init


upstartバイナリと2つのファイルの例*.conf

文書/etc/init/whatever.conf:

起動時に起動
ランレベル発行
仕事
スクリプト
  リモート初期化 2
最終スクリプト

文書/etc/init/tty1.conf:

ランレベルで始まる [12345]
更生
/sbin/agetty -8 --noclear 38400 tty1 linux の実行

はいsysvinit、バイナリと1つのconfファイル名は次のとおりです/etc/inittab

id:2:初期化デフォルト:
c1:12345:respawn:/sbin/agetty 38400 tty1 Linux

今、私はsystemd同等のものを探しています。

andを含む項目の1つがある場所に少なくとも*.service1つのファイルが必要であるとします。しかし、何が必要ですか?[Service]ExecStart=-/sbin/agetty --noclear %I linuxRestart=always

ベストアンサー1

まず、systemd伝統的なUnixではありませんinit。 Systemdははるかに多くの機能を持っているので、2つの比較は少し不公平です。

この質問に答えるには、いくつかのバイナリと次の設定ファイルが必要なようです。

/usr/lib/systemd/system/default.target
/usr/lib/systemd/system/basic.target
/usr/lib/systemd/system/sysinit.target
/usr/lib/systemd/system/getty.target
/usr/lib/systemd/システム/[Eメール保護]
/usr/lib/systemd/system/console-getty.service

次に、次のシンボリックリンクを生成するには、次のコマンドを実行します。systemctl enable console-getty.service [email protected]

/etc/systemd/system/default.target.wants/[Eメール保護]-> /lib/systemd/system/getty@service
/etc/systemd/system/getty.target.wants/console-getty.service -> /lib/systemd/system/console-getty.service

ノートsystemd:動的に起動して+を押したときに要求に応じて起動する特別な機能を利用するには、agetty少なくとも2つのファイルも必要です。AltF3

/etc/systemd/logind.conf
/lib/systemd/システム/[Eメール保護]

[email protected]シンボリックリンクはどこにありますか[email protected]

構成ファイルの内容:

フラグと(おそらく)を除いて、default.targetファイルgetty.targetは空である可能性があります。sysinit.target[Unit]Description=xxx

basic.target依存関係情報も含まれます。

[単位]
説明=基本システム
リクエスト=sysinit.target
希望=sockets.targettimers.targetpaths.targetslices.target
以降=sysinit.targetsockets.targettimers.targetpaths.targetslices.target

ファイルに存在しないターゲットへの参照が必要かどうかはわかりません。彼らはで説明されていますsystemd.special(7)マンページ。


console-getty.service:(コンソールでagettyの特別な場合)

[単位]
Description=ConsoleGetty
以降=systemd-user-sessions.service plymouth-quit-wait.service
前=getty.target

[提供する]
ExecStart=-/sbin/agetty --noclear --keep-baud コンソール 115200,38400,9600 $TERM
タイプ=アイドル
再起動=常に
再起動時間 = 0
UtmpIdentifier=デメリット
TTYPath=/dev/console
TTYリセット=はい
TTYVを壊す=はい
KillMode=プロセス
SIGPIPE無視=いいえ
SIGHUP=YES 送信

[インストールする]
WantedBy=getty.target

[email protected]:(コンソールを除くすべてのgettyサービスの共通設定)

[単位]
説明=%Iのゲッティ
以降=systemd-user-sessions.service plymouth-quit-wait.service
前=getty.target
検疫を無視=はい
条件付きパス存在=/dev/tty0

[提供する]
ExecStart=-/sbin/agetty --noclear %I $TERM
タイプ=アイドル
再起動=常に
再起動時間 = 0
Utmp識別子=%I
TTYパス=/dev/%I
TTYリセット=はい
TTYVを壊す=はい
TTYVT割り当て解除=いいえ
KillMode=プロセス
SIGPIPE無視=いいえ
SIGHUP=YES 送信

[インストールする]
WantedBy=getty.target
デフォルトインスタンス=tty1

最後に、いくつかの特別なバイナリが必要になることがあります(どれが重要かは試していません)。

/lib/systemd/systemd (/sbin/init は通常これを指します)
/lib/systemd/systemd-ログイン
/lib/systemd/systemd-cgroups-agent
/lib/systemd/systemd-ユーザー-セッション
/lib/systemd/systemd-vconsole-setup
/lib/systemd/systemd-update-utmp
/lib/systemd/systemd-睡眠
/lib/systemd/systemd-sysctl
/lib/systemd/systemd-initctl
/lib/systemd/systemd-reply パスワード
/lib/systemd/systemd-ac-power
/lib/systemd/systemd-有効化
/lib/systemd/systemd-バックライト
/lib/systemd/systemd-binfmt
/lib/systemd/systemd-bootchart
/lib/systemd/systemd-bus-proxyd
/lib/systemd/systemd-coredump
/lib/systemd/systemd-cryptsetup
/lib/systemd/systemd-fsck
/lib/systemd/systemd-ホスト名
/lib/systemd/systemd-ジャーナルド
/lib/systemd/systemd-journal-gatewayd
/lib/systemd/systemd-journal-remote
/lib/systemd/systemd-localed
/lib/systemd/systemd-machined
/lib/systemd/systemd-モジュール-ロード
/lib/systemd/systemd-multi-seat-x
/lib/systemd/systemd-networkd
/lib/systemd/systemd-networkd-wait-online
/lib/systemd/systemd-quotacheck
/lib/systemd/systemd-任意のシード
/lib/systemd/systemd-readahead
/lib/systemd/systemd-remount-fs
/lib/systemd/systemd-解決済み
/lib/systemd/systemd-rfkill
/lib/systemd/systemd-終了
/lib/systemd/systemd-shutdownd
/lib/systemd/systemd-ソケット-プロキシd
/lib/systemd/systemd-timedated
/lib/systemd/systemd-timesyncd
/lib/systemd/systemd-udevd
/lib/systemd/systemd-更新-完了

systemd起動プロセスを要約すると、次のように動作すると思います。

  1. basic.targetsystemdは(またはすべての*.targetファイルを?)探します。
  2. 依存関係は、および設定ファイルセクションの、、、WantedBy=...ディレクティブに基づいて解決されます。Wants=Before=After=[Install]*.service*.target
  3. *.service開始する必要があるサービス(「特殊」サービスではない)には、起動する実行可能ファイルを示す[Service]指示を含むセクションがあります。ExecStart=

おすすめ記事