Païou : Mandriva Linux depuis 2002. Aujourd'hui, c'est Mageia Linux
On se lasse de tout, sauf de comprendre.
Attribué à Virgile.
2 août 2011 : Création de cette page.
Pour : linuxien averti.
Vous avez pu voir, dans la page précédente
, le début du démarrage graphique de Mageia Linux, avec le processus de détermination du gestionnaire graphique utilisé.
Cette page montre le processus de démarrage lorsque le gestionnaire graphique est XDM. En tant que tel, XDM ne permet pas l'autologin. Vous devez installer autologin.
Important !
XDM 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.
XDM est probablement le gestionnaire de connexion ayant l'aspect le plus épuré : une simple boîte de dialogue sur fond noir, avec un message d'accueil, un champ pour le nom de l'utilisateur, puis un champ pour le mot de passe. Il n'a ni liste d'utilisateurs, ni de choix de bureau, mais il est très complet.
La plupart du temps, les applications sont installées sur l'ordinateur de l'utilisateur. Ce dernier se connecte à son ordinateur à l'aide d'un gestionnaire de connexion en mode graphique.
C'est donc le cas le plus courant.
Dans ce cas de figure, XDM réalise les opérations suivantes :
Cela concerne, par exemple, des anciens ordinateurs, ayant une puissance relativement limitée. Ils peuvent encore être utilisés en tant que client léger. Il leur suffit alors d'avoir un minimum de mémoire et de ressources propres. Les programmes sont traités par un serveur d'applications distant. Le gestionnaire de connexion est habituellement fourni par le serveur.
Les tâches sont donc réparties :
Le protocole XDMCP permet la communication entre le client léger et l'environnement graphique du serveur. Une liaison réseau est bien sûr indispensable.
Différent modes de connexion sont possibles :
L'utilisation avec poste déporté ne sera pas traitée.
La configuration se fait en éditant quelques fichiers texte.
Il définit quelques paramètres ainsi que les autres fichiers de configuration.
Si vous devez modifier des fichiers de configuration, il est plus prudent de faire une copie de ces fichiers, en les renommant autrement, et en modifiant uniquement le nom dans le fichier xdm-config.
! $Xorg: xdm-conf.cpp,v 1.3 2000/08/17 19:54:17 cpqbld Exp $
! $XFree86: xc/programs/xdm/config/xdm-conf.cpp,v 1.11 2004/01/09 00:25:25 dawes Exp $
!
DisplayManager.errorLogFile: /var/log/xdm.log
DisplayManager.pidFile: /var/run/xdm.pid
DisplayManager.keyFile: /etc/X11/xdm/xdm-keys
DisplayManager.servers: /etc/X11/xdm/Xservers
DisplayManager.accessFile: /etc/X11/xdm/Xaccess
DisplayManager.willing: su nobody -c /usr/share/X11/xdm/Xwilling
! All displays should use authorization, but we cannot be sure
! X terminals may not be configured that way, so they will require
! individual resource settings.
DisplayManager*authorize: true
DisplayManager._1.authorize: true
! The following three resources set up display :0 as the console.
DisplayManager._0.setup: /usr/share/X11/xdm/Xsetup_0
DisplayManager._0.startup: /usr/share/X11/xdm/Xstartup
DisplayManager._0.reset: /usr/share/X11/xdm/Xreset
DisplayManager._0.startAttempts: 1
DisplayManager*chooser: /usr/share/X11/xdm/chooser
DisplayManager*resources: /etc/X11/xdm/Xresources
DisplayManager*session: /usr/share/X11/xdm/Xsession
DisplayManager*authComplain: false
DisplayManager*authName: MIT-MAGIC-COOKIE-1
! SECURITY: do not listen for XDMCP or Chooser requests
! Comment out this line if you want to manage X terminals with xdm
DisplayManager.requestPort: 0
DisplayManager.errorLogFile et DisplayManager.pidFile parlent d'eux-mêmes.
DisplayManager.keyFile indique le nom d'un fichier contenant une clé partagée entre xdm et les terminaux X, lorsque le protocole XDM-AUTHENTICATION-1 est utilisé. Par défaut, ce fichier n'existe pas et c'est MIT-MAGIC-COOKIE-1 qui est utilisé.
DisplayManager.servers spécifie, par le fichier /etc/X11/xdm/Xservers, le ou les serveurs X à démarrer (ne nécessitant pas XDMCP, donc locaux ), et comment les démarrer. (par défaut : un serveur sur vt7)
DisplayManager.accessFile spécifie, par le fichier /etc/X11/xdm/Xaccess, les postes distants autorisés à accéder au serveur X.
DisplayManager.willing spécifie, le programme à exécuter lorsqu'une requête Broadcast XDMCP est reçue et que cet hôte est configuré pour offrir une gestion d'affichage XDMCP. La sortie de ce programme peut être affichée sur la fenêtre du Sélecteur. Si aucun programme n'est spécifié, la chaîne "Willing to manage" est envoyée.
DisplayManager*authorize, DisplayManager._1.authorize C'est une valeur booléenne qui contrôle si la commande xdm génère et utilise une autorisation pour les connexions sur le serveur local. Si la valeur est true, la commande xdm utilise les mécanismes d'autorisation indiqués par la ressource DisplayManager*authName (une liste, séparée par des espaces). Les connexions XDMCP peuvent spécifier le mécanisme à utiliser et, dans ce cas, la valeur de DisplayManager*authName est ignorée. Par défaut, DisplayManager*authorize est true et DisplayManager*AuthName est = MIT-MAGIC-COOKIE-1.
Remarque : * indique que tous les affichages sont concernés, alors que _1 ne concerne que l'afficheur :1 par exemple.
DisplayManager._0.setup spécifie, par le fichier /usr/share/X11/xdm/Xsetup_0, le programme qui est exécuté (en tant que root) avant d'afficher la fenêtre de login.
DisplayManager._0.startup spécifie, par le fichier /usr/share/X11/xdm/Xstartup, le programme qui est exécuté (en tant que root), après une authentification réussie.
DisplayManager._0.reset spécifie, par le fichier /usr/share/X11/xdm/Xreset, le programme qui est exécuté (en tant que root), à la fin d'une session.
DisplayManager._0.startAttempts spécifie, le comportement de xdm qui tente d'ouvrir des serveurs X.
DisplayManager*chooser spécifie, par le fichier /usr/share/X11/xdm/chooser, le programme qui est exécuté pour afficher un menu aux requêtes XDMCP indirectes.
DisplayManager.resources spécifie, par le fichier /etc/X11/xdm/Xresources, la configuration de la fenêtre de connexion.
DisplayManager*session spécifie, par le fichier /usr/share/X11/xdm/Xsession, les programmes qui sont exécutés (plus en tant que root) à l'ouverture d'une session.
DisplayManager*authComplain n'est actuellement pas utilisé.
Il définit la liste des serveurs X que XDM doit démarrer, avec les attributs nécessaires.
Par défaut, seul un serveur local est démarré. D'autres serveurs locaux sont prédéfinis, mais non démarrés.
Normalement, XDM démarre le(s) serveur(s) X et affiche la fenêtre de connexion (utilisateur et mot de passe).
Certains cas particuliers peuvent être envisagés :
# $XConsortium: Xserv.ws.cpp,v 1.3 93/09/28 14:30:30 gildea Exp $
#
:0 local /usr/bin/X vt7 -deferglyphs 16 -nolisten tcp
:1 local reserve /usr/bin/X :1 vt8 -deferglyphs 16 -nolisten tcp
:2 local reserve /usr/bin/X :2 vt9 -deferglyphs 16 -nolisten tcp
:3 local reserve /usr/bin/X :3 vt10 -deferglyphs 16 -nolisten tcp
:4 local reserve /usr/bin/X :4 vt11 -deferglyphs 16 -nolisten tcp
:5 local reserve /usr/bin/X :5 vt12 -deferglyphs 16 -nolisten tcp
:0 : nom du display.
local : local (serveur X local à démarrer) ou foreign (serveur X distant déjà en marche)
/usr/bin/X : commande à exécuter
vt7 : X tournera sur la console virtuelle 7
-deferglyphs 16 : valide la mise en cache des glyphes (forme des caractères) pour les fontes 16 bits
-nolisten tcp : le serveur n'écoute pas sur le port tcp

