| Bienvenue, Visiteur |
Vous devez vous enregistrer avant de pouvoir poster.
|
| Utilisateurs en ligne |
Il y a actuellement 33 utilisateurs connectés. » 0 Membre(s) | 32 Visiteur(s) Baidu
|
| Derniers sujets |
L'écran fige à l'installa...
Forum : Demandes d'aide
Dernier message : Steph
28-04-2026, 17:43:59
» Réponses : 4
» Affichages : 45
|
présentation pascal079
Forum : C'est ici qu'on se présente!
Dernier message : zoom61
28-04-2026, 09:30:58
» Réponses : 3
» Affichages : 69
|
internet (interdire et en...
Forum : Foire aux questions
Dernier message : Philippe Dpt35
22-04-2026, 17:29:31
» Réponses : 1
» Affichages : 51
|
Primtux et Zorin OS
Forum : Demandes d'aide
Dernier message : pokomande
13-04-2026, 20:06:33
» Réponses : 2
» Affichages : 89
|
Migration vers PT9 en Leg...
Forum : Demandes d'aide
Dernier message : Guygoyeg
09-04-2026, 13:53:29
» Réponses : 12
» Affichages : 482
|
Primtuxmenu en rade
Forum : Demandes d'aide
Dernier message : Steph
06-04-2026, 08:49:14
» Réponses : 39
» Affichages : 12,330
|
Présentation
Forum : C'est ici qu'on se présente!
Dernier message : Steph
04-04-2026, 14:13:15
» Réponses : 5
» Affichages : 393
|
Profil Firefox, extension...
Forum : Demandes d'évolution - Tests des iso - Développement
Dernier message : Guygoyeg
26-03-2026, 20:28:39
» Réponses : 2
» Affichages : 179
|
ISO x64 PrimTux 5
Forum : Foire aux questions
Dernier message : Steph
25-03-2026, 17:51:26
» Réponses : 3
» Affichages : 233
|
Propositions de mises à j...
Forum : Demandes d'évolution - Tests des iso - Développement
Dernier message : Philippe Dpt35
17-03-2026, 18:20:13
» Réponses : 13
» Affichages : 5,374
|
|
|
| les parents à la découverte de primtux |
|
Posté par : khaled4m - 11-04-2020, 10:58:53 - Forum : C'est ici qu'on se présente!
- Réponses (5)
|
 |
Bonjour tout le monde
je viens de m'inscrire, à la suite de la découverte de primtux, je suis novice sous lunix, mais je m'y met, dans l'objectif
d'apprendre tout d'abord à mes enfants l'esprit du logiciel libre.
je ne l'ai pas encore installer faute de conditions, mais c'est en cours, je tiens juste à remercier l’équipe pour ce bijoux d’enseignement.
faute de maîtrise de la langue anglosaxonne, je traine dans l'apprentissage de lunix debian, mais “Nous pouvons jeter des pierres,
nous plaindre d'elles, trébucher dessus, les escalader, ou les utiliser pour construire.”.
et à l'occasion je remercie le soutien de debian-facile, c'est la ou j'ai découvert la caverne d'ali baba, c'est une super communauté.
pour résumé je suis ravi de la découverte.
|
|
|
| Papa tux |
|
Posté par : Saturne - 06-04-2020, 14:30:44 - Forum : C'est ici qu'on se présente!
- Réponses (4)
|
 |
Bonjour,
utilisateur de Primtux depuis plusieurs années maintenant je n'avais jamais pris le temps de me présenter... confinement oblige, je m'y colle et j'en profite pour faire de cette présentation un mémo de mon installation xD
J'ai beau être prof dans ma vraie vie, ce n'est pas pour mes élèves que j'utilise Primtux mais pour mes enfants. Linuxien depuis 2008, je reste un éternel débutant qui se retrouve souvent coincé dans ses tentatives, mais j'ai appris à écluser les nombreux forums et docs consacrés à notre système favoris.
J'utilise principalement Ubuntu sur mes PC, mais j'ai aussi fait un long séjour sur Debian lorsque j'avais encore du temps pour bidouiller (comprendre : avant d'être papa !). Même si vous ne m'y croiserez plus faute de temps, j'ai déjà aperçu certains d'entre vous sur ubuntu-fr ou j'utilise le pseudo Julientroploin
Lorsque ma grande a été en age de manier une souris, je lui ai reconditionné le Compaq de ma signature avec Primtux, sans trop de problème à l'époque, elle a commencé en Mini avant de passer rapidement en Super et fait désormais usage de la session Maxi... même si je dois avouer qu'elle délaisse bien souvent le vieux PC pour la tablette de maman !
Mon 2nd ayant atteint à son tour l'age de réclamer un clavier sur lequel écrire son prénom, je me suis évidement tourné vers primtux pour reconditionné un PackardBell qui tournait sur Xubuntu depuis quelques années. Malheureusement pour ma santé mentale, c'est un PC bien plus capricieux. En cause une carte graphique un peu exotique : Via S3 Unichrome Pro.
PrimTux5-Debian9-i386 refusant d'installer GRUB après installation malgré plusieurs tentatives, je me suis tourné vers PrimTux4-Debian8-i686-2018-11-21 qui s'est installée directement mais refusait de démarrer.
Me doutant que le problème venait de la carte graphique, j'ai démarré en recovery mode qui m'a bien permis d'arriver à une console, c'est le lancement de lightdm qui plantait ma carte graphique.
Après vérification et génération d'un xorg.conf (en adaptant https://doc.ubuntu-fr.org/xorg#regenerer..._xorgconf), il s'avère que le "bon" driver (openchrome=celui qui fonctionnait quand j'étais sous Xubuntu) était bien actif... Je n'ai donc eu d'autre choix que de le remplacer par le driver vesa.
Et voilà l'antiquité sous Primtux4, avec quelques artefacts graphiques, mais fonctionnelle. Je ne pense pas créer de demande d'aide pour améliorer la situation, je ne pense pas qu'il y ait de solution, mais si quelqu'un à une idée, je reste preneur d'une piste. J'ai atteint mes limites...
Merci en passant à la personne qui a rédigé le tuto pour désactiver le pavé tactile qui empêche de taper le mdp administrateur.
Saturne
|
|
|
| PrimTux5 Debian9 i386 - impossible de booter en live-USB |
|
Posté par : sunkart - 06-04-2020, 14:26:59 - Forum : Demandes d'aide
- Réponses (18)
|
 |
Bonjour,
Suite à ma découverte de cette distribution après conseil sur le forum Ubuntu Fr, j'ai téléchargé l'image iso PrimTux5.Debian9.i386.hybrid dont le lien est disponible dans la rubrique Télécharge du site.
Après moult test, impossible de booter sur la clé USB créée à partir de l'image ISO/
J'ai testé la création avec l'utilitaire gnome-disk, en ligne de commande, avec 3 clés différentes et depuis 2 machines différentes ... rien. J'ai le message "No boot sector on usb device".
A noter que j'ai tenté avec succès de booter sur un live-usb de xbuntu 18.04.4. C'est d'ailleurs la distribution installée sur le laptop sur lequel je souhaite installer PrimTux et qui tourne sans problème.
Est-ce que c'est un problème dans l'ISO ?
Merci d'avance de votre aide.
Bonne journée
Cyril
|
|
|
| Hello there |
|
Posté par : sunkart - 06-04-2020, 14:13:58 - Forum : C'est ici qu'on se présente!
- Réponses (3)
|
 |
Bonjour à tous,
Cherchant des logiciels éducatifs, j'ai fini par tomber sur PrimTux.
L'idée est que le laptop sera utilisé par deux garçons de 8 et 10 ans et j'ai l'impression que PrimTux pourra répondre à ce besoin.
Au plaisir d'échanger avec vous sur le forum.
Bonne journée
Cyril
|
|
|
| [Résolu] Lien de téléchargement Primtux 4 |
|
Posté par : Saturne - 05-04-2020, 17:36:48 - Forum : Demandes d'aide
- Réponses (2)
|
 |
Bonjour,
après avoir échoué à installer Primtux 5 version 32bits sur une très vieux portable (refus de configuration du miroir puis refus d'installer GRUB), je voulais télécharger Primtux 4 ici : https://sourceforge.net/projects/primtux...o/download
Malheureusement après 3 tentatives aujourd'hhui, le téléchargement aboutit toujours à un échec au bout de qq centaines de Mo.
Du coup, double question :
- Ce lien marche t il chez vous ? existe il un autre lien de téléchargement ? J'ai cherché en vain...
- mieux : existe t il un torrent fiable ? j'en ai trouvé un ici mais le nom de l'iso est légèrement différent et surtout Firefox me signale qu'il bloque un mineur de cryptomonaie sur ce site... Ça n'inspire pas confiance ! https://linuxtracker.org/index.php?page=...5e8652f11c
Merci d'avance,
Saturne
|
|
|
| Terminaux légers/serveur pour Primtux 3 amd64 legacy et Raspberry Pi |
|
Posté par : moricef1 - 03-04-2020, 20:08:06 - Forum : Tutoriels généraux
- Réponses (4)
|
 |
Linux Terminal Server Project (LTSP]
En 2015, à l’occasion d’une discussion avec notre directrice d’école, il s’est
avéré que l’état du parc informatique dans sa classe de petite et moyenne sections était bien en
dessous de ses besoins. Ceux-ci sont de quatres postes au plus. Considérant le coût important
que peut représenter l’achat de postes informatiques complets (environ 2900 € pour 4 postes),
c’est vers une architecture client-serveur, qui rempli adéquatement les conditions d’économie de
place et de coûts, que mon choix se portera. Le rôle de clients sera attribué aux Raspberry Pi, des
nano-ordinateurs mono-carte de faible coût et peu gourmands en énergie électrique. Le serveur,
qui sera aussi serveur de sauvegardes pour la mairie, fera tourner une distribution éducative. La
machine sera un ordinateur de bureau de bonne facture avec un bon processeur et suffisamment
d’espace disque et de mémoire. L’ensemble fonctionnera sous des systèmes d’exploitation GNU-
Linux. Le choix de Linux s’explique par l’absence de coût d’installation logicielle (pas licences à
payer) et par la fiabilité (peu ou prou de virus) et la stabilité du système, donc de sa maintenance
(très peu de redémarrage des serveurs, etc).
À la recherche d’informations concernant un système clients-serveur à base de Raspberry, je
découvre le projet Linux Terminal Server Project (LTSP)[LTSP]. Celui-ci, grace à debootstrap,
permet de construire un système complet dans un répertoire donné et la commande chroot
permet « d’entrer » dans ce nouveau système.
Dans un premier temp, j’étais convaincu que ce système correspondrait en tout point à mon
projet : LTSP permet en effet de mettre en place assez facilement et rapidement un système
client-serveur linux en recyclant comme clients des machines de faibles puissances ou obsolètes en
regard de la demande croissante en ressources des systèmes actuels. De plus, LTSP est largement
plébicité dans le domaine de l’informatique pédagogique et il existe de nombreux exemples où
il est couplé avec le Raspberry.
Mais dans les faits, l’installation d’un système racine via LTSP est assez longue, et hasar-
deuse si la connexion internet est de qualité moyenne : à la moindre coupure inetrnet, il faut
recommencer toute l’installation du système chrooté.
Nous avons finalement constaté que LTSP n’était qu’une collection de scripts, une sorte
de front-end, utilisant en arrière-plan des outils déjà existants de base sous Linux, conçu pour
faciliter l’installation du système par des utilisateurs n’ayant pas de grandes connaissances en
informatique et pour correspondre à une plage de systèmes assez large.
Il est également clair que LTSP n’est pas fait pour une virtualisation totale car les scripts
ne prennent leur configuration qu’installés en dur dans le système hôte.
LTSP est prévu en fait pour être installé directement sur la machine hôte, comme système
dédié.
Or, pour des questions de sécurité évidentes, car le serveur sera aussi utilisé comme serveur
de sauvegardes pour la mairie, il n’est pas question de mélanger les activités scolaires et les
activités administratives de la mairie dans un même environnement.
Ainsi, devant le manque de documentation et le fait qu’en utilisant les outils sous-jacents
déjà complètement documentés, nous obtiendrions un résultat semblable, nous avons abandonné
LTSP pour ne garder de lui que son gestionnaire de connexion LTSP Display Manager (LDM)
sur les Raspberry.
[h] Les outils de base Unix/GNU/Linux[/h]
En décorticant LTSP, nous avons constaté que :
— l’installation du système chrooté peut se faire sans LTSP, directement avec les outils de
base debootstrap et chroot
— le principe de communication entre les serveur LTSP et les clients est basé sur SSH 2 .
— Nous avons utilisé et configuré le protocole SSH pour la communication entre les Rasp-
berry et le serveur. C’est par SSH, que sont transmises les actions du clavier et de la
souris et par lui encore qu’arrivent les images à l’écran.
Le son est géré à part par le serveur de son Pulseaudio.
La partie logicielle
Présentation du système
De fait, lors des tests sur les Raspberry avec Raspbian Jessie installée, nous avons pu constaté
l’évolution de SytemVInit vers systemd. Par la suite, j’ai abandonné le principe de chroot pour
celui de conteneur par systemd-nspawn, beaucoup plus simple à mettre en place et à contrôler.
Primtux tournera donc dans un conteneur systemd-nspawn, l’évolution du chroot utilisé dans
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/viewt...p?t=191252
Ensuite on force l'adresse MAC de la carte réseau dans /boot/cmdline.txt en rajoutant à la fin :
Code : 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)
Code : 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
Code : # 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 :
Code : 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.
Code : 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.
Code : 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 :
Code : # 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 :
Code : 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
Code : [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 :
Code : 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 :
Code : ### 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 :
Code : systemctl start pulseaudio.service
systemctl status pulseaudio.service
et pour le faire se lancer au démarrage :
Code : 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. :
Code : [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é :
Code : #!/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 :
Code : chmod +x /root/primtux_client.sh
Clonage de la carte SD du Raspberry
Voir ce tuto : http://www.framboise314.fr/clonez-la-car...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 (headless : sans interface graphique)
(Je n'explique pas tout ici pour le serveur)
Sur le serveur, les commandes qui suivent sont à exécuter en tant que root.
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.
*
Code : 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.
Code : 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.
Code : 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.
Code : mkdir /etc/systemd/network
Lister les noms des interfaces réseau ( Predictable Network Interface Names ) avec la commande ip link :
Code : 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.
Code : nano /etc/systemd/network/enp2s0.network
Code : [Match]
Name=enp2s0
[Network]
DHCP=v4
La seconde carte réseau sera attribuée au sous-réseau ltsp via un pont (bridge) br0 :
Code : nano /etc/systemd/network/enp4s1.network
Code : [Match]
Name=enp4s1
[Network]
Bridge=br0
Création du pont br0 :
Code : nano /etc/systemd/network/bro.netdev
Code : [NetDev]
Name=br0
Kind=bridge
Le pont br0 est configuré en DHCP
Code : nano /etc/systemd/network/bro.network
Code : [Match]
Name=br0
[Network]
DHCP=v4
Code : 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:
Code : sudo 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 :
Code : /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) :
Code : 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/ :
Code : cp -a /home/user/primtux3_vm /var/lib/machines/primtux3
Changer le propriétaire du répertoire nouvellement créé pour root :
Code : sudo ls -l /var/lib/machines/primtux3
sudo chown -R root : /var/lib/machines/primtux3
Créer ensuite un service primtux3 à lancer au démarrage du serveur. Il faut ajouter des directives ExecStartPost qui sont exécutées après le démarrage du conteneur car en cas de redémarrage, systemd-nspawn modifie les UID et les droits des utilisateurs contre une UID unique et enlève le bit setuid de /usr/bin/sudo :
Code : nano /etc/systemd/system/primtux3.service
Code : [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
ExecStartPost =/bin/bash -c "chown -R root: /var/lib/machines/primtux3"
ExecStartPost =/bin/bash -c "chmod u+s /var/lib/machines/primtux3/usr/bin/sudo"
ExecStartPost =/bin/bash -c "chown -R 1000:1000 /var/lib/machines/primtux3/home/administrateur/"
ExecStartPost =/bin/bash -c "chown -R 1001:1001 /var/lib/machines/primtux3/home/01-mini/"
ExecStartPost =/bin/bash -c "chown -R 1002:1002 /var/lib/machines/primtux3/home/02-super/"
ExecStartPost =/bin/bash -c "chown -R 1003:1003 /var/lib/machines/primtux3/home/03-maxi/"
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 :
Code : systemctl enable primtux3.service
et pour le lancer manuellement :
Code : 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 :
Code : #!/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) :
Code : <?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 :
Code : cp -a /home/01-mini mini1
De même pour super et maxi.
Démarrer le container, se loguer dedans avec
Code : 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 + Alt Gr 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 :
Code : apt-get install isc-dhcp-server
Ecrire le fichier /etc/dhcp/dhcpd.conf :
Code : #
# 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édagogique
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 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/sys...spawn.html
http://www.olafdietsche.de/2016/06/25/ne...-container
https://wiki.archlinux.org/index.php/systemd-networkd
https://lindenberg.io/blog/post/debian-c...md-nspawn/
http://xmodulo.com/switch-from-networkma...workd.html
https://www.freedesktop.org/wiki/Softwar...orkTarget/
https://www.freedesktop.org/wiki/Softwar...faceNames/
|
|
|
|