Le Webcafé Ubuntu, un peu de technique.

L’objectif du Webcafé que nous mettons en place au festival des vieilles charrues est de fournir de nombreux postes au public. Ainsi, les festivaliers peuvent avoir un accès à Internet tout en découvrant Ubuntu.
En plein festival, je profite d’un moment de calme pour écrire quelques lignes qui présentent (brièvement) la solution technique que nous utilisons pour faire tourner le Webcafé. Je vais m’attarder sur deux aspects : le matériel utilisé et la configuration logiciel.

Durant la lecture de ce billet, gardez à l’esprit que la solution que nous utilisons n’est pas parfaite. Cependant, elle a le mérite de fonctionner et d’avoir évolué régulièrement, d’une part du fait des mises à jour régulières d’Ubuntu, mais aussi parce que le matériel que nous avions à disposition changeait.

Matériel à disposition

Nous avons à notre disposition deux ordinateurs que nous appelons « serveurs ». Ces derniers ont chacun 8 cœurs, 8 Gio de mémoire vive, mais surtout plusieurs cartes graphiques avec plusieurs sorties (VGA / DVI / HDMI / DisplayPort / Mini-DisplayPort) par carte graphique. En plus de ses serveurs, on dispose d’autant de clavier, souris et écrans que de postes que nous mettons à disposition.

Voici quelques exemples de cartes graphiques que nous avons :

  • Quelques cartes « classiques » :
    • Trois cartes NVIDIA avec deux sorties DVI
    • Une carte avec deux sorties, une VGA et une DVI
  • Des cartes utilisant la technologie Eyefinity :
    • Une carte avec une cinq sorties mini DisplayPort
    • Une carte avec deux sorties DVI et quatre sorties DisplayPort
  • Une carte en PCI et non pas PCI-express, cette carte dispose d’ailleurs de trois sorties (VGA, DVI et HDMI) mais, à l’exception des cartes Eyefinity, uniquement deux sorties sont utilisable par carte.

Asus HD7970 directcu II

La difficulté est de réaliser une configuration qui permet d’avoir un maximum de sorties vidéos. Nos serveurs disposent de deux connecteurs PCI-Express et d’un connecteur PCI. On peut ainsi brancher trois cartes graphiques (dont une PCI, très difficile à trouver de nos jours).

Une fois que le matériel est là, il faut s’attaquer à la partie essentielle : la configuration des logiciels.

plan materiel

Configuration logiciel

Sur le serveur où est installé la dernière version d’Ubuntu (actuellement la 12.04), on y lance plusieurs serveurs X : un par carte graphique. Il nous est déjà arrivé de lancer un seul serveur X, mais pour simplifier la configuration (notamment à cause de cartes graphiques différentes qui nécessitent des pilotes différents), on lance plusieurs serveurs X. Cette dernière méthode apporte un avantage considérable : en cas de plantage du serveur X, moins de postes sont impactés.

LAYOUT=L0 # Le layout qui correspond à la carte graphique dans la configuration de xorg
X_DISPLAY=1 # Les serveurs X sont numérotés 1, 2, 3, ...
X -br -audit 0 -dpms -s 0 -logverbose 20 -layout $LAYOUT :$X_DISPLAY -novtswitch -sharevts -keeptty

NB : Cette partie est probablement la plus difficile puisque qu’il faut configurer X et trouver les bons pilotes pour les cartes graphiques. C’est encore plus difficile quand il faut faire cohabiter des pilotes ATI et NVDIDIA, libres et propriétaires…

Une fois qu’un serveur X est lancé, il a un espace égal à la totalité des écrans. Il nous faut ensuite lancer des serveurs Xephyr (qu’on peut considérer comme des mini serveurs X). Ces derniers sont lancés à l’intérieur d’un serveur X, doivent avoir la taille d’un écran et sont positionnés pour que l’espace d’un serveur Xephyr corresponde bien à un écran en entier. En effet, il est possible de décaler le serveur Xephyr et l’espace de celui-ci sera en partie sur un écran et en partie sur un autre.

À chaque lancement d’un serveur Xephyr, on y associe un clavier et une souris. Si cette opération n’est pas réalisée correctement, on se retrouve avec un curseur qui bouge sur l’écran du voisin et idem pour le clavier.

X_DISPLAY=1 # Les serveurs X sont numérotés 1, 2, 3, ...
XEP_SCRSIZE=1366x768
XEP_MOUSEID=/dev/input/...
XEP_KEYBDID=/dev/input/...
XEP_DISPLAY=101 # Les serveurs Xephyr sont numérotés 101, 102, 103, 104, 105, ...

DISPLAY=:$X_DISPLAY /usr/bin/Xephyr \
-ac \
-screen $XEP_SCRSIZE \
-mouse evdev,,device=$XEP_MOUSEID \
-keybd evdev,,device=$XEP_KEYBDID,xkbrules=evdev,xkbmodel=pc105,xkblayout=fr,xkboption=grp:alts_toogle \
-wr \
:$XEP_DISPLAY