Si l'utilisateur doit se connecter sur cette machine uniquement à partir d'un poste distant, XDM n'a pas besoin d'afficher la fenêtre de connexion.
/usr/bin/X -ac

nom_machine_distante:0 foreign
Il définit quels hôtes peuvent faire des requêtes à XDM sur cette machine, afin d'obtenir une invite d'authentification.
Cet accès peut être direct (le poste distant accède au serveur X) ou indirect (le poste distant reçoit la liste des serveurs X acceptant un accès grâce à une application chooser).
Par defaut, tous les hôtes locaux peuvent demander leur authentification, aucun poste distant n'est autorisé à un accès direct et tous les postes distants peuvent demander la liste des serveurs permettant un accès.
L'accès à distance ne sera pas abordé ici
# $Xorg: Xaccess,v 1.3 2000/08/17 19:54:17 cpqbld Exp $
# $XFree86: xc/programs/xdm/config/Xaccess,v 1.5 2003/11/22 04:51:03 dawes Exp $
# Pour les requêtes directes : tous peuvent accéder
*
# Pour les requêtes indirectes : tout hôte distant peut accéder au chooser
* CHOOSER BROADCAST #any indirect host can get a chooser
L'accès à distance ne sera pas abordé ici
C'est le programme à exécuter lorsqu'une requête Broadcast XDMCP est reçue et que cet hôte est configuré pour offrir une gestion d'affichage XDMCP. La sortie de ce programme est affichée sur la fenêtre du Sélecteur.
L'accès à distance ne sera pas abordé ici
#!/bin/sh
# $XFree86: xc/programs/xdm/config/Xwilling,v 1.1 1998/12/06 06:08:51 dawes Exp $
# The output of this script is displayed in the chooser window.
# (instead of "Willing to manage")
load="`uptime|sed -e 's/^.*load[^0-9]*//'`"
nrusers="`who|cut -c 1-8|sort -u|wc -l|sed 's/^[ ]*//'`"
s=""; [ "$nrusers" != 1 ] && s=s
echo "${nrusers} user${s}, load: ${load}"
Ce programme est exécuté (en tant que root) avant d'afficher la fenêtre de login.
On peut noter que KDM utilise également ce script, ce qui explique la présence d'éléments relatifs à KDE.
if [ -f /etc/profile.d/kde.sh ];then
. /etc/profile.d/kde3.sh
fi
if [ -x /etc/X11/xinit/fixkeyboard ]; then
/etc/X11/xinit/fixkeyboard
fi
if [ -x /etc/X11/xinit.d/numlock ]; then
/etc/X11/xinit.d/numlock &
fi
for i in /etc/X11/xsetup.d/*.xsetup ; do
[ -d $i ] && continue
if [ -x $i ]; then
if grep -q "# to be sourced" $i; then
. $i
else
$i &
fi
fi
done
# Completed by Paiiou <paiiou@free.fr>
if [ -r /usr/share/mga/backgrounds/default.jpg -a -x /usr/bin/qiv -a -f /var/run/xdm.pid ]; then
/usr/bin/qiv -x /usr/share/mga/backgrounds/default.jpg
fi
Ce programme est exécuté (en tant que root) après l'authentification de l'utilisateur.
Le script vérifie si, pour une raison quelconque, la connexion n'est pas interdite et un message est alors délivré à l'utilisateur.
Ensuite, il donne les droits de l'utilisateurs à /dev/console.
Pour terminer, il enregistre la session dans les fichiers /var/log/wtmp et /var/run/utmp. Ces fichiers conservent une trace de toutes les connexions et déconnexions.
#!/bin/sh
if [ -f /etc/nologin ]; then
xmessage -file /etc/nologin -timeout 30 -center
exit 1
fi
/usr/share/X11/xdm/GiveConsole
# sessreg uses the parent pid, so we have to exec it
exec /usr/bin/sessreg -a -w "/var/log/wtmp" -u "/var/run/utmp" -x "/etc/X11/xdm/Xservers" -l $DISPLAY -h "" $USER
Il permet de configurer l'aspect de la fenêtre de connexion : message d'accueil, police de caractères, dimensions ...
Il est également possible de définir un papier peint pour la fenêtre de connexion, mais ceci se fait dans le fichier /usr/share/X11/xdm/Xsetup_0. Le paquetage qiv doit être installé.
Ce fichier exécute simplement le fichier /etc/X11/Xsession
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, aucun paramètre n'est spécifié.
Voici, en résumé, le processus :
* gestion des paramètres nationaux avec /etc/profile.d/10lang.sh et /etc/sysconfig/i18n
* journal de session : création ou vidage de $HOME/.xsession-errors
* fond d'écran : rouge, si c'est root qui se connecte
* forme du curseur : sablier
* libère la mémoire, après xbanner
* ajoute éventuellement les ressources X de l'utilisateur (icônes ...) aux ressources système
* configuration du clavier si la session est ouverte par le réseau, il faut vérifier si le clavier distant est correctement configuré
* définition du fichier d'initialisation de console-kit (suivi des utilisateurs, des sessions ...)
* définition du fichier de lancement du navigateur internet (/usr/bin/www-browser)
* définition du bureau : celui donné en argument, sinon celui du fichier $HOME/.desktop, sinon celui du fichier /etc/sysconfig/desktop (pour moi, xfce4)
* 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
- gpg-agent : GPG permet de transmettre des messages signés et/ou chiffrés.
gpg-agent stocke temporairement le mot de passe ou la phrase, de sorte que vous ne devrez les taper qu'une seule fois pour une session.
- 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
- Mod_Meta_L_Disable :_retire l' identifiant MOD_META_L, principalement pour xemacs
- msec : exécute /usr/bin/xhost + localhost (autorise l'ouverture de fenêtres depuis localhost)
- 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 (Bureau, Documents ...)
- 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
le bureau est défini : lancement de ce bureau
le bureau est 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
Le processus init a déjà initialisé le système XWindow. Il lance le démon xdm.
XDM gère la connexion sur les terminaux X, ceux-ci pouvant être locaux ou à distance.
(En effet, par l'intermédiaire du protocole XDMCP, XDM permet de se connecter à des serveurs X distants et XDM permet à des serveurs X distants de se connecter à cette machine.)
Par défaut XDM est configuré pour le serveur X local, avec un terminal X.
Les principales étapes de XDM, en utilisation locale, sont :