Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: GentooForum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

05.02.2014, 14:13

Problem mit systemd service

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
Freiheit ist mehr, als nur keine Unterwäsche zu tragen :D

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »CHRlS« (10.02.2014, 00:24) aus folgendem Grund: Auf gelosest setzen :D


2

06.02.2014, 16:03

Mhm, my 50 cent:

mit

Quellcode

1
2
3
4
5
6
[Service]
User=%I
WorkingDirectory=%h
EnvironmentFile=-/tmp/x
Type=simple
ExecStart=/usr/bin/startx -- -nolisten tcp -noreset :0 vt1
legst du ja "nur" fest unter welchem User startx läuft (was ja selbst wieder ein shell-script ist).

Das heißt ja nicht, das dieser user tatsächlich sich eingeloggt hat und eine Session hat.

Hast du dich mal mit sowas schon gespielt?

Quellcode

1
2
3
4
[Service]
ExecStart=/sbin/agetty -a chris tty1
Restart=always
IgnoreSIGPIPE=no
http://www.dyle.org
IM-Account (Jabber!) sind auf meiner HP ...
There is no place like /home

http://www.gentooforum.de
http://www.gentoofreunde.org

<div>how to annoy a web developer?</span>

3

08.02.2014, 21:25

Das es eine Session gibt wusste ich nicht, ich dachte wenn sich der benutzer anmeldet wird einfach nur die default shell unter den benutzerrechten gestartet, mit deinem automatisch anmelden script funktioniert alles wunderbar :D

Herzlichen Dank :D
Freiheit ist mehr, als nur keine Unterwäsche zu tragen :D

4

09.02.2014, 08:04

Fein! Ist das jetzt "[gelöst]" --> Forenkonvention
http://www.dyle.org
IM-Account (Jabber!) sind auf meiner HP ...
There is no place like /home

http://www.gentooforum.de
http://www.gentoofreunde.org

<div>how to annoy a web developer?</span>