La distribution éducative pour débutants et initiés.

Vous n'êtes pas identifié(e).

Annonce

PrimTux3-Raspberry Pi est disponible pour tests ici

  • Pour être automatiquement informé des réponses à vos messages sur le forum, n'oubliez pas de cliquer sur "Suivre cette discussion" en bas de page. Mieux, en vous abonnant au flux RSS du forum, vous pourrez suivre tout nouveau message sur l'ensemble du forum.
  • En allant dans votre Profil, ligne "Vie privée", vous pouvez également cocher "Suivre automatiquement les sujets auxquels on a répondu.", vous n'aurez plus à cliquer sur "Suivre cette discussion" lorsque vous postez un message.
  • Carte des membres pouvant aider et des écoles sous PrimTux, merci de nous envoyer un email si vous souhaitez y apparaître.
  • Abonnez-vous à la newsletter sur le site principal pour être informé des nouveaux paquets, nouvelles versions, bugs...

#51 23-01-2018 22:09:19

moricef1
Membre
Inscription : 19-01-2016
Messages : 48

Re : Utiliser Primtux comme serveur LTSP pour connecter des clients légers!

Voici une proposition de tuto pour primtux 3 amd64 legacy et raspberry sous raspbian stretch lite.
Nous avons laissé complètement tombé LTSP pour ne garder que LTSP Display Manager (LDM), le gestionnaire de connexion de LTSP.
Ceci est valable pour primtux 3 amd64 legacy et raspberry sous raspbian stretch lite avec systemd.

Toutes les commandes sont effectuées en tant qu'administrateur root

Les clients raspberry

Sur le raspberry, on commence par installer l'image sur la carte sd puis au premier lancement, on lance raspi-config pour configurer les locales en fr UTF8, le clavier en français azerty et le fuseau horaire, le nom d'hôte et passer au Predictable Network Interface Names via raspi-config -> Network options -> N3 Network interface names. Ref. :  https://www.raspberrypi.org/forums/view … p?t=191252

Ensuite on force l'adresse MAC  de la carte réseau dans /boot/cmdline.txt en rajoutant à la fin :

smsc95xx.macaddr=B8:27:EB:XX:XX:XX

(juste changer les 3 derniers couples de valeurs)

Activation du serveur ssh
Créer un fichier texte vide nommé ssh dans le répertoire /boot

Installer les paquets nécessaires au son et LDM

On installe ensuite les paquets suivants : xserver-xorg pulseaudio pulseaudio-module-zeroconf alsa-base ldm fuse et ntfs-3g (pour pouvoir monter les clés usb en ntfs)

apt-get update && apt-get upgrade && apt-get install xserver-xorg pulseaudio pulseaudio-module-zeroconf alsa-base ldm fuse ntfs-3g

Activation du montage des périphériques de stockages USB

Remplacer la ligne MountFlags=slave par MountFlags=shared dans /lib/systemd/system/systemd-udevd.service

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=udev Kernel Device Manager
Documentation=man:systemd-udevd.service(8) man:udev(7)
DefaultDependencies=no
Wants=systemd-udevd-control.socket systemd-udevd-kernel.socket
After=systemd-udevd-control.socket systemd-udevd-kernel.socket systemd-sysusers.service
Before=sysinit.target
ConditionPathIsReadWrite=/sys

[Service]
Type=notify
OOMScoreAdjust=-1000
Sockets=systemd-udevd-control.socket systemd-udevd-kernel.socket
Restart=always
RestartSec=0
ExecStart=/lib/systemd/systemd-udevd
KillMode=mixed
WatchdogSec=3min
TasksMax=infinity
MountFlags=shared
MemoryDenyWriteExecute=yes
RestrictRealtime=yes
RestrictAddressFamilies=AF_UNIX AF_NETLINK AF_INET AF_INET6

puis rebooter

Configuration du réseau

La configuration réseau sera effectuée par le biais de systemd-networkd par DHCP.

Passer de Network Manager à Systemd-Networkd
Il est relativement simple de passer de Network Manager à systemd-networkd (et vice versa).
Tout d'abord, désactivez le service network-manager et activez systemd-networkd comme suit :

