ルートからルート以外の自動ログインに自動ログインを変更するには?

ルートからルート以外の自動ログインに自動ログインを変更するには?

3.4.113-sun8i Openboxと一緒にUbuntu Server 16.04(実際には)をインストールしました。起動後にグラフを表示するには、このコマンドをstartxその中に入力します。/etc/rc.localしかし、問題は自動的にrootユーザーとしてログインするため、私のC ++プログラムが正しく機能しないことです。 (私が尋ねたように、rootユーザーはpulseaudioやgtkのようないくつかのライブラリを自動的に起動できないからだと言いました。)手動で起動する必要があるので、これは正しいようです。

ところで、自動ログインをルートから非ルートに変更する方法を探しています。どうすればいいですか?

編集:私の目標は、ユーザーが物理ボタンを介してのみオン/オフできるウィジェットを作成することです(メニュー、オプションなどがないことを意味します)。ガジェットは起動後に私のC ++コードを実行する必要があり、コードはgtkライブラリとpulseaudioライブラリを使用します。

ベストアンサー1

あなたは私に言ったその他のコメントシステムに以下が表示されます。

$ systemctl get-default
graphical.target

したがって、次のように変更してくださいmulti-user.target

$ sudo systemctl set-default multi-user.target

multi-user.targetはtty1で始まります(Ctrl + Alt + F1):

$ systemctl list-dependencies multi-user.target | grep getty
● ├─getty.target
● │ ├─getty-static.service
● │ └─[email protected]

したがって、tty1ファイルが上書きされます。

$ sudo systemctl edit getty@tty1

以下を含めてください(mあなたのユーザー名):

[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin m %I $TERM

/sbin/agetty上記はシステムによって異なる場合があります。正しいパスを確認してください。

$ type -a agetty
agetty is /sbin/agetty
agetty is /sbin/agetty

Esc次にshift+ z+を押してz保存して終了します(このキーはvim用です。ps a編集中に他のターミナルタブで実行してコマンドが何であるか、自分のシステムのシンボリックリンクがどこにあるか、ユーザーのシステムとは異なる場合があります)。editor /etc/systemd/system/[email protected]/.#override.blahblaheditorvim.gtk3

$ type -a editor
editor is /usr/bin/editor
editor is /usr/bin/editor
$ realpath /usr/bin/editor 
/usr/bin/vim.gtk3

その後、catをgetty@tty1実行して一番下に移動すると、オーバーレイ効果を得るために次の行が追加されることがわかります。

$ sudo systemctl cat getty@tty1 
 ...
# /etc/systemd/system/[email protected]/override.conf
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin xiaobai %I $TERM

上記の手順で自動ログインが--autologin完了します。そうでない場合は、起動後にtty1にログインするためにユーザー名とパスワードを手動で入力する必要があります。

username を使用して tty1 にログインするとm/home/m/.profile が実行されますので、次の行を最後に追加してください/home/m/.profile

echo "$DISPLAY" > /tmp/hole1
echo "$XDG_VTNR" > /tmp/hole2
if [ -z "$DISPLAY" ] && [ -n "$XDG_VTNR" ] && [ "$XDG_VTNR" -eq 1 ]; then
  echo lolo > /tmp/hole3
  exec startx -- -nocursor
fi
echo lili > /tmp/hole4

/tmp/holeN上記は、デバッグ目的でのみ必要に応じて動作することを確認するためのものです。たとえば、/tmp/hole3生成されていないが生成された場合は、「$XDG_VTNR」の値を確認する必要があること/tmp/hole2を意味します。cat /tmp/hole2

startx/home/m/.xinitrcその後、編集するために実行されます。

$ cat /home/m/.xinitrc                                                                                                                             
#!/usr/bin/env bash                                                                                                                                   
echo 55 > /tmp/test1
exec openbox-session
echo 55 > /tmp/test2

openbox-sessionその後実行され、/home/m/.config/openbox/autostart通常どおり編集します。

$ cat /home/m/.config/openbox/autostart 
echo 7 > /tmp/yy
/home/m/img &
echo 8 > /tmp/yy2

完了すると、再起動すると画像に直接移動します。上記のガイドラインは次のようにまとめることができます。

マルチユーザー。ターゲット - > tty1 - >実行[Eメール保護]-> ExecStartは希望するユーザー名で自動的にログインします。 ->ログイン後、~/.profileが実行されます。 -> exec startx-> startxが実行されます。~/.xinitrc-> exec openbox-session -> openboxが起動します。~/.config/openbox/autostart->/home/m/img &ポップアップが表示されます。

【書き直す】

OPと話を交わしました。チャットルーム性的証明書)彼の問題を解決しました。

rc.localはstartxをrootとして実行しますが、~/.profileはstartxをrootとして実行しないため、xを起動できます。私たちはstartx > /tmp/my.log 2>&1startxが正しく実行されていることを確認し、次に/tmp/my.logに私たちがチェックする必要があるものが表示され、最終的に最初の/home/m/.local/share/xorg/Xorg.0.logエントリ(EE)(EE) open /dev/fb8: Permission denied

OPは、mxを起動するときに必要なFRAMEBUFFER /dev/fb8へのアクセス権を取得するには、ビデオグループにユーザーを追加する必要があります。

sudo usermod -a -G audio m
sudo usermod -a -G video m

参考文献1参考文献2

p / s:上記のオーディオグルー​​プが必要なのかどうか疑問に思います。引用する

おすすめ記事