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.blahblah
editor
vim.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>&1
startxが正しく実行されていることを確認し、次に/tmp/my.logに私たちがチェックする必要があるものが表示され、最終的に最初の/home/m/.local/share/xorg/Xorg.0.log
エントリ(EE)
が(EE) open /dev/fb8: Permission denied
。
OPは、m
xを起動するときに必要なFRAMEBUFFER /dev/fb8へのアクセス権を取得するには、ビデオグループにユーザーを追加する必要があります。
sudo usermod -a -G audio m
sudo usermod -a -G video m
p / s:上記のオーディオグループが必要なのかどうか疑問に思います。引用する