GentooでXを起動しようとすると、仮想コンソール7を開くことができません(権限が拒否されました)

GentooでXを起動しようとすると、仮想コンソール7を開くことができません(権限が拒否されました)

i3と入力してXを起動しようとすると、startx /usr/bin/i3次のエラーメッセージが表示されます。 (EE) xf86OpenConsole: Cannot open virtual console 7 (Permission denied)

rootで起動したり/ dev / tty7をchowningした後に起動するとstartx問題を解決できますが(予想される入力が機能せず、端末の切り替えもできません)、これは正しいアプローチだとは思わない。

SwayとWestonは完全に動作しますが、Xはなぜ同じように動作しませんか?

答え1

startx私のシステム(Fedora)ではうまく機能します。しかし、Gentoo Wikiの古いページでは、これを実行する別の方法が挙げられています。

startx /usr/bin/i3 -- vt1

1ログインした「ターミナル」の番号です。端末にない場合は、1それに応じてコマンドを調整してください。

明らかに、これはPermission deniedエラーを修正し、Xを起動することができました。

startxなぜ明示的に渡すべきかはわかりません。 GentooがFedoraとは異なることをする理由を理解できません。ああ、まあ。少なくとも開こうとする試みを停止startx/停止する必要があります。それは確かに現代的な作業方法ではなく、あなたのためのものでもありません。Xorgtty7

答え2

Cannot open virtual console (Permission denied)権限の問題によっても発生する可能性があります/dev/ttyX

たとえば、openSUSE MicroOSにログインする前に:

$ ls -l /dev/tty1
crw--w---- 1 root tty /dev/tty1

しかし、ログイン後:

$ ls -l /dev/tty1
c--xr-xr-T 1 $USER tty /dev/tty1

ユーティリティloginは、ユーザーが入力できるようにTTY所有者を変更しています。ただし、この場合、権限も変更され、読み書きができなくなります。そのため、startxデバイスに書き込めず、権限拒否エラーが表示されます。

解決策

以前にTTYを変更する権限startx。私.zprofile:

# Auto-start Xorg when logging in on TTY1
check_tty() {
    local temp=$(tty)
    echo ${temp:5}
}

if [ $(check_tty) = "tty1" ]; then
    chmod 1600 /dev/tty1              # Notice the permission change before startx
    exec startx
fi

考えられる理由

問題の正確な原因が見つかりません。systemd-logind私も同じ所有権の問題があるという事実に関連しているかもしれません。このレポートそしてこれ失敗したときstartx

私もPAMとudevを調べましたが、実際にスキーマを変更することは何もないようです/dev/tty1155

関連情報