Systemdを使用してログインしたときにXサーバーを起動する

Systemdを使用してログインしたときにXサーバーを起動する

私はこれが人々がXを使用する一般的な方法ではないことを知っています。ほとんどのインストール手順startxでは、シェルの設定ファイルに似たものを追加するように指示します。しかし、私は仕事を管理するためにシステムが欲しい。

理想的には、systemctl --user enable x.serviceユーザーがログインしてリソースをインポートすると、このようなタスクを実行して.xinitrcWMを起動します。

この操作を試みると、すべてエラーが発生します。

/usr/lib/xorg/Xorg.wrap: Only console users are allowed to run the X server

そこ〜しなければならないこれを行う1つの方法です。どんな助けでも大変感謝します。

答え1

次のコマンドを使用してX11から直接起動します。開始x、アクティブユーザーを自由に選択できます。https://vincent.bernat.ch/en/blog/2021-startx-systemd

Archlinuxガイドとは異なり、TTYxに自動ログインする必要はありません。これは直接グラフィックターゲットブートです。

組み込み/キオスク/セットトップボックスシステムでは、最小限の遅延で自動的に再起動されるようにサービスを変更しました。

[Unit]
Description=X11 session for bernat
After=graphical.target systemd-user-sessions.service

[Service]
User=bernat
WorkingDirectory=~

PAMName=login
Environment=XDG_SESSION_TYPE=x11
TTYPath=/dev/tty8
StandardInput=tty
UnsetEnvironment=TERM

UtmpIdentifier=tty8
UtmpMode=user

StandardOutput=journal
ExecStartPre=/usr/bin/chvt 8
ExecStart=/usr/bin/startx -- vt8 -keeptty -verbose 3 -logfile /dev/null
#Restart=no
Restart=always
RestartSec=3

[Install]
WantedBy=graphical.target

グラフィックターゲットを有効にすることを忘れないでください

sudo systemctl set-default graphical.target

私はDebianを使用してキオスクやセットトップボックスシステムなどの組み込みLinuxを作成するときにこれが最高のソリューションだと思います。グラフィカルアプリケーションで直接素早く起動します。

答え2

これはデフォルトで XOrg によって施行されるセキュリティ制限です。これを編集してに/etc/X11/Xwrapper.config変更して無効にすることができます。allowed_usersconsoleanybody

startxsystemdユニットファイルで実行してこれをテストしましたが、正常に動作します。

源泉:同じ文書話すライル

答え3

ログインマネージャなしで起動時にXを起動するシステムユーザーとして、次の手順に従います。https://wiki.archlinux.org/index.php/Systemd/User#Automatic_login_into_Xorg_without_display_manager

答え4

https://wiki.archlinux.org/index.php/Xinit#Autostart_X_at_login

少しの検索は長い道のりを行きます。

if [[ ! $DISPLAY && $XDG_VTNR -eq 1 ]]; then exec startx fi

シェルの起動に入れると、コンソールから自動的に起動します。

startxに問題がある場合は、ttyに戻って動作する必要があると思います。

関連情報