Païou : Mandriva Linux depuis 2002. Aujourd'hui, c'est Mageia Linux
On se lasse de tout, sauf de comprendre.
Attribué à Virgile.
14 septembre 2011 : Création de cette page.
7 juillet 2014 : Actualisation de la page, avec Mageia5 (cauldron
Pour : linuxien averti.
Que ce soit avec SystemV ou avec Systemd, vous pouvez démarrer une session en mode graphique. Les pages et
ont montré que le script prefdm a déterminé quel est le gestionnaire de connexion graphique qui est utilisé.
Cette page montre le processus de démarrage lorsque le gestionnaire graphique est LXDM.
Important !
LXDM est un gestionnaire de connexion, c'est-à-dire qu'il présente une fenêtre de connexion (login et mot de passe), à ne pas confondre avec le serveur X qui permet aux applications graphiques (et donc aussi à XDM) de dialoguer avec l'écran, le clavier et la souris.
LXDM est installé par défaut avec l'environnement LXDE.
LXDM est le gestionnaire de connexion de LXDE. Il permet la connexion et l'authentification de l'utilisateur, mais il permet également de choisir l'environnement avec lequel vous souhaitez travailler (si vous en avez plusieurs d'installés, par ex IceWM et LXDE).
Il permet également d'arrêter ou de redémarrer l'ordinateur.
LXDM cherche la liste des sessions dans /usr/share/xsessions et garde en mémoire la dernière session utilisée en /var/lib/lxdm/lxdm.conf.
Je l'ai également utilisé avec le bureau Xfce, à un moment où ligthdm n'était pas encore opérationnel.
La configuration se fait dans le fichier /etc/lxdm/lxdm.conf
Ce fichier permet de configurer l'auto-connexion, la session par défaut, la présentation de la fenêtre de connexion, des listes d'accès (à partir de la version 0.3.0)
[base]
# autologin=dgod
# timeout=10
# session=/usr/bin/startlxde
# numlock=0
# xauth_path=/tmp
greeter=/usr/libexec/lxdm-greeter-gtk
[server]
active_vt=1
arg=/usr/bin/X -background
[display]
gtk_theme=oxygen-gtk
bg=/usr/share/mga/backgrounds/default.jpg
bottom_pane=1
lang=1
keyboard=0
theme=Mageia
[input]
[userlist]
disable=0
white=
black=
autologin : vous permet de faire une connexion automatique d'un utilisateur donné. Pour ceci, dé-commentez la ligne et remplacez dgod par le login de l'utilisateur. Aucun mot de passe ne lui sera demandé.
timeout=10 : en mode autologin, une temporisation affiche la fenêtre de connexion et permet à l"utilisateur de choisir son bureau ou sa langue. Vous pouvez modifier la temporisation, mais elle doit être supérieure ou égale à 5s
session= : session utilisée par défaut, uniquement si aucune autre n'est précisée par ailleurs, par exemple dans /etc/sysconfig/desktop.
numlock : contrôle le verrouillage numérique pour la fenêtre de connexion (0=invalidé, 1=validé). Dé-commentez la ligne.
xauth_path : Xauth est un système d'authentification pour les applications graphiques interdisant à d'autres utilisateurs d'interférer avec vos applications.
~/.Xauthority est le fichier habituel d'authentification, mais vous pouvez en modifier l'emplacement.
greeter= : ce fichier définit la fenêtre de connexion. Ne le modifiez pas sans raison.
active_vt= : numéro du terminal virtuel.
arg= : arguments pour le démarrage du serveur X. Ne le modifiez pas.
gtk_theme= : thème général utilisé pour la fenêtre de connexion (icônes, onglets ...).
bg= : image de fond d'écran pour la fenêtre de connexion.
bottom_pane=1 : permet d'afficher ou non les listes de choix du bas de la fenêtre de connexion (1=affiché).
lang= : affiche le choix de la langue (=1) ou non (=0).
keyboard= : affiche le choix du clavier (=1) ou non (=0)
theme=Mageia : thème de lxdm
[userlist] : ce groupe permet d'utiliser des listes d'accès
disable=0 : permet d'invalider (=1) ou valider (=0) les listes white et black
prefdm et lookupdm ont lancé la commande /usr/sbin/lxdm
Ce script définit quelques variables (paramètres nationaux, environnement par défaut selon /etc/sysconfig/desktop), puis lance le gestionnaire de connexion
Remarque: le fichier /etc/sysconfig/desktop est renseigné par le MCC.
#!/bin/sh
[ -f /etc/sysconfig/i18n ] && . /etc/sysconfig/i18n
if [ -z "$LANG" -a -e /etc/sysconfig/language ]; then
. /etc/sysconfig/language
if [ -n "$RC_LANG"]; then
LANG=$RC_LANG
fi
fi
if [ -n "$LANG" ]; then
export LANG
fi
[ -f /etc/sysconfig/desktop ] && . /etc/sysconfig/desktop
[ -f /etc/sysconfig/windowmanager ] && . /etc/sysconfig/windowmanager
if [ -n "$DEFAULT_WM" ]; then
PREFERRED=$DEFAULT_WM
fi
if [ -n "$DESKTOP" ]; then
export DESKTOP
fi
if [ -n "$PREFERRED" ]; then
export PREFERRED
/etc/sysconfig/i18n gestion des paramètres nationaux.
/etc/sysconfig/language n'existe pas chez moi, il n'y a donc aucune action.
export LANG exporte la variable (=fr_FR.UTF-8)
/etc/sysconfig/desktop exécute ce fichier qui définit notamment la variable $DESKTOP (vide par défaut, mais renseigné par MCC).
/etc/sysconfig/windowmanager n'existe pas chez moi. Il devrait définir la variable $DEFAULT_WM.
$DEFAULT_WM N'est pas définie. De ce fait $PREFERRED ne l'est pas non plus et n'est pas exportée.
$DESKTOP est exportée si elle est définie.
exec /usr/sbin/lxdm-binary $* exécute le programme, avec l'argument nodaemon.
Il s'agit d'un programme compilé. Il est donc assez difficile de trouver le déroulement exact.
Son fichier de configuration est /etc/lxdm/lxdm.conf
Il lance le fichier /etc/lxdm/Xsession, en lui fournissant un argument qui détermine le bureau à ouvrir.
Ce bureau est défini de la façon suivante :
Ce fichier est lancé par /usr/sbin/lxdm-binary avec, l'argument défini par lxdm-binary.
Il analyse l'argument et définit la commande à exécuter, il exécute éventuellement un xprofile, il ouvre la session demandée (ici exec /etc/X11/Xsession Nom_du_Bureau)
#!/bin/bash
if [ $# -eq 1 -a -n "$1" ]; then
LXSESSION=$1
else
# default session
LXSESSION=/usr/bin/startlxde
fi
[ -f /etc/xprofile ] && . /etc/xprofile
[ -f ~/.xprofile ] && . ~/.xprofile
if [ -f /etc/X11/xinit/xinitrc-common ]; then
# fedora
. /etc/X11/xinit/xinitrc-common
if ! [ -z "$XDG_SESSION_COOKIE" ]; then
CK_XINIT_SESSION=
elif [ -x /usr/bin/ck-launch-session -a -z "$CK_XINIT_SESSION" ]; then
CK_XINIT_SESSION="/usr/bin/ck-launch-session"
fi
exec -l $SHELL -c "$CK_XINIT_SESSION \"$LXSESSION\""
elif [ -x /etc/X11/xinit/Xsession ]; then
# fedora
exec /etc/X11/xinit/Xsession "$LXSESSION"
elif [ -x /etc/X11/Xsession ]; then
# mageia, mandriva, debian, ubuntu
exec /etc/X11/Xsession "$LXSESSION"
#suse
export WINDOWMANAGER=$LXSESSION
exec -l $SHELL -c /etc/X11/xinit/xinitrc
else
# unknown, user should custom /etc/lxdm/xinitrc self
if [ -x /etc/lxdm/xinitrc ]; then
. /etc/lxdm/xinitrc
fi
if ! [ -z "$XDG_SESSION_COOKIE" ]; then
CK_XINIT_SESSION=
elif [ -x /usr/bin/ck-launch-session ]; then
CK_XINIT_SESSION="/usr/bin/ck-launch-session"
fi
exec -l $SHELL -c "$CK_XINIT_SESSION \"$LXSESSION\""
fi
Il est également utilisé par la commande startx ou par les autres gestionnaires de connexion.
Ce script ouvre une session graphique correspondant aux éventuels paramètres spécifiés lors de la commande. Par défaut, ce paramètre est startlxde.
Voici, en résumé, le processus :
ConsoleKit conserve la trace de tous les utilisateurs connectés. Il est utilisé par différentes applications pour interagir avec les modifications pouvant intervenir, telles qu'un changement d'utilisateur par exemple
* gestion des paramètres nationaux avec /etc/profile.d/10lang.sh et /etc/sysconfig/i18n
* création ou vidage du journal de session $HOME/.xsession-errors
* fond d'écran rouge, si c'est root qui se connecte
* définit la forme du curseur : patienter
* assemble toutes les ressources X de l'utilisateur et du système (icônes, mappage du clavier...) aux ressources système
* définition du fichier d'initialisation de console-kit (suivi des utilisateurs, des sessions, des sièges ...)
* définition du fichier de lancement du navigateur internet
* définition du bureau : celui donné en argument, sinon celui du fichier $HOME/.desktop, sinon celui du fichier /etc/sysconfig/desktop
* définition de la session : la même que le bureau; si, à ce stade, aucun bureau n'est défini, lance la commande chksession -F
* lancement des scripts du répertoire /etc/X11/xinit.d, avec chaque fois le nom de la session comme argument.
Le contenu du répertoire dépend de votre installation. Voici ce que j'ai, avec une installation minimale et avec le bureau IceWM :
02XIM : interface de UIM, pour la gestion des langues japonaise et chinoise
canberra-gtk-module.sh : ajoute canberra-gtk-module à la variable $GTK_MODULES
menu : migration des anciens menus vers les nouveau, si besoin
mgaapplet (appliquette signalant des mises à jour) : exécute /usr/bin/mgaapplet, uniquement avec les bureaux IceWM et Fluxbox
numlock : active le verrouillage numérique en mode graphique, s'il est déjà activé en mode texte
s2u : active le démon s2u (communication du système vers l'utilisateur, avec dbus)
xdg-user-dirs-update : création ou mise à jour des répertoires de l'utilisateur
xdg-user-dirs-update-gtk : n'est utilisé que pour les bureaux autres que GNOME, KDE et xfce4
* lancement du bureau, au sein de ConsoleKit, selon le cas :
bureau failsafe : un simple terminal (essai, dans l'ordre : rxvt, xterm, xvt, twm)
le bureau est défini : lancement de ce bureau
le bureau n'est pas défini default : essai de diverses solutions : une session utilisateur est définie, des clients utilisateurs sont définis, recherche d'une session avec chksession -F, icewm, icewm-light, twm, xsm
Prépare les arguments pour la commande /usr/sbin/lxdm-binary.
Vous pouvez ajouter, comme argument, le nom de la session à démarrer. Le nom doit être tel qu'il est spécifié dans le fichier du répertoire /etc/X11/wmsession.d (NAME=).
Vous pouvez également spécifier, pour un utilisateur donné, une procédure différente qui court-circuite le fichier /etc/X11/Xdesktop et qui donne directement la commande d'ouverture du bureau choisi. Vous créez un fichier .initrc dans la racine de l'utilisateur. Mais prudence ! Il ne faut rien oublier.
/usr/sbin/lxdm-binary définit le bureau à ouvrir de la façon suivante :
Remarque : la fenêtre de connexion garde en mémoire les valeurs de la dernière connexion (/var/lib/lxdm/lxdm.conf)
Il prépare la commande exec /etc/X11/Xsession Nom_du_Bureau.
Xsession assemble toutes les ressources X, définit la session à ouvrir, lance les commandes du répertoire /etc/X11/xinit.d et enfin ouvre votre session avec son bureau.
Si vous êtes le seul utilisateur de l'ordinateur et que personne d'autre ne risque de l'utiliser, vous pouvez vous passer de la fenêtre de connexion et de l'obligation de fournir le mot de passe Vous serez automatiquement connectés.
Pour ceci, en tant que root, éditez le fichier /etc/lxdm/lxdm.conf. Supprimez le caractère # de la ligne # autologin=dgod et remplacez dgod par votre nom de login