Richard Bruno
navigation
Home
admin









X
October 20th, 2016

Table des matières


Principes
Installation d'un serveur X et de gnome
Erreurs
Outils
Jouer avec un serveur X
Fenêtre Xload absente de la barre de tâches


Principes



Runlevel 3 et rôle de .xinitrc
"Le véritable programme que X exécute, et qui exécute d'autres programmes, est votre script .xinitrc ou .xsession. Quand X est démarré, votre script .xinitrc ou .xsession est exécuté, et quand le script est fait, X se termine. Laissez moi répéter cela car c'est important: quand .xinitrc est fini, cela signifie que X se termine. Ce n'est pas quand vous sortez de votre gestionnaire de fenêtres."
Source : http://old.fluxbox.org/docbook/fr/html/app-setup.html

Exemple 1
Création d'un fichier xinitrc dans mon compte et lancement de X :

# cat .xinitrc
xterm & sleep 10
# startx



Exemple 2
On peut également démarrer le X comme le ferait prefdm au niveau 5 :

# gdm -nodaemon



Exemple 3
Lancement de twl :

# cat .xinitrc
twm
# startx


Lorsque twm se lance, il ne se passe pas grd chose (sinon un écran noir).
Mais, en laissant le bouton gauche appuyé, on découvre le menu de twm...
(il faut parfois attendre un peu)

Runlevel 5

"En fonction des environnements de bureau installés sur votre système Red Hat Linux spécifique, trois gestionnaires d'affichage différents sont disponibles pour l'identification des utilisateurs. Le gestionnaire d'affichage xdm est l'outil d'authentification X d'origine. xdm vous permet uniquement de vous connecter et de démarrer une session X, rien de plus. Le gestionnaire d'affichage gdm, conçu pour fonctionner avec l'environnement de bureau GNOME, et le gestionnaire d'affichage kdm, utilisé avec l'environnement de bureau KDE, vous permettent de configurer l'environnement de bureau, ou la session, que vous souhaitez utiliser après l'identification. En outre, vous pouvez redémarrer ou arrêter le système à partir de l'écran de connexion. Le gestionnaire d'affichage gdm vous permet également de configurer la langue à utiliser."
Source : http://www.linux-kheops.com/doc/redhat72/rhl-rg-fr-7.2/s1-x-runlevels.html

Une fois arrivé dans le runlevel 5, le script /etc/init/prefdm est exécuté. cf. ci-dessous.

Rôle de prefdm
/etc/init/prefdm -> /etc/X11/prefdm
Si existe /etc/sysconfig/desktop
cf http://docs.redhat.com/docs/fr-FR/Red_Hat_Enterprise_Linux/5/html/Deployment_Guide/ch-sysconfig.html#s2-sysconfig-desktop
Ce fichier permet de définir l'env de l'utilisateur :

cat /etc/sysconfig/desktop
DESKTOP="KDE"
DISPLAYMANAGER="XDM"



XDM ne permet pas de choisir de bureau => c'est le bureau par défaut qui est lancé : gnome

Si non existe /etc/sysconfig/desktop
"Si aucun environnement de bureau n'est spécifié, prefdm navigue dans les gestionnaires d'affichage gdm, kdm et xdm pour trouver celui qu'il pourra utiliser. Une fois que c'est fait, prefdm le lance pour l'identification de l'utilisateur.

Chacun des gestionnaires d'affichage utilise le fichier /etc/X11/xdm/Xsetup_0 pour configurer l'écran de connexion.

Une fois que l'utilisateur est connecté au système, le script /etc/X11/xdm/GiveConsole est exécuté afin d'assigner la propriété de la console à l'utilisateur. Ensuite, le script /etc/X11/xdm/Xsession s'exécute pour accomplir bon nombre des tâches normalement prises en charge par le script xinitrc lorsque X est démarré au niveau d'exécution 3, y compris le paramétrage des ressources système et utilisateur, ainsi que l'exécution des scripts du répertoire /etc/X11/xinit/xinitrc.d."

L'utilisateur peut spécifier l'environnement de bureau qu'il veut utiliser lors de l'identification en se servant des gestionnaires d'affichage gdm ou kdm (sélection dans le menu Session).

