[Debian/sid]gdm initscript functioneert niet.

Pagina: 1
Acties:

  • Keeper of the Keys
  • Registratie: Augustus 2002
  • Laatst online: 14-01 12:20
Recent (sinds dist-upgrade) werkt het init-script van gdm niet meer (in elk geval niet zoals het wordt meegeleverd), ik snap zelf niet waarom en kon verder online geen vermeldingen vinden van niet werkende init-scripts.

Zelf heb ik het script dan dusdanig bewerkt dat het wel werkt maar ik wil eigenlijk graag snappen wat er misgaat en waarom het in zijn package-manager staat niet werkt.
Ook helpt mijn bewerking alleen voor /etc/init.d/gdm start en niet voor restart/stop etc. (hoewel dat genoeg is voor de basis functies is het toch wel vervelend).

Dit is het script dat ik mee krijg:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#! /bin/sh
### BEGIN INIT INFO
# Provides:          x-display-manager gdm
# Should-Start:      console-screen acpid dbus hal network-manager
# Required-Start:    $local_fs $remote_fs
# Required-Stop:     $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      S 0 1 6
# Short-Description: GNOME Display Manager
# Description:       Debian init script for the GNOME Display Manager
### END INIT INFO
#
# Author:       Ryan Murray <rmurray@debian.org>
#
set -e

PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/gdm

test -x $DAEMON || exit 0

if [ -r /etc/default/locale ]; then
  . /etc/default/locale
  export LANG LANGUAGE
fi

. /lib/lsb/init-functions

# To start gdm even if it is not the default display manager, change
# HEED_DEFAULT_DISPLAY_MANAGER to "false."
HEED_DEFAULT_DISPLAY_MANAGER=true
DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager

case "$1" in
  start)
        CONFIGURED_DAEMON=$(basename "$(cat $DEFAULT_DISPLAY_MANAGER_FILE 2> /dev/null)")
        if [ -e "$DEFAULT_DISPLAY_MANAGER_FILE" ] && \
           [ "$HEED_DEFAULT_DISPLAY_MANAGER" = "true" ] && \
           [ "$CONFIGURED_DAEMON" != gdm ] ; then
                log_action_msg "Not starting GNOME Display Manager; it is not the default display manager"
        else
                log_daemon_msg "Starting GNOME Display Manager" "gdm"
                start_daemon $DAEMON
                log_end_msg $?
        fi
  ;;
  stop)
        log_daemon_msg "Stopping GNOME Display Manager" "gdm"
        set +e
        start-stop-daemon --stop --quiet --pidfile /var/run/gdm.pid \
                --name gdm --retry 5
        set -e
        log_end_msg $?
  ;;
  reload)
        log_daemon_msg "Scheduling reload of GNOME Display Manager configuration" "gdm"
        set +e
        start-stop-daemon --stop --signal USR1 --quiet --pidfile \
                /var/run/gdm.pid --name gdm
        set -e
        log_end_msg $?
  ;;
  restart|force-reload)
        $0 stop
        $0 start
  ;;
  *)
        echo "Usage: /etc/init.d/gdm {start|stop|restart|reload|force-reload}"
        exit 1
  ;;
esac

exit 0


Mijn bewerking:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(...)
  start)
        CONFIGURED_DAEMON=$(basename "$(cat $DEFAULT_DISPLAY_MANAGER_FILE 2> /dev/null)")
        if [ -e "$DEFAULT_DISPLAY_MANAGER_FILE" ] && \
           [ "$HEED_DEFAULT_DISPLAY_MANAGER" = "true" ] && \
           [ "$CONFIGURED_DAEMON" != gdm ] ; then
                log_action_msg "Not starting GNOME Display Manager; it is not the default display manager"
        else
                start_daemon $DAEMON && \
                log_daemon_msg "Starting GNOME Display Manager" "gdm" && \
                log_end_msg $?
        fi
  ;;
(...)

Verwijderd

Wat voor errors/warnings krijg van de standaard output of de log files?

  • Keeper of the Keys
  • Registratie: Augustus 2002
  • Laatst online: 14-01 12:20
/var/log/messages bevat helemaal geen vermelding van het niet slagen/falen/starten van gdm.

Verder krijg ik bij een onbewerkt init-script gewoon de boodschap dat gdm wordt gestart maar gebeurt er verder niets (waarbij misschien nog interessant is op te merken dat er na de boodschap over het starten/stoppen van gdm geen newline wordt toegevoegd).

Verwijderd

Keeper of the Keys schreef op vrijdag 21 maart 2008 @ 10:11:
/var/log/messages bevat helemaal geen vermelding van het niet slagen/falen/starten van gdm.