systemctl disable network-manager
systemctl enable systemd-networkd
systemctl start systemd-networkd

Vous devez également activer le service systemd-resolved, utilisé par systemd-networkd pour la résolution de noms de réseau. Ce service implémente un serveur DNS de mise en cache.

systemctl enable systemd-resolved 
systemctl start systemd-resolved

Une fois démarré, systemd-resolved créera son propre fichier resolv.conf dans le répertoire /run/systemd. Cependant, il est courant de stocker les informations de résolution DNS dans /etc/resolv.conf et de nombreuses applications reposent toujours sur /etc/resolv.conf. Pour des raisons de compatibilité, créez un lien symbolique vers /etc/resolv.conf comme suit.

rm /etc/resolv.conf
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
systemctl restart systemd-resolved
systemctl restart systemd-networkd 

Dans /etc/dhcpcd.conf, on change :

# Use the hardware address of the interface for the Client ID.
clientid
# or
# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as per RFC4361.
#duid

Commenter la valeur duid et dé-commenter la valeur clientid pour avoir une demande basée sur l'adresse mac auprès du serveur dhcp

Configuration du serveur de son PulseAudio

On ajoute si il n'y est pas déjà le fichier /etc/asound.conf :

pcm.!default {
        type hw
        card 0
        device 0
}

ctl.!default {
        type hw
        card 0
        device 0
}

Afin de démarrer pulseaudio en tant que système via systemd, créer le fichier /etc/systemd/system/pulseaudio.service

[Unit]
Description=PulseAudio daemon

[Install]
WantedBy=multi-user.target

[Service]
Type=simple
PrivateTmp=true
ExecStart=/usr/bin/pulseaudio --system --realtime --disallow-exit --no-cpu-limit

pour autoriser les flux audio en réseau pour pulseaudio, on rajoute à la fin du fichier /etc/pulse/system.pa  :

load-module module-native-protocol-tcp auth-ip-acl=192.168.0.0/16;127.0.0.1
load-module module-zeroconf-publish

et dans la section réseau de /etc/pulse/default.pa :

### Network access (may be configured with paprefs, so leave this commented
### here if you plan to use paprefs)
#load-module module-esound-protocol-tcp
load-module module-native-protocol-tcp auth-ip-acl=192.168.0.0/16;127.0.0.1
#load-module module-native-protocol-tcp
#load-module module-zeroconf-publish

Lancer manuellement pulseaudio pour vérifier qu'il n'y a pas d'erreurs :

systemctl start pulseaudio.service
systemctl status pulseaudio.service

et pour le faire se lancer au démarrage :

systemctl enable pulseaudio.service

Connexion au serveur par LDM

Créer le service  /etc/systemd/system/ldm-primtux3-connect.service. On lance le script après l'établissement du réseau :

[Unit]
Description=ldm-primtux3-connection
After=network-online.target
Wants=network-online.target 

[Service]
Type=simple
ExecStart=/root/primtux_client.sh

[Install]
WantedBy = multi-user.target

Le script /root/primtux_client.sh qui est lancé :

#!/bin/sh

# Préparer le server X (affichage)
/usr/bin/Xorg &
export DISPLAY=:0

# attendre que X se lance
/bin/sleep 5

# Variables pour LDM

export LDM_XSESSION=startfluxbox
export LDM_SSHOPTIONS="-o StrictHostKeyChecking=no -o CheckHostIP=no"
export LDM_SERVER=192.168.2.4

# Lancer LDM qui redémarre automatiquement si il est stoppé
while true
do
  /usr/sbin/ldm
done

Rendre le script executable :

chmod +x /root/primtux_client.sh

Clonage de la carte SD du Raspberry

Voir ce tuto : http://www.framboise314.fr/clonez-la-ca … pberry-pi/. N’oubliez pas de modifier l’adresse MAC dans /boot/cmdline.txt et le nom d’hôte dans raspi-config (ou dans /etc/hostname) après le clonage.

