起動時にバックグラウンドでdhcpcdを起動する方法は?

起動時にバックグラウンドでdhcpcdを起動する方法は?

Arch Linuxで次のことをしたいと思います。起動時にバックグラウンドでdhcpcdを起動し、自動的にログインしてX Window Serverを起動します。

これまで私が試したことは次のとおりです。まず、次のコマンドを使用して自動ログインを有効にしました。作品に入れるgetty@tty1へ:

[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin username --noclear %I $TERM

exec startxまた、.bash_profileファイルにも追加しました。これにより、起動時にログインしてXを起動できました。

次に、systemctl:を使用してdhcpcdサービスを有効にしました。 (enp4s0は私のイーサネットポートです。)dhcpcdが正常に起動した後にログインしました。ただし、接続中はログインプロンプトが10秒程度遅れて少し迷惑です。 X環境を見ると、dhcpcd接続がバックグラウンドで発生したいと思います。sudo systemctl enable [email protected]

そのため、次のコードスニペットを実行して生成し、After=getty@tty1dhcpcdサービスファイルに追加しました。sudo systemctl edit [email protected]

[Unit]
[email protected]

その後、起動時にログイン画面が表示されなくなり、ログを確認するとsystemdが依存関係のサイクルを検出し、gettyが起動していないことがわかります。

おそらく、これはgettyが作業順序で最後に始まるという意味の「idle」タイプであるためです。だからType=simplegettyサービスファイルに設定しました。ただし、権限のないユーザーは起動時にログインを許可されず、ログインプロンプトが表示されないというエラーが発生します。どうすればいいのか分かりません。

1つの解決策はbash_profileにdhcpcdを置くことであることに気づきました。しかし、systemdだけを使って欲しいものを達成する方法はありますか?将来的には、この方法で他のサービスを実行したいと思うかもしれませんし、bash_profileを台無しにしたくありません。

ベストアンサー1

上で答えを見つけました。アーチスウィキ

解決策は、次のdhcpcdコードスニペットを使用することです。

[Service]
ExecStart=
ExecStart=/usr/bin/dhcpcd -b -q %I

これ-bフラグはバックグラウンドでdhcpcdを開始します。、および-qは、出力が端末を汚染しないように「静かに」します(エラーと警告を除く)。

デフォルトでは、dhcpcdはこの型を持ち、forking-wフラグと一緒にsystemdによって呼び出されます。 -wフラグはIPを取得する前に分岐するのを防ぎ、Type = forkingなので、バックグラウンドに置かずにそのタスクが発生するまで起動プロセスを続けます。これには数秒かかります。これは約10秒の開始遅延を説明します。 -bを使用すると、すぐにバックグラウンドに移動してこの遅延を回避できます。

おすすめ記事