EEIJ

Païou : Mandriva Linux depuis 2002. Aujourd'hui, c'est Mageia Linux


Sommaire


Conforme à XHTML 1.0 Strict Conforme à CSS!

On se lasse de tout, sauf de comprendre.
Attribué à Virgile.

Démarrage graphique avec startx, sous Linux Mageia

Historique

6 juin 2011 : Création de cette page.
2 août 2011 : Nouvelle présentation et actualisation.

Difficulté

Pour : linuxien averti.

 Introduction

Que ce soit avec SystemV Cliquez ou avec Systemd Cliquez, vous pouvez démarrer une session en mode texte.

La présente page montre le processus lorsque vous vous êtes connectés en mode texte et que vous lancez la commande startx.

 Configuration

Avec la commande startx, il peut être utile de spécifier quel est l'environnement graphique à démarrer. Il existe plusieurs façons de le préciser :

Pour les curieux, survolez : exemples de fichiers

~/.xinitrc

#!/bin/sh
if [ -d /etc/X11/xinit/xinitrc.d ]; then
  for f in /etc/X11/xinit/xinitrc.d/*; do
    [ -x "$f" ] && . "$f"
  done
  unset f
fi
exec startlxqt

~/.desktop

DESKTOP=LXQT

Haut

 Le déroulement de startx

 Le script /usr/bin/startx

La commande startx lance une session du système XWindow. Elle constitue une "partie frontale" du programme xinit. En fait, elle prépare les arguments de la commande xinit, puis lance cette commande avec les arguments pour le client X et pour le serveur X.
Le déroulement est le suivant :

Haut

 La commande /usr/bin/xinit

xinit démarre le serveur X avec les arguments définis grâce à startx

Ensuite xinit lance le client X défini par l'argument, ici : /etc/X11/xinit/xinitrc
xinitrc contient la ligne
exec /etc/X11/Xsession $*
Remarque : $* réprésente les arguments éventuels. Il n'y en a pas ici.

Haut

 Le script /etc/X11/Xsession

Il est aussi bien utilisé par la commande startx que par les 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 :

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

Pour les curieux, survolez : un peu plus de détails

* 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

Haut

 En résumé

startx

Prépare les arguments pour la commande xinit.

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 .xinitrc dans la racine de l'utilisateur. Mais prudence ! Il ne faut rien oublier.

xinit

xinit démarre le serveur X, puis démarre le client X (votre session), soit en passant par /etc/X11/Xsession, soit en prenant vos commandes (le fichier ~/.xinitrc si vous en avez créé un).

Xsession

Si vous n'avez pas modifié dans un sens contraire les arguments de xinit, ce dernier lance /etc/X11/Xsession.

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.

La définition du bureau à ouvrir suit une règle bien définie :

  1. Si un argument est donné (l'argument de startx), c'est celui-ci qui définit le bureau.
    Dans le cas où cet argument est erroné, une session de secours est recherchée.
  2. Si aucun argument n'est donné, le bureau est recherché, dans l'ordre suivant
    • celui de votre fichier ~/.desktop, s'il existe,
    • à défaut, celui du fichier /etc/sysconfig/desktop, s'il y est défini,
    • à défaut, celui du premier fichier du répertoire /etc/X11/wmsession.d
Haut