Si l'environnement de bureau n'est pas spécifié dans le gestionnaire d'affichage, le script /etc/X11/xdm/Xsession vérifiera les fichiers .xsession et .Xclients dans le répertoire de l'utilisateur afin de décider quel environnement de bureau charger. En dernier recours, le fichier /etc/X11/xinit/Xclients est utilisé pour la sélection d'un environnement de bureau ou d'un gestionnaire de fenêtres à utiliser, comme dans le niveau d'exécution 3.

Lorsque l'utilisateur termine une session X sur l'affichage par défaut (:0) et se déconnecte, le script /etc/X11/xdm/TakeConsole s'exécute et réassigne la propriété de la console à l'utilisateur de base. Le gestionnaire d'affichage d'origine, qui a continué à s'exécuter après la connexion de l'utilisateur, prend le contrôle en créant un nouveau gestionnaire d'affichage. Ceci a pour effet de redémarrer le serveur XFree86, d'afficher une nouvelle fenêtre de connexion et de recommencer le processus à zéro.

Réglages
Les réglages ne se font plus avec l'utilitaire system-config-display mais avec xrandr :
Listez les résolutions disponibles

xrandr -q



Changez la résolution

xrandr --output LVDS1 --mode 1024x768



Faites tourner votre écran (rotation 90°)

xrandr --output LVDS1 --rotate right
xrandr --output LVDS1 --rotate inverted
xrandr --output LVDS1 --rotate normal



Exemple : XDM et fluxbox

RHEL

cat /etc/sysconfig/desktop
DISPLAYMANAGER="XDM"



debian

# more /etc/X11/default-display-manager
/usr/bin/xdm



cat ~/.xsession
exec startfluxbox




Installation d'un serveur X et de gnome



RHEL

En francais :

yum groupinstall "Système X Window" Bureau "Bureau à usage général"



En anglais :

yum groupinstall yum groupinstall "X Window System" Desktop "Desktop Platform"





Erreurs



Fatal module fbcon not found.

Lors de l'exécution de startx avec un utilisateur lamda...
Solution : il faut désactiver SELinux

cf : http://perso.univ-lemans.fr/~brichard/?doc=CentOS#publickeys

Xt error: Can't open display: %s
Après un "su", j'ai ce message lorsque je lance une application qui fait appel au serveur X.

A lancer avant le su :

Solution 1, pas propre car on autorise tout le monde à se connecter au serveur X :

xhost +
access control disabled, clients can connect from any host



Solution 2, on autorise uniquement le root de la machine :

xhost +SI:localuser:root



X11 connection rejected because of wrong authentication

Après un "sudo -i su" j'ai le message ci-dessus lorsque je lance une application nécessitant le X.

root@zzz:~# xterm
X11 connection rejected because of wrong authentication.
xterm: cannot open display



Solution :

ensai@zzz:~$ sudo -i XAUTHORITY=/home/ensai/.Xauthority su
[sudo] password for ensai:
root@zzz:~# xterm &



Xt error: Can't open display: %s sur Redhat

yum install xauth
Modif de /etc/ssh/sshd_config :

X11Forwarding yes
X11UseLocalhost no




X11 connection rejected because of wrong authentication

Après un "su - user" j'ai le message ci-dessus lorsque je lance une application nécessitant le X.

Solution :

[root@statix ~]# echo $DISPLAY
localhost:11.0



Notre DISPLAY est en 11.

[root@statix ~]# xauth list
statix/unix:12 MIT-MAGIC-COOKIE-1 ef12e1de55082f8c9045cf6a2ce47df9
statix/unix:10 MIT-MAGIC-COOKIE-1 2fbdc0364075d16f3f0c812b84559baf
statix/unix:11 MIT-MAGIC-COOKIE-1 03b559c941ef2440e84a6887a67c542e



Le cookie associé au DISPLAY est le dernier.

On fait maintenant le su, on ajoute manuellement le cookie et on définit le DISPLAY :

