Forum Linux.debian/ubuntu Terminaux X, XDMCP et CD Bootable

Posté par  (site web personnel) .
Étiquettes : aucune
0
2
août
2005
[Message posté sur le forum presence-pc]

Bon, j'explique le problème. Je suis actuellement en stage et mon projet est de faire un système sur cd bootable. Ce système est lancé sur un serveur qui démarre ensuite des vieilles machines diskless. Le boot pxe marche, le wol aussi, bref tout va pour le mieux. Tant que je travaille sur disque dur, il n'y a aucun problème.

Par contre, ça se gate dès que je fais un cd bootable. Ma technique pour faire le cd et de créer un fichier contenant mon système de fichier en entier (sauf /home qui est monté sur le disque dur). Je compresse ensuite ce fichier. Mon initrd se charge de décompresser ce fichier en RAM puis d'effectuer un pivot_root et un chroot afin de démarrer mon système "normalement". Tout ca marche très bien sauf une chose. En effet, lorsque les machines diskless se lancent, lors de la requête XDMCP, rien ne se passe. Le serveur X sur les clients se lance mais il reste sur le fond gris et je n'ai pas de bannière de login (celle de kdm). J'ai essayé de faire un tcpdump sur le serveur et en regardant les paquets, on a l'impression que le serveur ne répond pas. Encore plus étrange, il suffit que j'appuie sur les touches [CTRL] et [ALT] sur le clavier du serveur pour que comme par magie, le bazar se déclanche et que j'ai enfin mon login graphique sur les tx. Si j'attend sans rien faire, sur les tx j'ai soit le message "XDM: too many retransmissions" ou bien "Auth name: MIT-MAGIC-COOKIE-1 ID: -1" à répétition avec un XDMCP fatal error comme final. Si quelqu'un à déjà eu ce genre de problème.

Si vous avez des questions supplémentaires, n'hésitez pas.

En vous remerciant.
  • # R/W

    Posté par  . Évalué à 2.

    En même temps je suis pas sur que ton petit monde sur live-cd n'aie pas besoin d'écrire quelquepart pour fonctionner correctement... Par exemple /tmp /var/tmp et /etc devraient selon moi rester en lecture / écriture. Comment faire ça en live-cd? Simple. Soit tu monte ces répertoires en système de fichier tmpfs qui te mettra tout ce petit monde en RAM, soit tu merge tout ton système de fichier avec un unionfs (patch noyau nécessaire il me semble) qui stockera que ce qui est modifié en RAM et te permettra d'éditer / écrire n'importe quoi comme si tu étais sur un disque dur.
    En espérant avoir pu t'aider...
    • [^] # Re: R/W

      Posté par  (site web personnel) . Évalué à 1.

      Tu m'as mal lu :p . Mon système qui est contenu dans un fichier est décompressé en ram (ramfs). J'ai donc toute la racine en rw. Je fais même régulièrement des apt-get install à partir du live-cd pour mes tests et au démarrage suivant, ils ne sont plus installés :p . Magique!

      Quand à /tmp et /var/lock, au cas où, ils sont en tmpfs.
  • # Résolu

    Posté par  (site web personnel) . Évalué à 2.

    Bon, le problème est résolu, et la solution n'a pas été des plus simples. Après pas mal de tests sur xhost, xauth, MAGIC-COOIE and co, je me suis rendu compte qu'au bout d'un certain moment, la connexion marchait, bien que je n'ai appuyé sur aucune touche (je me connectait en ssh au serveur). Il se passait donc quelque chose pendant les 15 minutes (temps moyen avant que ça marche).
    C'est un ps axlf qui m'a permis de trouver la solution. J'en avais fait un avant que ça marche puis un après. En comparant les deux, je me suis rendu compte que la colonne WCHAN était renseignée quand la connexion ne voulait pas s'établir. En recherchant dans le man, j'ai vu que cette colonne indiquait ce que le processus attendait pour pouvoir continuer normalement. En clair, il était en attente de quelque chose. Et ce quelque chose, c'était random. En effet, pour créer un MAGIC-COOKIE, kdm à besoin d'un nombre pseudo-aléatoire (le /dev/random). Or, avec un système de fichier en ram, il ne pas y avoir assez d'évènements pour pouvoir en générer un. Donc kdm attendait. Il m'a suffit de lancer des commandes demandant des accès disques pour que kdm se débloque (la colonne WCHAN est nulle dans ce cas). C'est aussi pour cela que cela marchait avec la touche [CTRL] - [ALT] car les évènements clavier permettait de peupler /dev/random. Pourquoi ces deux touches particulièrement, bonne question :p .

    Bon, sur ce, je vais chercher un moyen de peupler /dev/random automatiquement. Il m'aura quand même fallu 4 jours pour trouver ça. Content d'être enfin débarassé :p .

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.