systemd を使用してデスクトップに自動ログインするにはどうすればよいですか?

systemd を使用してデスクトップに自動ログインするにはどうすればよいですか?

ログイン マネージャーを使用せずにデスクトップ環境に自動的にログインするように systemd を構成するにはどうすればよいでしょうか? Arch Linux を使用しています。

答え1

これについては、アーチウィキ:

に似た新しいサービスファイルを[email protected]コピーして作成します。/etc/systemd/system/

cp /usr/lib/systemd/system/[email protected] /etc/systemd/system/[email protected]

これは基本的に、既存のファイルを自由に変更できる[email protected]新しいファイルにコピーします。 にコピーされるのは、サイト固有のユニット ファイルが格納されているからです。 にはパッケージによって提供されるユニット ファイルが含まれているため、何も変更しないでください。[email protected]/etc/systemd/system/usr/lib/systemd/system

[email protected]次に、自動ログインする tty の getty サービスにシンボリックリンクを作成する必要があります(例: tty1)。

ln -s /etc/systemd/system/[email protected] /etc/systemd/system/getty.target.wants/[email protected]

ここまでは通常の[email protected]ファイルと同じですが、最も重要な部分は、[email protected]実際に自動的にログインできるように変更することです。そのためには、ExecStart次の行を変更するだけです。

ExecStart=-/sbin/agetty -a USERNAME %I 38400

ExecStartの行[email protected]との行の違いは、 agetty にユーザー名 USERNAME のユーザーを自動的にログインするように指示する[email protected]のみです。-a USERNAME

これで、systemd にデーモン ファイルをリロードしてサービスを開始するように指示するだけです。

systemctl daemon-reload
systemctl start [email protected]

(すでに tty1 にログインしている場合、サービスが適切に開始されるかどうかはわかりません。最も安全な方法は、サービスを開始するのではなく、再起動することです)。

Xを自動的に起動したい場合は、次のスニペットを~/.bash_profileウィキまた):

if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
    exec startx
fi

デスクトップ環境を起動するには、を変更する必要があります。~/.xinitrcその方法は DE によって異なり、ArchWiki にも記載されている可能性があります。

答え2

私の意見では、アーチウィキ現在は、よりシンプルな解決策を推奨しています。

ヘルパー ( systemctl edit getty@tty1) を実行するか、手動で実行した操作を実行します。

mkdir -p /etc/systemd/system/[email protected]/
touch /etc/systemd/system/[email protected]/override.conf

どちらの方法でも入力したいテキストは(必ず変更してくださいユーザー名適切に):

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

注記: 空行は重要です。空行はまず ExecStart エントリをクリアし、次の行で新しい exec コマンドを導入します。

ここで、()を再起動すると、ユーザー名/パスワードの入力を待ってブロックされていた箇所で、shutdown -r 0次のようなことが起こります。... login: username (automatic login)


再起動して自動的にログインしたら、私と同じように今すぐこのシステムに SSH で接続したい場合は、おそらく次のコマンドを実行する必要があります。

systemctl enable sshd.service

シンボリックリンクを作成します(例ln -s '/usr/lib/systemd/system/sshd.service' '/etc/systemd/system/multi-user.target.wants/sshd.service'

答え3

ファイル(へのシンボリックリンク)を直接変更します。/etc/systemd/system/getty.target.wants/[email protected]/lib/systemd/system/getty@service

-a/--autologin USERNAME次の行に追加します:

ExecStart=-/sbin/agetty --noclear %I $TERM

したがって:

ExecStart=-/sbin/agetty -a USERNAME %I $TERM

また、(現在の Arch インストールに存在する) を削除することもできます。-o '-p -- \\u'これにより、ログインが開始されますUSERNAMEが、パスワードが要求されます。

再起動後、自動的にログインされます。

追伸ログインしたいファイル名[email protected]に変更します。tty

答え4

また、指定されたユーザーを自動的にログインできる (get tty) コマンドを使用することもできます。gettyの引数はまたはのgettyいずれかになります。私は Linux Debian Ubuntu を実行しているので、このコマンドが他のディストリビューションで使用できるかどうかはわかりません。--autologin-a

getty -a <user>

関連情報