[lsfadmin@statix ~]$ xauth add statix/unix:11 MIT-MAGIC-COOKIE-1 03b559c941ef2440e84a6887a67c542e
[lsfadmin@statix ~]$ export DISPLAY=localhost:11.0




Source : http://linux-attitude.fr/post/conserver-son-display-apres-un-su




X11 forwarding request failed on channel 0

Il manque le package xauth.
Sur Redhat, la commande suivante solutionne le problème :

rpm -ivh /usr/local/src/xorg-x11-xauth-1.0.2-7.1.el6.x86_64.rpm
attention: /usr/local/src/xorg-x11-xauth-1.0.2-7.1.el6.x86_64.rpm: Entête V3 RSA/SHA256 Signature, key ID NOKEY
Préparation... ########################################### [100%]
1:xorg-x11-xauth ########################################### [100%]




Outils



moniteurs système pour X11
Gkrellm
Conky

Gestionnaire de fichiers
Thunar

Jouer avec un serveur X


Pour déporter l'affichage (i.e. afficher des choses sur l'écran d'un autre poste. i.e afficher des choses sur un serveur X distant) :

DISPLAY=<IP serveur X>:0.0
xclock



Note 1 : le serveur X doit être lancé SANS l'option nolisten TCP.
On ne doit pas avoir ca :

ps -ef|grep X
root 7703 7695 11 15:53 tty7 00:00:05 /usr/bin/X :0 -br -verbose -auth /var/run/gdm/auth-for-gdm-FU7lv0/database -nolisten tcp


Si c'est le cas avec Ubuntu,
- Modifiez /etc/gdm/gdm.schemas :


<schema>
<key>security/DisallowTCP</key>
<signature>b</signature>
<default>false</default>
</schema>


- Relancez le serveur X :

/etc/init.d/gdm restart



Note 2 : le serveur X doit autoriser les connectes distantes

xhost +


xhost

permet de vérifier comment sont positionnés les droits

Note 3 : Sous windows, Xming est bon serveur X.
Pour autoriser l'accès distant, vous pouvez :
- ajouter l'option "-ac" dans la ligne de lancement (pas secure du tout...)
- taper xhost + (pas secure du tout...)
- taper xhost +<IP à autoriser> (secure !!)

http://mobaxterm.mobatek.net/ est un autre serveur X pour windows.


Note 4 : Pour tester :
xeyes, xterm, xclock etc...


Fenêtre Xload absente de la barre de tâches



Objectif : surveiller plusieurs serveurs avec Xload sans pour autant avoir plusieurs xload dans la barre de tâche ni dans le systray.

J'ai utilisé DevilsPie pour placer les fenêtres xload sur tous les bureaux :

cat .devilspie/xload.ds
(if

(is (application_name) "xload")
(begin

(skip_pager)
(skip_tasklist)
(pin)


)


)




puis wmctrl pour retailler les fenêtres et les placer au bon endroit.
Un extrait de mon script :

# h = hauteur initiale de la fenêtre xload
h=24
for i in srv1 srv2 srv3
do

h=$(expr $h + 91)
nohup ssh -X root@$i "xload -update 10 -font 6x13" &
sleep 2
cmd=$(wmctrl -l |grep xload|grep $i |tail -n 1 |awk -v h=$h '{print "wmctrl -i -r "$1" -e 0,1210,"h",63,63"}')
while [ -z "$cmd" ]
do
echo wmctrl pas encore renseigné...
sleep 2
cmd=$(wmctrl -l |grep xload |grep $i |tail -n 1 |awk -v h=$h '{print "wmctrl -i -r "$1" -e 0,1210,"h",63,63"}')
done

# echo $cmd
eval $cmd


done





Dernières modifs
Systemd (October 24th, 2020)
TP - rsyslogd (June 20th, 2017)
Gestion de la memoire (June 20th, 2017)
Ansible (November 10th, 2016)
Fichiers et systèmes de fichiers (November 8th, 2016)
X (October 20th, 2016)
Obtenir des informations sur le système (October 19th, 2016)

Contact
Pour m'envoyer un mail,
Pour me laisser un commentaire :
richard.brunooo
chez
gmail.com


powered by kure, modified by Bruno