Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
tutoriel:comment_creer_un_terminal_x_ou_recycler_une_vieille_machine [Le 10/09/2011, 08:40] – [Client sous Windows] Mauvais accent à "compléter" et "léger" rustyBSD | tutoriel:comment_creer_un_terminal_x_ou_recycler_une_vieille_machine [Le 12/09/2018, 07:36] (Version actuelle) – lverdier | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | ---- | ||
+ | |||
+ | ====== Comment créer un terminal X ou recycler une vieille machine ? Serveur et client XDMCP ====== | ||
+ | |||
+ | <note attention> | ||
+ | |||
+ | ===== Introduction ===== | ||
+ | |||
+ | ==== Motivation ==== | ||
+ | Vous venez d' | ||
+ | |||
+ | |||
+ | |||
+ | ==== Terminal X? ==== | ||
+ | Le but de cette page est de permettre à une machine, généralement obsolète, d' | ||
+ | |||
+ | Voir une alternative : [[: | ||
+ | |||
+ | ==== Utilisation ==== | ||
+ | Sur le vieil ordi vous pourrez utiliser vos applications de bureautique, | ||
+ | Pratique pour une utilisation privée, pour les écoles, salle informatique. Même au bureau. En fonction du type d' | ||
+ | |||
+ | ==== Alternatives ==== | ||
+ | La solution proposée sur cette page nécessite qu'une distribution linux soit installée sur le client, il faut donc que cette machine possède un disque dur. Il existe une autre manière de recycler de vieilles machines et ce même si le client ne possède pas de disque dur. Il s'agit de LTSP (Linux Terminal Server Project). Néanmoins, il me semble que cette solution soit plus lourde à mettre en place (gestion du dhcp, de tftpboot, de nfs, des paquets, ... en ce qui concerne le serveur et netboot pour le client). | ||
+ | |||
+ | |||
+ | ==== Vocabulaire & Conventions ==== | ||
+ | |||
+ | * **nouvel ordi**: le serveur. | ||
+ | * **serveur**: | ||
+ | * **vieil ordi**: le client. | ||
+ | * **client**: l' | ||
+ | * **XDMCP**: X Display Manager Control Protocol, protocole permettant à une machine d' | ||
+ | * **BACKSPACE**: | ||
+ | |||
+ | * Le masque de sous-réseau est 255.255.255.0 | ||
+ | * Le serveur a comme adresse IP 192.168.1.2 | ||
+ | * Le client a comme adresse IP 192.168.1.3 | ||
+ | |||
+ | ===== Matériel ===== | ||
+ | |||
+ | Un réseau Ethernet (TCP/IP ou IP) entre les deux machines est nécessaire, | ||
+ | |||
+ | * Un câble croisé pour relier les 2 ordinateurs directement | ||
+ | * Un hub ou mieux un switch (ou switch-hub). | ||
+ | * Un router Internet avec plusieurs portes | ||
+ | |||
+ | Suivant la méthode exposée ici, les communications entre les 2 ordinateurs ne sont pas cryptées et donc un quidam pourrait écouter les communications entre les deux ordinateurs. | ||
+ | |||
+ | **Option 1** : La vitesse maximale et la plus grande sécurité seront atteintes en consacrant une carte Ethernet du serveur au réseau de terminaux X et une à la connexion Internet. | ||
+ | |||
+ | **Option 2** : créer un tunnel de communications avec SSH. (expliqué par la suite) | ||
+ | |||
+ | ==== Serveur ==== | ||
+ | * Côté processeur, carte graphique: à vous de voir, cela dépend de vos exigences. | ||
+ | * Pour la RAM: il vous faut (1+1/ | ||
+ | * Carte réseau 10/ | ||
+ | |||
+ | ==== Client ==== | ||
+ | * un Pentium 166 devrait suffire | ||
+ | * 32Mo de RAM | ||
+ | * disque de 3Go (cela dépend de la distribution linux que vous installerez) | ||
+ | * carte graphique avec 2Mo de VRAM | ||
+ | * Carte réseau 10/ | ||
+ | * un écran, un clavier, une souris bien entendu | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Configuration du serveur ===== | ||
+ | Une Ubuntu ou Kubuntu normale conviendra (pas la version //serveur// sinon il n'y aura pas de X). | ||
+ | |||
+ | |||
+ | |||
+ | ==== Méthode graphique ==== | ||
+ | |||
+ | === Ubuntu === | ||
+ | Sous Gnome donc, allez dans le menu Système => Administration => Configuration de l' | ||
+ | |||
+ | === Kubuntu === | ||
+ | Pas de méthode graphique connue, voyez la méthode par la console, ce n'est pas compliqué. | ||
+ | |||
+ | ==== Autre méthode ==== | ||
+ | <note attention> | ||
+ | === Ubuntu === | ||
+ | [[: | ||
+ | < | ||
+ | [XDMCPServer] | ||
+ | enabled=true | ||
+ | </ | ||
+ | Pour Ubuntu 18.04, le gestionnaire de session est GDM, il faut donc modifier le fichier / | ||
+ | < | ||
+ | [xdmcp] | ||
+ | enabled=true | ||
+ | </ | ||
+ | |||
+ | === Kubuntu === | ||
+ | [[: | ||
+ | |||
+ | Recherchez la section [Xdmcp] (vers la fin du fichier), mettez la variable //Enable// à true, cette partie du fichier devrait ressembler à ceci | ||
+ | < | ||
+ | (...) | ||
+ | [Xdmcp] | ||
+ | Enable=true | ||
+ | Willing=/ | ||
+ | Xaccess=/ | ||
+ | Port=177 | ||
+ | </ | ||
+ | Ensuite [[: | ||
+ | < | ||
+ | 192.168.1.3 | ||
+ | </ | ||
+ | Si vous voulez que tous les postes de votre réseau puisse y accéder, ajoutez | ||
+ | < | ||
+ | 192.168.1.* | ||
+ | </ | ||
+ | Si vous désirez faire connaître aux autres postes de votre réseau qu'ils peuvent se connecter au serveur par XDMCP, ajoutez | ||
+ | < | ||
+ | 192.168.1.* CHOOSER BROADCAST | ||
+ | </ | ||
+ | |||
+ | Ces modifications seront prises en charge au prochain démarrage de votre ordinateur. | ||
+ | |||
+ | ==== Firewall ==== | ||
+ | |||
+ | Exemple de commande iptables (dans un script gérant iptables) | ||
+ | |||
+ | * Coté Serveur | ||
+ | |||
+ | |||
+ | Décommentez la ligne suivante pour que des clients puissent se connecter à l' | ||
+ | |||
+ | < | ||
+ | #iptables -A INPUT -p udp --dport 177 -j ACCEPT'' | ||
+ | </ | ||
+ | |||
+ | * Coté Client | ||
+ | |||
+ | |||
+ | Décommentez la ligne suivante pour que l' | ||
+ | |||
+ | < | ||
+ | #iptables -A INPUT -p tcp --dport 6001 -j ACCEPT'' | ||
+ | </ | ||
+ | |||
+ | à compléter | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Installation du client ===== | ||
+ | Il vous faut installer une distribution linux possédant un serveur X. Selon les ressources du client, vous vous orienterez vers l'une ou l' | ||
+ | |||
+ | * Ubuntu/ | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | |||
+ | 14/10/2011 par Mégamodeste : pour les liens Thinstation voyez ci-dessous : | ||
+ | http:// | ||
+ | http:// | ||
+ | http:// | ||
+ | |||
+ | Si vous désirez réutiliser vos //vieux// mac G3, G4, G5 et les transformer en terminaux, optez pour (k)ubuntu ou Zenwalk. Vous pourrez vous connecter sans problème sur un serveur i386, i686, k7... bien évidemment. Cela vous évitera de devoir trouver des binaires pour les G3, G4, G5 (par exemple à ma connaissance il n' | ||
+ | |||
+ | Par contre si vous désirez utiliser en parallèle la toute belle interface de Mac OS X et celle d' | ||
+ | |||
+ | ===== Connexion du client au serveur ===== | ||
+ | Pour cette section, placez-vous devant le client. | ||
+ | |||
+ | |||
+ | ==== A la demande ==== | ||
+ | Pour vous connecter // | ||
+ | === Méthode graphique === | ||
+ | Le ou les serveurs apparaissent alors dans une fenêtre. Sélectionner celui choisi puis se connecter avec le compte du second utilisateur créé sur le serveur. (Ceci est requis tant qu'une session est ouverte sous le login de l' | ||
+ | Ce qui suit doit, je pense, concerner des versions antérieures. | ||
+ | |||
+ | Sur l' | ||
+ | |||
+ | Pour Lucid, la connexion est possible par le menu " | ||
+ | |||
+ | - elle ne se fait plus au login, mais après lancement de Lucid; | ||
+ | |||
+ | - elle nécessite l' | ||
+ | |||
+ | - elle requiert une connexion par adresse ip (à corriger si nécessaire : je n'ai pas testé avec le nom du server) | ||
+ | |||
+ | - il ne semble plus y avoir de système de découverte automatique comme dans gdm du voisinage disponible pour connexion. | ||
+ | |||
+ | Un message d' | ||
+ | |||
+ | === Par la console === | ||
+ | Fermez une éventuelle session graphique. Appuyez sur CTRL-ALT-F1, | ||
+ | < | ||
+ | sudo / | ||
+ | X -query 192.168.1.2 | ||
+ | </ | ||
+ | :) | ||
+ | Si vous désirez, sur la même machine (la vieille) avoir 2 écrans de connexions, l'une locale, l' | ||
+ | < | ||
+ | X -query 192.168.1.2 :1 | ||
+ | </ | ||
+ | Un écran de login devrait alors apparaître sur CTRL-ALT-F8, | ||
+ | |||
+ | NB: a partir d' | ||
+ | |||
+ | Si vous avez une erreur du type | ||
+ | < | ||
+ | Fatal server error: | ||
+ | XDMCP fatal error: Manager unwilling Host unwilling | ||
+ | </ | ||
+ | alors il faut vérifier le fichier Xaccess sur le serveur et s' | ||
+ | <note tip> | ||
+ | |||
+ | |||
+ | ==== A chaque démarrage ==== | ||
+ | Sur le client. Je suppose qu'il s'agit d'une ubuntu/ | ||
+ | Testez d' | ||
+ | < | ||
+ | sudo / | ||
+ | X -query 192.168.1.2 | ||
+ | </ | ||
+ | Créons un script. J' | ||
+ | < | ||
+ | sudo vi / | ||
+ | </ | ||
+ | Ecrivez-y | ||
+ | < | ||
+ | #!/bin/sh | ||
+ | / | ||
+ | </ | ||
+ | Autorisons l' | ||
+ | < | ||
+ | sudo chmod +x / | ||
+ | </ | ||
+ | Faisons en sorte que ce script se lance lors d'un démarrage normal (non recovery) du vieil ordi. Si vous êtes sous kubuntu (ou si vous utilisez kdm comme gestionnaire de login), exécutez ces lignes | ||
+ | < | ||
+ | #kubuntu kdm | ||
+ | sudo rm -f / | ||
+ | sudo ln -s / | ||
+ | sudo ln -s / | ||
+ | </ | ||
+ | si vous utilisez ubuntu (ou si gdm est votre gestionnaire de login): | ||
+ | < | ||
+ | #ubuntu gdm | ||
+ | sudo rm -f / | ||
+ | sudo ln -s / | ||
+ | sudo ln -s / | ||
+ | </ | ||
+ | Redémarrez le vieil ordi et profitez :) | ||
+ | |||
+ | === Pour revenir en arrière === | ||
+ | Si vous voulez annuler ces dernières opérations et supprimer le lancement du X distant à chaque démarrage: | ||
+ | < | ||
+ | sudo rm -f / | ||
+ | </ | ||
+ | Puis si kubuntu: | ||
+ | < | ||
+ | sudo ln -s / | ||
+ | </ | ||
+ | si ubuntu: | ||
+ | < | ||
+ | sudo ln -s / | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Respawn du serveur X (edgy sur le client) ==== | ||
+ | Ceci fonctionne pour Edgy, je ne sais pas comment cela fonctionne sur les autres distrib linux.\\ | ||
+ | Dans un environnement de production ou si les utilisateurs ne peuvent/ne doivent pas pouvoir relancer X en ligne de commande voici comment faire en sorte que le serveur X se lance s'il crash (par CTRL-ALT-BACKSPACE par exemple). | ||
+ | |||
+ | Après avoir suivi les instructions de la section //A chaque démarrage//, | ||
+ | < | ||
+ | sudo vi / | ||
+ | </ | ||
+ | Ecrivez-y | ||
+ | < | ||
+ | # xdmcp | ||
+ | # | ||
+ | # This service maintains a X by xdmcp from the point the system is | ||
+ | # started until it is shut down again. | ||
+ | |||
+ | start on runlevel-2 | ||
+ | #start on runlevel-3 | ||
+ | #start on runlevel-4 | ||
+ | #start on runlevel-5 | ||
+ | |||
+ | stop on shutdown | ||
+ | |||
+ | respawn / | ||
+ | </ | ||
+ | Redémarrez et testez avec des CTRL-ALT-BACKSPACE, | ||
+ | |||
+ | < | ||
+ | < | ||
+ | respawn / | ||
+ | </ | ||
+ | respawn | ||
+ | exec / | ||
+ | </ | ||
+ | </ | ||
+ | === Revenir en arrière === | ||
+ | < | ||
+ | |||
+ | |||
+ | ===== A travers ssh ===== | ||
+ | Là ça se complique car il faudrait tunneliser une connexion UDP en plus d'une connexion TCP. | ||
+ | |||
+ | <note warning> | ||
+ | |||
+ | |||
+ | |||
+ | ===== Alternative à SSH: Zebedee (edgy)===== | ||
+ | Plus simple et communications aussi chiffrées. | ||
+ | |||
+ | {{http:// | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Sur le serveur ==== | ||
+ | Installez Zebedee (il faut configurer ce serveur pour qu'il n' | ||
+ | < | ||
+ | sudo apt-get install zebedee | ||
+ | </ | ||
+ | puis lancez le serveur Zebedee (-s) avec udp activé (-U) (sans doute le faire en sudo) | ||
+ | < | ||
+ | zebedee -s -U | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ==== Sur le client ==== | ||
+ | Installez aussi Zebedee (cf. ci-dessus). Créez les tunnels (à faire peut-être en sudo): | ||
+ | < | ||
+ | zebedee -U xdmcp: | ||
+ | zebedee x11: | ||
+ | </ | ||
+ | Pour le dernier tunnel (x11), vous pouvez utiliser SSH, regardez la section ci-dessus. Lancez maintenant X | ||
+ | < | ||
+ | X -query localhost | ||
+ | </ | ||
+ | Si vous placez le X sur :1 alors en ce qui concerne le 2e tunnel, utilisez plutôt | ||
+ | < | ||
+ | zebedee x11-1: | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Le son ===== | ||
+ | |||
+ | **Attention**, | ||
+ | |||
+ | Sur le client. D' | ||
+ | < | ||
+ | sudo apt-get update | ||
+ | sudo apt-get install esound libesd0 libesd-alsa0 | ||
+ | </ | ||
+ | Ensuite avant de lancer //X -query ...// lancez (sur une console CTRL-ALT-F1) | ||
+ | < | ||
+ | sudo esd -tcp -public | ||
+ | </ | ||
+ | puis | ||
+ | < | ||
+ | X -query 192.168.1.2 | ||
+ | </ | ||
+ | Si ça ne fonctionne pas installez peut-être (non testé) | ||
+ | < | ||
+ | sudo apt-get install alsaplayer-esd | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== Client sous Mac OS X ===== | ||
+ | Ici vous conservez votre beau système Mac OS X, et à la demande, vous vous connecterez sur le serveur. Si vous désirez supprimer Mac OS X et transformer votre mac en linux box, rendez-vous ci-dessus à la section Installation du client. | ||
+ | * Installez X11, à partir des CD/DVD de Mac OS X ou du site [[http:// | ||
+ | * Lancez X11 | ||
+ | * La première fois, allez dans le menu **X11**, // | ||
+ | * Cochez la case " | ||
+ | * Fermez | ||
+ | * Ouvrer le terminal | ||
+ | * Dans le terminal qui s' | ||
+ | < | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | Si ça ne fonctionne pas essayez la commande suivante : | ||
+ | < | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | Pour quitter le mode pleine écran tapez la combinaison de touche [alt]-[cmd]-[a]. | ||
+ | |||
+ | Pour le son, regardez à la section Son de cette page, pour installer ESD, utilisez Fink. | ||
+ | |||
+ | ==== Réglez les problème de clavier ==== | ||
+ | Pour fixer les problèmes de clavier (non-sens du texte brouillé, touche shift ne fonctionne pas) | ||
+ | |||
+ | 1. Connectez-vous à votre boîte de Ubuntu (U-Box) en passant par SSH: | ||
+ | ssh -X < | ||
+ | |||
+ | 2. Générez vos clés carte | ||
+ | < | ||
+ | |||
+ | 3. Déconnectez-vous de votre session SSH | ||
+ | |||
+ | 4. Mac OS X sur votre machine (O-Box) ouvrir le terminal et le tapez | ||
+ | < | ||
+ | |||
+ | 5. Vous verrez Ubuntu login arriver. Connectez-vous comme d' | ||
+ | |||
+ | 6. Sur la U-Box exécutez la commande | ||
+ | < | ||
+ | |||
+ | 7. Au début de l' | ||
+ | < | ||
+ | clear shift | ||
+ | clear lock | ||
+ | clear control | ||
+ | clear mod1 | ||
+ | clear mod2 | ||
+ | clear mod3 | ||
+ | clear mod4 | ||
+ | clear mod5 | ||
+ | </ | ||
+ | 8. À la fin du fichier ajouter ce texte | ||
+ | < | ||
+ | add shift = Shift_L Shift_R | ||
+ | add lock = Caps_Lock | ||
+ | add control = Control_L Control_R | ||
+ | add mod1 = Alt_L | ||
+ | add mod2 = Num_Lock | ||
+ | add mod3 = Mode_switch | ||
+ | add mod4 = Meta_L | ||
+ | add mod5 = Scroll_Lock | ||
+ | </ | ||
+ | 9. Enregistrez le fichier | ||
+ | 10. Déconnectez-vous d' | ||
+ | 11. Exécutez | ||
+ | < | ||
+ | |||
+ | Voilà ça devrait fonctionner :). | ||
+ | |||
+ | ===== Client sous Windows ===== | ||
+ | A compléter (en attendant: http:// | ||
+ | |||
+ | On peut aussi utiliser cygwin pour avoir un serveur X (http:// | ||
+ | |||
+ | XMing est aussi une bonne solution permettant de travailler en mode fenêtre, plus léger que cygwin | ||
+ | |||
+ | ===== To Do ===== | ||
+ | *faire des screenshots pour les méthodes graphiques | ||
+ | *utiliser update-rc.d -f kdm/gdm remove plutôt qu'un barbare rm / | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Liens ===== | ||
+ | * [[: | ||
+ | * [[http:// | ||
+ | |||
+ | À compléter… | ||
+ | |||
+ | ---- | ||
+ | |||
+ | // | ||
+ | |||
+ | //Cette page se base sur la discussion [[http:// |