Une fois que tout ça fonctionne, il suffit de lancer gnome en spécifiant le bon DISPLAY (variable qui va identifier chaque serveur X et serveur Xephyr).

XEP_DISPLAY=... # Numéro du Xephyr
DISPLAY=:$XEP_DISPLAY gnome-session --session ubuntu

couches

Pour aller plus loin et permettre aux festivaliers de tester pleinement Ubuntu (notamment en installant des logiciels), nous avons fait le choix d’utiliser des LXC. Ainsi, rien ne change à l’exception du fait que les GNOME ne sont pas lancés dans la machine hôte, mais dans les LXC.

IP_HOST=10.0.3.1
XEP_DISPLAY=... # Numéro du Xephyr
DISPLAY=$IP_HOST:$XEP_DISPLAY gnome-session --session ubuntu

Cette configuration matérielle et logicielle forme ce que nous appelons un multi-seat. Pour faire le Webcafé, il en faut un peu plus.

Le Webcafé dans son ensemble

Actuellement, nous mettons à disposition 12 postes. Ce qui fait 12 écrans, 12 claviers, 12 souris et 2 serveurs. Il faut donc faire attention à bien organiser l’espace pour éviter de se perdre dans les câbles.

À cela s’ajoute les branchements électriques mais aussi le réseau.

Arrière du serveur multiseat avec une carte grahique à cinq sorties.
N’hésitez pas à poser vos questions et faire part de vos remarques, notamment si vous avez des suggestions d’améliorations, car nous sommes toujours soucieux d’optimiser notre fonctionnement.

, , ,

7 Responses to “Le Webcafé Ubuntu, un peu de technique.”

  1. obrowny 24 juillet 2012 at 18 h 41 min # Répondre

    Est ce qu’une configuration type ltsp ne serait pas plus simple à mettre en place ?

    • webcafe 25 juillet 2012 at 11 h 19 min # Répondre

      C’est bien possible que la mise en place en soit plus simple, en effet.
      Mais nous ne disposons pas de petites machines « légères », du moins pour l’instant :) Embarquer de vieux PIII dans nos bagages n’était pas non plus une option envisageable, d’un point de vue encombrement.
      Nous étudions une solution à base de RasberryPi, pour l’année prochaine.
      Au passage, corrigez-moi si je me trompe mais LTSP ne gère pas l’accélération graphique ? Nous souhaitons fournir de *vrais* Ubuntu, pleinement fonctionnels, tel que ça fonctionnerait chez eux. (donc machine récente)

      • obrowny 25 juillet 2012 at 12 h 31 min # Répondre

        Effectivement il y a la notion d’encombrement…
        Pour l’accélération 3D il y a possibilité d’installer les apps localement :
        https://wiki.ubuntu.com/ltsp-localapps
        ltsp est idéla pour prendre la main sur les clients pour la formation ou l’assistance par exemple via epoptes

        Je ne crois pas que le rasberry pi fonctionne correctement sous ubuntu mais d’autres solutions à base de allwinner A10 cortex A8 peuvent sembler prometteuses : http://rhombus-tech.net/allwinner_a10/
        Cordialement,

  2. obrowny 27 juillet 2012 at 17 h 11 min # Répondre

    Ca serait bien que vous éditiez un document sur ce projet de webcafé avec infrastructure technique, organisation, budget de façon à ce que d’autres lug puisse dupliquer et perfectionner le schéma.
    Ca serait bien de voir ça dans diverses grosses manifestations !
    De plus ça pourrait permettre éventuellement quelques économies d’échelle sur l’achat de goodies, bâches, tables…
    Ce que je trouve remarquable dans votre idée c’est de venir au devant des non initiés alors que nous avons toujours la fâcheuse tendance à rester entre nous…
    Il faut donc un livre blanc ubuntu café ! ;-)

  3. Arthrik 3 août 2012 at 13 h 31 min # Répondre

    Une brouette de raspi pourrait etre bien. Le tout pouvant etre administré par ssh

    • olive 3 août 2012 at 15 h 17 min # Répondre

      Je viens justement de recevoir ma première RasberryPi (B). On verra ce que ça a dans le ventre, mais à mon avis ça ne fera pas mieux que switch usb intelligent et client X.

  4. arius 24 octobre 2013 at 13 h 26 min # Répondre

    je voudrais realiser un multiseat avec mon pc actuel qui tourne sous ubuntu 12.04 LTS ( 2 cartes graphiques à 2 sorties vga chacune) donc au finish je voudrais avoir 4 postes clients, mais malgré mes efforts rien.pourriez vous me donner la marche à suivre pour le réaliser (configuration serveur x, moniteur, clavier, souris, etc…), sur fichier pdf ce serai idéal pour moi, merci

Laisser un commentaire