Am Freitag, den 22.06.2012, 15:35 +0100 schrieb Léo Gillot-Lamure:
> Simple suggestion : GDM takes a name on the bus, so you can reliably
> know when the service has finished to start. The service file used in
> Gentoo adds a line "BusName=org.gnome.DisplayManager" in the [Service]
> section to achieve that.

Thanks. Gentoo’s service file looks like this [1]

1       [Unit]
2       Description=GNOME Display Manager
3       After=systemd-user-sessions.service
4       
5       [Service]
6       ExecStart=/usr/bin/gdm --nodaemon
7       Type=dbus
8       BusName=org.gnome.DisplayManager
9       
10      [Install]
11      WantedBy=graphical.target

and here again Arch Linux’ for comparison.

    $ more service/gdm.service 
    [Unit]
    Description=Gnome Display Manager
    After=systemd-user-sessions.service

    [Service]
    ExecStart=/usr/sbin/gdm -nodaemon

    [Install]
    WantedBy=graphical.target

So Lennart, which one would you prefer?

Adapting the path to `/usr/sbin/gdm3` in Gentoo’s one and saving it
under `/lib/systemd/service/gdm3.service` it works under Debian after
`sudo systemctl enable gdm3.service`.

Although reading Jordi’s post [2],

        As we get many questions regarding the status of GDM in Debian,
        let's add a short note on this. Packaging GDM, at least in its
        current upstream form, is not a matter of unpacking a new
        tarball and editing debian/changelog. When Joss works on a new
        major version, the amount of tweaking to break away from stuff
        that works on other distros but is not so simple in Debian is
        outstanding (see, for example, the current unfinished work for
        GDM 3.2 in our SVN repo). In our case, to handle our GDM
        defaults, we even need changes to the underlying configuration
        system, dconf. This evidently takes some effort to do, and
        unfortunately our GDM expert has had little time for Debian
        lately, but we're confident we'll end up with a GDM in wheezy
        that is on par with Debian standards.

and looking at Debian’s GDM init.d script [2]