Le serveur headless debian stretch

(Je n'explique pas tout ici pour le serveur)

Le serveur est installé sur 2 disques durs de 1 TO chacun avec 2 cartes réseau.
Les disques sont partitionnés avec raid 1 logiciel et lvm.

Configuration du réseau

La configuration réseau sera effectuée par le biais de systemd-networkd. Sur les deux cartes réseau présentes physiquement, une sera configurée en DHCP sur un sous-réseau 192.168.10.0/24 et la seconde sera pontée et obtiendra aussi son adresse par DHCP sur le sous-réseau 192.168.2.0/24. Les deux cartes seront de toute manière en adressage statique sur le serveur DHCP. Le conteneur aura une adresse séparée 192.168.2.4/24, dirigée sur le pont, via une interface réseau virtuelle sur l'hôte.

Passer de Network Manager à Systemd-Networkd
Il est relativement simple de passer de Network Manager à systemd-networkd (et vice versa).
Tout d'abord, désactivez le service network-manager et activez systemd-networkd comme suit.

systemctl disable network-manager
systemctl enable systemd-networkd
systemctl start systemd-networkd

Vous devez également activer le service systemd-resolved, utilisé par systemd-networkd pour la résolution de noms de réseau. Ce service implémente un serveur DNS de mise en cache.

systemctl enable systemd-resolved 
systemctl start systemd-resolved 

Une fois démarré, systemd-resolved créera son propre fichier resolv.conf dans le répertoire /run/systemd. Cependant, il est courant de stocker les informations de résolution DNS dans /etc/resolv.conf et de nombreuses applications reposent toujours sur /etc/resolv.conf. Pour des raisons de compatibilité, créez un lien symbolique vers /etc/resolv.conf comme suit.

rm /etc/resolv.conf
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf 

Configurer les connexions réseau avec systemd-networkd
Pour configurer les périphériques réseau avec systemd-networkd , vous devez spécifier les informations de configuration dans les fichiers texte avec l’extension .network. Ces fichiers de configuration réseau sont ensuite stockés et chargés depuis /etc/systemd/network. Lorsqu'il y a plusieurs fichiers, systemd-networkd les charge et les traite un par un dans l'ordre lexical.
Commençons par créer un dossier /etc/systemd/network.

mkdir /etc/systemd/network

Lister les noms des interfaces réseau ( Predictable Network Interface Names ) avec la commande ip link :

ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 40:8d:5c:6f:c4:1d brd ff:ff:ff:ff:ff:ff
3: enp4s1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP mode DEFAULT group default qlen 1000
    link/ether 3c:8c:f8:21:06:d7 brd ff:ff:ff:ff:ff:ff

Configurons d'abord la première carte réseau enp2s0 pour  DHCP. Pour cela, créez le fichier de configuration suivant. Le nom d'un fichier peut être arbitraire, mais rappelez-vous que les fichiers sont traités dans l'ordre lexical.

vi /etc/systemd/network/enp2s0.network
[Match]
Name=enp2s0
[Network]
DHCP=v4

La seconde carte réseau sera attribuée au sous-réseau ltsp via un pont (bridge) br0 :

cat /etc/systemd/network/enp4s1.network
[Match]
Name=enp4s1

[Network]
Bridge=br0

Création du pont br0 :

cat /etc/systemd/network/bro.netdev
[NetDev]
Name=br0
Kind=bridge

Le pont br0 est configuré en DHCP

cat /etc/systemd/network/bro.network
[Match]
Name=br0

[Network]
DHCP=v4
systemctl restart systemd-networkd

Création du conteneur primtux3
Dans /var/lib/container/primtux3 en y copiant une Primtux 3 déjà installée sur une machine virtuelle Virtualbox sur une ordinateur du réseau.
Sur le serveur, à cause des limitations de droits de connexion en ssh, créer auparavant un répertoire de destination intermédiaire dans le compte utilisateur:

mkdir primtux3_vm

Depuis l’ordinateur sur lequel est installée la machine virtuelle et dans un terminal à l’intérieur de cette même machine virtuelle , en excluant les fichiers et répertoires inutiles au conteneur, copier le système Primtux3 vers le serveur dans le compte utilisateur par rsync  via ssh :
Créer d’abord le fichier d’exclusion :
Le fichier exclud.lst : 

-------------------- 
/proc 
/tmp 
/mnt 
/etc/fstab 
-------------------- 

Lancer la copie du système sur le port ssh que vous avez déterminé lors de la configuration du serveur openssh (non expliquée ici) :

sudo rsync -ravHz --exclude-from=exclud.lst -e "ssh -p 222" / user@192.168.X.X:~/primtux3_vm/

Ensuite sur le serveur, copier le répertoire /home/user/primtux3_vm en le renommant vers /var/lib/machines/ :

cp -a /home/user/primtux3_vm /var/lib/machines/primtux3

Changer le propriétaire du répertoire nouvellement créé pour root :

ls -l /var/lib/machines/primtux3
chown -R root : /var/lib/machines/primtux3

Créer ensuite un service primtux3 à lancer au démarrage du serveur :

cat /etc/systemd/system/primtux3.service
[Unit]
Description=Container primtux3

[Service]
ExecStart=/usr/bin/systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest --directory=/var/lib/machines/primtux3 --network-bridge=br0
KillMode=mixed
Type=notify
RestartForceExitStatus=133
SuccessExitStatus=133

[Install]
WantedBy=multi-user.target

Pour le lancer au démarrage du système via systemd-nspawn, il faut l'activer ainsi :

 systemctl enable primtux3.service

et pour le lancer manuellement :

 systemctl start primtux3.service
Configuration du son coté serveur

Toutes les données sont transférées par ssh sauf le son qui l’est par le serveur de son pulseaudio sur les raspberry.
Dans chaque compte, il faut indiquer où aller chercher le serveur de son pulseaudio - c’est-à-dire sur les raspberry : ça se fait dans ~.fluxbox/startup en ajoutant
PULSE_SERVER=$LTSP_CLIENT
export PULSE_SERVER
et aussi pendant qu’on y est
export LANG=fr_FR.UTF-8
afin d’avoir primtux3 en français. Il faut garder le même nombre de lignes au fichier donc on remplace 3 lignes commentées par les précédentes :

#!/bin/sh
#
# fluxbox startup-script:
#
# Lines starting with a '#' are ignored.

# Change your keymap:
xmodmap "/home/primtux/.Xmodmap"

# Applications you want to run with fluxbox.
# MAKE SURE THAT APPS THAT KEEP RUNNING HAVE AN ''&'' AT THE END.
#
PULSE_SERVER=$LTSP_CLIENT
export PULSE_SERVER
export LANG=fr_FR.UTF-8
# idesk &
#
# Debian-local change:
#   - fbautostart has been added with a quick hack to check to see if it
#     exists. If it does, we'll start it up by default.
which fbautostart > /dev/null
if [ $? -eq 0 ]; then
    fbautostart
fi

# And last but not least we start fluxbox.
# Because it is the last app you have to run it with ''exec'' before it.
exec /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 &
exec xfce4-panel &
exec lxpanel &
exec rox -p 1 &
# exec /usr/bin/BNE-Linux &
# exec /usr/local/bin/primtux/handymenu-mini &
# exec /usr/local/bin/primtux/handymenu-super &
# exec /usr/local/bin/primtux/handymenu-maxi &
exec /usr/local/bin/primtux/accueil &
# exec xscreensaver -nosplash &
exec fluxbox
# or if you want to keep a log:
# exec fluxbox -log "/home/primtux/.fluxbox/log"

puis pour ne pas laisser quiconque éteindre ou redémarrer le container ce qui rendrait toute connexion depuis les raspberry inopérante, il faut supprimer dans /usr/share/shutdown/shutdown_gui.glade les lignes 23 à 84  tout ce qui concerne shutdown et reboot et modifier le placement des images dans la fenêtre (plus simplement copiez ce fichier à la place de l’original) :

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
<!--Generated with glade3 3.4.1 on Sat Feb 16 01:52:03 2008 -->
<glade-interface>
  <widget class="GtkWindow" id="ShutdownBox">
    <property name="width_request">350</property>
    <property name="height_request">310</property>
    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
    <property name="title" translatable="yes">PrimTux Shutdown Menu</property>
    <property name="resizable">False</property>
    <property name="modal">True</property>
    <property name="window_position">GTK_WIN_POS_CENTER</property>
    <property name="icon">help-browser.png</property>
    <property name="skip_taskbar_hint">True</property>
    <property name="skip_pager_hint">True</property>
    <property name="urgency_hint">True</property>
    <property name="deletable">False</property>
    <property name="opacity">0</property>
    <child>
      <widget class="GtkLayout" id="layout1">
        <property name="visible">True</property>
        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
        <child>
          <widget class="GtkButton" id="LogoutButton">
            <property name="width_request">210</property>
            <property name="height_request">52</property>
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="receives_default">True</property>
            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
            <property name="label" translatable="yes">_Fermer la session</property>
            <property name="use_underline">True</property>
            <property name="response_id">0</property>
            <signal name="clicked" handler="on_LogoutButton_clicked"/>
          </widget>
          <packing>
            <property name="x">36</property>
            <property name="y">86</property>
          </packing>
        </child>
        <child>
          <widget class="GtkImage" id="image3">
            <property name="width_request">62</property>
            <property name="height_request">47</property>
            <property name="visible">True</property>
            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
            <property name="stock">gtk-stop</property>
          </widget>
          <packing>
            <property name="x">41</property>
            <property name="y">91</property>
          </packing>
        </child>
        <child>
          <widget class="GtkButton" id="CancelButton">
            <property name="width_request">210</property>
            <property name="height_request">52</property>
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="receives_default">True</property>
            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
            <property name="label" translatable="yes">_Annuler</property>
            <property name="use_underline">True</property>
            <property name="response_id">0</property>
            <signal name="clicked" handler="on_CancelButton_clicked"/>
          </widget>
          <packing>
            <property name="x">37</property>
            <property name="y">168</property>
          </packing>
        </child>
        <child>
          <widget class="GtkImage" id="image4">
            <property name="width_request">50</property>
            <property name="height_request">44</property>
            <property name="visible">True</property>
            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
            <property name="stock">gtk-undo</property>
          </widget>
          <packing>
            <property name="x">46</property>
            <property name="y">168</property>
          </packing>
        </child>
        <child>
          <widget class="GtkImage" id="image5">
          <property name="width_request">67</property>
            <property name="height_request">285</property>
            <property name="visible">True</property>
            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
            <property name="pixbuf">logo.png</property>
            <property name="icon_size">2</property>
          </widget>
          <packing>
            <property name="x">261</property>
            <property name="y">14</property>
          </packing>
        </child>
        <child>
          <widget class="GtkHSeparator" id="hseparator1">
            <property name="width_request">207</property>
            <property name="height_request">20</property>
            <property name="visible">True</property>
            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
          </widget>
          <packing>
            <property name="x">38</property>
            <property name="y">145</property>
          </packing>
        </child>
      </widget>
    </child>
  </widget>
</glade-interface>

J’ai ensuite copier chaque compte, en les renommant pour simplifier, autant de fois qu’il y a de raspberry :

cp -a /home/01-mini mini1

De même pour super et maxi.
Démarrer le container, se loguer dedans avec

machinectl login primtux3

créer les utilisateurs correspondants avec adduser et changer les propriétaires des homes pour les utilisateurs nouvellement créés.
Vérifier dans /etc/passwd, changer le shell si nécessaire pour /bin/bash car ssh en a besoin.
Pour sortir du container, taper rapidement 3 fois $ en maintenant la touche control enfoncée (^$$$)

Serveur DHCP

Je met ici la configuartion du serveur dhcp avec le paquet isc-dhcp-server, mais dans mon cas j’utilise un pare-feu pfSense qui fait office de serveur dhcp (entre autres).
Configuration du serveur isc-dhcp-server. On installe le paquet isc-dhcp-server :

apt-get install isc-dhcp-server

Ecrire le fichier /etc/dhcp/dhcpd.conf :

#
# Default LTSP dhcpd.conf config file.
#

authoritative;                                     

subnet 192.168.xx.0 netmask 255.255.255.0 {
    range 192.168.xx.10 192.168.xx.50;            # Plage d'adresse desservie par le serveur DHCP du serveur LTSP
    option domain-name "aaaa.bbbbb.ccc";    # nom DNS du réseau pédagique
    option domain-name-servers 192.168.xx.xx;         # adresse IP du serveur DNS 
    option broadcast-address 192.168.xx.255;}
        host rasp1 {
        hardware ethernet B8:27:EB:XX:XX:XX;
        fixed-address 192.168.xx.xx;
        }       

        host rasp2 { 
        hardware ethernet B8:27:EB:XX:XX:XX;
        fixed-address 192.168.xx.xx;
        }

        host rasp3 {
        hardware ethernet B8:27:EB:XX:XX:XX;
        fixed-address 192.168.xx.xx;
        }       

        host rasp4 {
        hardware ethernet B8:27:EB:XX:XX:XX;
        fixed-address 192.168.xx.xx;
        }

Voilà !
Le flux vidéo via internet n'est pas toujours terrible, le son parfois haché. Tuxpaint plante à la fermeture, mais contrairement à Eiffel, ça ne fige pas tout le serveur X, il reste possible d'utiliser le reste des applications. Mais dans l'ensemble, c'est quand même fluide. Il y a peut être moyen d'optimiser tout ça.

Il n'y a pas de verrouillage du pavé numérique dans la fenêtre de connexion de ldm et je n’ai pas encore chercher à le faire avec primtux3.

Je l’ai aussi testé sur un odroid-c2 avec une armbian 64 stretch.
To be continued ...

Sources :
https://www.freedesktop.org/software/sy … spawn.html
http://www.olafdietsche.de/2016/06/25/n … -container
https://wiki.archlinux.org/index.php/systemd-networkd
https://lindenberg.io/blog/post/debian- … md-nspawn/
http://xmodulo.com/switch-from-networkm … workd.html
https://www.freedesktop.org/wiki/Softwa … orkTarget/
https://www.freedesktop.org/wiki/Softwa … faceNames/

Dernière modification par moricef1 (13-02-2018 08:58:19)

Hors ligne

#52 24-01-2018 11:58:53

Steph
Administrateur
Inscription : 03-06-2015
Messages : 4 583

Re : Utiliser Primtux comme serveur LTSP pour connecter des clients légers!

Oh le boulot! Merci beaucoup, ça va servir!

Hors ligne

#53 24-01-2018 15:25:07

Philippe Dpt35
Modérateur
Lieu : Ille-et-Vilaine
Inscription : 28-10-2015
Messages : 2 115
Site Web

Re : Utiliser Primtux comme serveur LTSP pour connecter des clients légers!

C'est effectivement un gros boulot ! Bravo !
Je n'ai pas répondu tout de suite car j'attendais de regarder ce tuto plus en détail. Mais comme je suis dans la réinstallation de mon système, ça ne sera pas tout de suite !

Avais-tu une raison particulière de partir sur une Raspbian Whezzy ? Son support prend en effet fin en mai 2018.
Il faudra voir ce qui sera à modifier avec les versions plus récentes de Raspbian.

Sur les dernière versions de Raspbian, il n'est plus nécessaire d'étendre le système de fichiers à toute la partition avec raspi-config, cela se fait maintenant automatiquement au 1er démarrage.

Hors ligne

#54 24-01-2018 18:40:22

moricef1
Membre
Inscription : 19-01-2016
Messages : 48

Re : Utiliser Primtux comme serveur LTSP pour connecter des clients légers!

Nous avions choisi raspbian wheezy car à l'époque, en 2016, nous ne connaissions pas encore bien systemd. Cette lacune est maintenant en partie comblée. Concernant les modifications à apporter sur une raspbian stretch, si je me fie à la armbian stretch de l'odroid-c2, à part créer le service /etc/systemd/system/primtux_client.service, je pense qu'il n'y aura pas de différence avec la raspbian wheezy.
EDIT : Il y a certainement une différence puisque je n'arrive pas à lancer ldm sur la raspbian stretch lite. Et sur l'odroid-c2 il faut aussi créer un service pulseaudio pour le lancer en startup du système.

Dernière modification par moricef1 (31-01-2018 22:10:34)

Hors ligne

#55 29-01-2018 14:38:40

Philippe Dpt35
Modérateur
Lieu : Ille-et-Vilaine
Inscription : 28-10-2015
Messages : 2 115
Site Web

Re : Utiliser Primtux comme serveur LTSP pour connecter des clients légers!

Lorsque tu auras fait quelque chose d'opérationnel avec des RPi, il sera intéressant que tu nous fasses un retour sur l'usage pratique de la solution: mis à part les quelques problèmes de fonctionnement que tu nous as signalés (pour lesquels il faudrait comparer à une PrimTux directement installée sur le RPi), combien de RPi peuvent être opérationnelles en même temps tout en permettant un usage suffisamment fluide ? Quid lorsque plusieurs RPi démarrent en même temps sur le réseau ?

Hors ligne

#56 31-01-2018 22:07:08

moricef1
Membre
Inscription : 19-01-2016
Messages : 48

Re : Utiliser Primtux comme serveur LTSP pour connecter des clients légers!

C'est à dire que c'était déjà en fonction avec 3 raspberry sous wheezy et primtux eiffel depuis 2016 avec les quelques petits problèmes que j'avais noté dans les pages précédentes de ce post. A noter l'impossibilité de faire tourner correctement (problème de fenêtres modales) sous wine  "1000mots" de JM Campaner, avec qui j'avais eu des échanges de mails et qui m'avait fourni une version modifiée de son logiciel qui hélas n'a rien réglé. Depuis j'ai installé une primtux3 64bits sur le serveur et ça tourne toujours avec les 3 raspbian wheezy, je dirais d'une manière plus fluide par rapport à Eiffel x86. Pas de problème au démarrage des 3 raspberry en même temps. ça reste fluide pour tout ce qui n'est pas flux internet au niveau graphique. Je n'en dirait pas autant du flux audio qui est parfois haché même en lecteur directe. J'attends que l'institutrice me donne son appréciation sur la nouvelle mouture.
Je pense que ça peut faire tourner plus de 3 ou 4 raspberry, mais je n'ai pas essayé car je n'ai que ces 4 là.

Dernière modification par moricef1 (01-02-2018 20:02:42)

Hors ligne

#57 01-02-2018 19:02:06

moricef1
Membre
Inscription : 19-01-2016
Messages : 48

Re : Utiliser Primtux comme serveur LTSP pour connecter des clients légers!

J'ai trouver comment lancer ldm sur raspbian stretch : je n'avais pas configurer systemd-resolved. Donc à priori ça devrait fonctionner comme avec l'odroid-c2.
Je modifie le tuto en conséquence.

Reste à tester avec XDMCP pour voir si c'est plus fluide et/pou plus simple que par ssh.

Dernière modification par moricef1 (04-02-2018 17:59:47)

Hors ligne

#58 05-02-2018 17:33:15

moricef1
Membre
Inscription : 19-01-2016
Messages : 48

Re : Utiliser Primtux comme serveur LTSP pour connecter des clients légers!

Bonsoir, mon tuto est fini; je ne vois plus rien à modifier, ni à ajouter. Pour celles et ceux qui veulent tenter l'aventure et me faire des retours, merci d'avance.

Hors ligne

#59 05-02-2018 22:54:26

Philippe Dpt35
Modérateur
Lieu : Ille-et-Vilaine
Inscription : 28-10-2015
Messages : 2 115
Site Web

Re : Utiliser Primtux comme serveur LTSP pour connecter des clients légers!

Merci pour ta contribution ! cool

Hors ligne

Pied de page des forums