Verder krijg ik bij een onbewerkt init-script gewoon de boodschap dat gdm wordt gestart maar gebeurt er verder niets (waarbij misschien nog interessant is op te merken dat er na de boodschap over het starten/stoppen van gdm geen newline wordt toegevoegd).
Kijk is in /var/log/gdm/*

en waar is /bin/sh naar gelinked?

  • Keeper of the Keys
  • Registratie: Augustus 2002
  • Laatst online: 14-01 12:20
/bin/sh is bash
Verder bevatten /var/log/gdm/* normale X server logs.
Voor zover ik kan zien doet het onbewerkte init-script gewoon niets behalve de boodschap echo'en dat hij start/stopt.
Bij een onbewerkt script zie je bvb ook geen gdmXkeepscrashing oid, er gebeurt gewoon niets.

Verwijderd

Keeper of the Keys schreef op vrijdag 21 maart 2008 @ 10:38:
/bin/sh is bash
Verder bevatten /var/log/gdm/* normale X server logs.
Voor zover ik kan zien doet het onbewerkte init-script gewoon niets behalve de boodschap echo'en dat hij start/stopt.
Bij een onbewerkt script zie je bvb ook geen gdmXkeepscrashing oid, er gebeurt gewoon niets.
Ik vraag me af of de dist-upgrade wel de init scripts heeft geupgrade. Kreeg je nog errors tijdens het upgraden?

Verwijderd

Verwijderd schreef op vrijdag 21 maart 2008 @ 11:05:
[...]


Ik vraag me af of de dist-upgrade wel de init scripts heeft geupgrade. Kreeg je nog errors tijdens het upgraden?
Daar liep ik laatst ook tegenaan met Apache2.

DPKG meldde dat er een nieuw init-script was voor Apache2. Ik kreeg de keuze: de oude, door mijzelf gewijzigde versie behouden, of de nieuwe installeren. Ik koos ervoor de oude te behouden.

Dat was geen goed idee, want "/etc/init.d/apache2 stop" werkte niet meer naar behoren doordat de PID's waren verplaatst. Het nieuwe init-script (/etc/init.d/apache2-dpkg-dist o.i.d.) over het oude heen zetten loste het probleem op.

  • wzzrd
  • Registratie: Februari 2000
  • Laatst online: 17-01 19:39

wzzrd

The guy with the Red Hat

Zet eens
code:
1
set -x
bovenaan dat originele initscript (na de shabang, natuurlijk) en kijk eens wat er precies gebeurt. Zo op het eerste gezicht heb je alleen het start_daemon stukje omhoog gehaald. Dat zou kunnen betekenen dat er een fout zit in het log_daemon stukje daarboven en dat het script daarom niet verder komt dan dat. Als je dus die set -x opties erin zet, kun je volgen wat het script doet. Probeer dat eens en post de (relevante stukken van) de output.

[ Voor 4% gewijzigd door wzzrd op 22-03-2008 09:53 ]


  • Keeper of the Keys
  • Registratie: Augustus 2002
  • Laatst online: 14-01 12:20
:S Ik heb net "set -e" in "set -x" veranderd, dan wekt het script prima, zodra ik het terug verander naar "set -e" doet het niets.

Volgens de set manpage (http://www.research.att.com/~gsf/man/man1/set.html) moet "set -e" het volgende doen:
-e
A simple command that has an non-zero exit status will cause the shell to exit unless the simple command is:

+
contained in an && or || list.
+
the command immediately following if, while, or until.
+
contained in the pipeline following !.
Nou zit het stuk dat gdm start voor zover ik zie/begrijp toch echt wel binnen een if...

  • Keeper of the Keys
  • Registratie: Augustus 2002
  • Laatst online: 14-01 12:20
*schopje*

Verwijderd

Heb je al gekeken of je via DPKG de juiste versie van het init-script hebt geaccepteerd?

  • wzzrd
  • Registratie: Februari 2000
  • Laatst online: 17-01 19:39

wzzrd

The guy with the Red Hat

Doe een set -e én set -x. En dan even de console output posten.

  • Keeper of the Keys
  • Registratie: Augustus 2002
  • Laatst online: 14-01 12:20
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# /etc/init.d/gdm start
+ PATH=/sbin:/bin:/usr/sbin:/usr/bin
+ DAEMON=/usr/sbin/gdm
+ test -x /usr/sbin/gdm
+ '[' -r /etc/default/locale ']'
+ . /etc/default/locale
++ LANG=en_US.UTF-8
+ export LANG LANGUAGE
+ . /lib/lsb/init-functions
++ FANCYTTY=
++ '[' -e /etc/lsb-base-logging.sh ']'
++ . /etc/lsb-base-logging.sh
+ HEED_DEFAULT_DISPLAY_MANAGER=true
+ DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager
+ case "$1" in
+++ cat /etc/X11/default-display-manager
++ basename /usr/bin/gdm
+ CONFIGURED_DAEMON=gdm
+ '[' -e /etc/X11/default-display-manager ']'
+ '[' true = true ']'
+ '[' gdm '!=' gdm ']'
+ log_daemon_msg 'Starting GNOME Display Manager' gdm
+ '[' -z 'Starting GNOME Display Manager' ']'
+ '[' -z gdm ']'
+ echo -n 'Starting GNOME Display Manager: gdm'
Starting GNOME Display Manager: gdm+ pidof splashy
+ case $2 in
+ stop_splashy
+ STEPS_DIR=/lib/init/rw/splashy
+ SPL_UPD=/sbin/splashy_update
+ '[' -r /etc/default/splashy ']'
+ . /etc/default/splashy
++ CHVT_TTY=
++ ENABLE_INITRAMFS=1
++ DEBUG=0
+ pidof splashy
+ '[' '!' -d /lib/init/rw/splashy ']'
+ '[' x0 '!=' x0 ']'
+ sleep 0.2
++ pidof splashy
+ '[' -z '' ']'
+ '[' -x /etc/init.d/keymap.sh -a -f /dev/shm/splashy-stopped-keymap ']'
+ '[' -x /etc/init.d/console-screen.sh -a -f /dev/shm/splashy-stopped-console-screen ']'
+ '[' x0 = x0 ']'
+ mount
+ grep /lib/init/rw/splashy

Lijkt erop dat het iets met splashy te maken heeft, wat meteen ook zou verklaren waarom mijn laptop wel nog altijd netjes werkt...

edit:

Het was inderdaad splashy, na het verwijderen van splashy, splashy-themes en libsplashy0 werkt het prima... wel jammer, splashscreen om boot/shutdown output te verstoppen werd zeer gewardeert door de gebruikers...

[ Voor 6% gewijzigd door Keeper of the Keys op 25-03-2008 16:53 ]

Pagina: 1