1       #! /bin/sh
2       ### BEGIN INIT INFO
3       # Provides:          gdm3
4       # Should-Start:      console-screen dbus network-manager
5       # Required-Start:    $local_fs $remote_fs
6       # Required-Stop:     $local_fs $remote_fs
7       # Default-Start:     2 3 4 5
8       # Default-Stop:      0 1 6
9       # Short-Description: GNOME Display Manager
10      # Description:       Debian init script for the GNOME Display Manager
11      ### END INIT INFO
12      #
13      # Author:       Ryan Murray <rmur...@debian.org>
14      #
15      set -e
16      
17      PATH=/sbin:/bin:/usr/sbin:/usr/bin
18      DAEMON=/usr/sbin/gdm3
19      
20      test -x $DAEMON || exit 0
21      
22      if [ -r /etc/default/locale ]; then
23        . /etc/default/locale
24        export LANG LANGUAGE
25      fi
26      
27      . /lib/lsb/init-functions
28      
29      # To start gdm even if it is not the default display manager, change
30      # HEED_DEFAULT_DISPLAY_MANAGER to "false."
31      HEED_DEFAULT_DISPLAY_MANAGER=true
32      DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager
33      
34      gen_config() {
35        # GSettings configuration uses dconf update to generate a gdm profile
36        if [ -d /var/lib/gdm3 ]; then
37          needed=no
38          if [ -f /var/lib/gdm3/dconf/db/gdm ]; then
39            for f in \
40                /usr/share/gdm/dconf /usr/share/gdm/dconf/*-settings \
41                /usr/share/gdm/dconf/locks /usr/share/gdm/dconf/locks/*-locks 
\
42                /etc/gdm3/greeter.gsettings; do
43              if [ "$f" -nt /var/lib/gdm3/dconf/db/gdm ]; then
44                needed=yes
45                break
46              fi
47            done
48          else
49            needed=yes
50          fi
51          if [ "$needed" = yes ]; then
52            rm -rf /var/lib/gdm3/dconf
53            mkdir -p /var/lib/gdm3/dconf/profile 
/var/lib/gdm3/dconf/db/gdm.d/locks
54            ln -s /usr/share/gdm/dconf-profile /var/lib/gdm3/dconf/profile/gdm
55            ln -s /usr/share/gdm/dconf/*-settings 
/var/lib/gdm3/dconf/db/gdm.d/
56            ln -s /usr/share/gdm/dconf/locks/*-locks 
/var/lib/gdm3/dconf/db/gdm.d/locks/
57            # The configuration file in /etc uses org.gnome.blah gsettings 
syntax.
58            # Convert it to org/gnome/blah dconf syntax.
59            awk '/\[.*\]/ { gsub("\\.","/"); } ! /^#/ { print;}' \
60              /etc/gdm3/greeter.gsettings > 
/var/lib/gdm3/dconf/db/gdm.d/90-debian-settings
61            dconf update /var/lib/gdm3/dconf/db 2> /dev/null
62          fi
63        fi
64      }
65      
66      case "$1" in
67        start)
68              CONFIGURED_DAEMON=$(basename "$(cat 
$DEFAULT_DISPLAY_MANAGER_FILE 2> /dev/null)")
69              if grep -wqs text /proc/cmdline; then
70                  log_warning_msg "Not starting GNOME Display Manager; found 
'text' in kernel commandline."
71              elif [ -e "$DEFAULT_DISPLAY_MANAGER_FILE" ] && \
72                 [ "$HEED_DEFAULT_DISPLAY_MANAGER" = "true" ] && \
73                 [ "$CONFIGURED_DAEMON" != gdm3 ] ; then
74                      log_action_msg "Not starting GNOME Display Manager; it 
is not the default display manager"
75              else
76                      log_daemon_msg "Starting GNOME Display Manager" "gdm3"
77                      gen_config
78                      rm -f /var/lib/gdm/.ICEauthority
79                      start-stop-daemon --start --quiet --pidfile 
/var/run/gdm3.pid \
80                              --background --exec $DAEMON || log_end_msg 1
81                      log_end_msg 0
82              fi
83        ;;
84        stop)
85              log_daemon_msg "Stopping GNOME Display Manager" "gdm3"
86              set +e
87              start-stop-daemon --stop --quiet --pidfile /var/run/gdm3.pid \
88                      --name gdm3 --retry 5
89              set -e
90              log_end_msg $?
91        ;;
92        reload)
93              log_daemon_msg "Scheduling reload of GNOME Display Manager 
configuration" "gdm3"
94              set +e
95              gen_config
96              start-stop-daemon --stop --signal USR1 --quiet --pidfile \
97                      /var/run/gdm3.pid --name gdm3
98              start-stop-daemon --stop --signal HUP --quiet --name 
dconf-service \
99                      --user Debian-gdm --oknodo
100             set -e
101             log_end_msg $?
102       ;;
103       status)
104             status_of_proc -p "$PIDFILE" "$DAEMON" gdm3 && exit 0 || exit $?
105       ;;
106       restart|force-reload)
107             $0 stop
108             $0 start
109       ;;
110       *)
111             echo "Usage: /etc/init.d/gdm3 
{start|stop|restart|reload|force-reload|status}"
112             exit 1
113       ;;
114     esac
115     
116     exit 0

there seems to be a chance the above service file might break under
Debian.

As a last note, looking at `systemd-analyze blame` it looks like
starting GDM 3 using the service file takes longer (188 ms) than when
systemd is using the shipped init.d script (90 ms to 120 ms).


Thanks,

Paul


[1] 
http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/gnome-base/gdm/files/3.2.1.1/gdm.service?revision=1.1&view=markup
 
[2] http://oskuro.net/blog/freesoftware/gnome-3.4-wheezy-2012-06-03-09-47
[3] 
http://anonscm.debian.org/viewvc/pkg-gnome/desktop/unstable/gdm3/debian/gdm3.init?revision=35286&view=markup

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to