Tag die Damen und Herren,
ich hab ein kleines Problem mit systemd.
Wenn ich mich nach dem booten in der Konsole anmelde und startx eingebe wird mein X server gestartet und durch meine .xinitrc awesome geladen.
Wenn ich nun ein Terminalfenster oeffne bekomme ich meine ganz normale Bash Shell, alles wie es sein sollte.
Es sieht folgendermassen aus
|
Quellcode
|
1
|
chris@peach ~ $
|
Nun habe ich mir ein systemd service geschrieben, der genau das tun sollte.
Siehe hier:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
[Unit]
Description=X session for user %I
Wants=systemd-user-sessions.service xsettings.service
Conflicts=getty@tty1.service
After=xsettings.service
[Service]
User=%I
WorkingDirectory=%h
EnvironmentFile=-/tmp/x
Type=simple
ExecStart=/usr/bin/startx -- -nolisten tcp -noreset :0 vt1
[Install]
WantedBy=multi-user.target
|
Der vollstaendigkeithalber noch meine xsettings.service:
|
Quellcode
|
1
2
3
4
5
6
7
|
[Unit]
Description=Change X config from environment variables
[Service]
EnvironmentFile=-/tmp/x
Type=oneshot
ExecStart=/usr/local/bin/x-settings
|
und meine /usr/local/bin/x-settings
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#!/bin/bash
case "$VIDEO" in
nvidia)
eselect opengl set nvidia
modprobe -r bbswitch
modprobe nvidia
cp -f /usr/local/share/x-settings/nvidia.conf /etc/X11/xorg.conf.d/nvidia.conf
;;
intel)
eselect opengl set xorg-x11
modprobe -r nvidia
modprobe bbswitch load_state=0
rm -f /etc/X11/xorg.conf.d/nvidia.conf
;;
esac
|
Durch den xsettings spass kann ich durch die VIDEO umgebungsvariable festlegen ob mein X mit der Intel oder der nvidia Grafikkarte startet (Ich hab ein Laptop mit dedizierter Nvidia grafikkarte und Intelgrafik im Prozessor)
Hier funktioniert allerdings noch alles, ich denke nicht das hier das Problem liegt, ich habs nur der Vollstaendigkeit halber dazugeschrieben, falls sich jemand wundern sollte was xsettings.service macht
Mein Problem:
Wenn ich nun durch den systemd service mein X starten lassen, wird ebenfalls brav die .xinitrc verarbeitet und awesome gestartet
aber wenn ich nun ein Terminal fenster oeffne ist meine Shell Bash im Posix kompatibilitaetsmodus.
Es sieht folgendermassen aus:
|
Quellcode
|
1
2
3
|
sh-4.2$
sh-4.2$ echo $SHELL
/bin/bash
|
Ich hab schon vieles ausprobiert aber ich bekomme es einfach nicht hin eine normale Bash shell zu starten wenn mein X server durch systemd gestartet wurde.
So habe ich z.b. versucht die ExecStart option folgendermassen zu aendern: ExecStart=/bin/bash --login -c "/usr/bin/startx -- -nolisten tcp -noreset :0 vt1"
Auch das funktioniert nicht.
Ich habe keine ahnung warum sich die Shell in X anders verhaellt wenn ich startx durch systemd aufrufe, anstatt manuell startx auszufuehren.
Ja und weil ich hier absolut nicht weiterkomme, wollte ich mal fragen ob hier jemand weiss was systemd anders macht,
bzw. was ich machen kann um unter X meine ganz normale Shell zu bekommen.
Liebe Gruesse,
chris