<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[PrimTux, la distribution éducative - Tutoriels généraux]]></title>
		<link>https://forum.primtux.fr/</link>
		<description><![CDATA[PrimTux, la distribution éducative - https://forum.primtux.fr]]></description>
		<pubDate>Tue, 25 Aug 2026 04:12:32 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Créer une clef bootable avec primtux  9 persistante en mode Legacy]]></title>
			<link>https://forum.primtux.fr/showthread.php?tid=1916</link>
			<pubDate>Mon, 11 May 2026 20:31:14 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.primtux.fr/member.php?action=profile&uid=175">Alain</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.primtux.fr/showthread.php?tid=1916</guid>
			<description><![CDATA[Voir<a href="https://cik22.fr/outils_primtux9/createur_usb_mbr_legacy.tar.gz" target="_blank" rel="noopener" class="mycode_url"> ici </a><br />
<br />
<br />
Ci dessus  le fichier lisezmoi qui explique comment réaliser la clef.<br />
<br />
Commencez par installer sur primtux8 les fichiers système indispensables.<br />
sudo apt update &amp;&amp; sudo apt install syslinux syslinux-common parted mtools unzip extlinux<br />
<br />
Télécharger ensuite le dossier compressé createur_usb_mbr_legacy.tar.gz sur <a href="https://cik22.fr/outils_primtux9/createur_usb_mbr_legacy.tar.gz" target="_blank" rel="noopener" class="mycode_url">https://cik22.fr/outils_primtux9/createu...acy.tar.gz</a><br />
<br />
Dans ce répertoire createur_usb_mbr_legacy' qui contient outils_boot.zip, lisez_moi.txt et usb_legacy_primtux9.sh,  copier-coller le fichier iso ( PrimTux9-M22.3-64bit-2026-02-27.iso )<br />
<br />
Une fois copié, ouvrez usb_legacy_primtux9.sh avec geany ou mousepad<br />
Branchez une clef usb d'au moins 16 go  sur votre ordinateur, vérifier que cette clef est reconnue comme sdX ( gparted peut vous aider pour trouver quelle lettre associer à X ). <br />
<br />
<br />
Dans geany ou mousepad, allez à la ligne 10 du fichier usb_legacy_primtux9.sh et modifiez sdX en attribuant la bonne lettre à sdX.<br />
Si votre clef est ancienne, ne pas hésiter à la reformater et à zéroter la clef (transformer  toutes les données invisibles  ou visibles laissés par les fichiers effacés ou non en espace 0 )<br />
sudo dd if=/dev/zero of=/dev/sdXn bs=1M status=progress<br />
<br />
Attention, cette clef sera totalement effacée.<br />
<br />
Personnellement mes clefs sont souvent en sdb puisque je démarre primtux8 sur disque dur en sda  et que la première clef que j'insère est reconnue comme sdb ...<br />
Une fois que vous avez modifié la ligne 10, sauvez le fichier.<br />
<br />
<br />
Lancez l'exécution dans le répertoire, à partir de la commande sur un terminal : sudo bash usb_legacy_primtux9.sh<br />
Moins de 15 minutes plus tard, vous aurez une clef bootable en legacy avec primtux9 installé en mode persistant.<br />
Cette clef est aussi utilisable sur d'autres postes capables de booter en legacy ...<br />
<br />
<br />
Comme les pc avec des vieux bios ont souvent des problèmes à la sauvegarde,  celle ci est assurée par un renforcement du script  pour que l'extinction soit totale.<br />
Sur les 2 machines legacy de plus de 10 ans  qui m'ont servi à expérimenter, lenovo x201i et hp probook 6470b, j'ai du avoir recours à ce bouton. <br />
<br />
Actuellement l 'arrêt total sur mes machines n'est possible que si on utilise le bouton Eteindre Forcé  présent dans les applications système ...<br />
Peut être que sur d'autres, ce n'est pas nécessaire ...De toute façon une fois que l'écran est devenu noir mais sans que l'ordinateur soit éteint il est possible d'éteindre totalement en maintenant le doigt appuyé pendant plusieurs secondes sur le bouton d'allumage de l'ordinateur sans que cela soit dommageable pour le système.]]></description>
			<content:encoded><![CDATA[Voir<a href="https://cik22.fr/outils_primtux9/createur_usb_mbr_legacy.tar.gz" target="_blank" rel="noopener" class="mycode_url"> ici </a><br />
<br />
<br />
Ci dessus  le fichier lisezmoi qui explique comment réaliser la clef.<br />
<br />
Commencez par installer sur primtux8 les fichiers système indispensables.<br />
sudo apt update &amp;&amp; sudo apt install syslinux syslinux-common parted mtools unzip extlinux<br />
<br />
Télécharger ensuite le dossier compressé createur_usb_mbr_legacy.tar.gz sur <a href="https://cik22.fr/outils_primtux9/createur_usb_mbr_legacy.tar.gz" target="_blank" rel="noopener" class="mycode_url">https://cik22.fr/outils_primtux9/createu...acy.tar.gz</a><br />
<br />
Dans ce répertoire createur_usb_mbr_legacy' qui contient outils_boot.zip, lisez_moi.txt et usb_legacy_primtux9.sh,  copier-coller le fichier iso ( PrimTux9-M22.3-64bit-2026-02-27.iso )<br />
<br />
Une fois copié, ouvrez usb_legacy_primtux9.sh avec geany ou mousepad<br />
Branchez une clef usb d'au moins 16 go  sur votre ordinateur, vérifier que cette clef est reconnue comme sdX ( gparted peut vous aider pour trouver quelle lettre associer à X ). <br />
<br />
<br />
Dans geany ou mousepad, allez à la ligne 10 du fichier usb_legacy_primtux9.sh et modifiez sdX en attribuant la bonne lettre à sdX.<br />
Si votre clef est ancienne, ne pas hésiter à la reformater et à zéroter la clef (transformer  toutes les données invisibles  ou visibles laissés par les fichiers effacés ou non en espace 0 )<br />
sudo dd if=/dev/zero of=/dev/sdXn bs=1M status=progress<br />
<br />
Attention, cette clef sera totalement effacée.<br />
<br />
Personnellement mes clefs sont souvent en sdb puisque je démarre primtux8 sur disque dur en sda  et que la première clef que j'insère est reconnue comme sdb ...<br />
Une fois que vous avez modifié la ligne 10, sauvez le fichier.<br />
<br />
<br />
Lancez l'exécution dans le répertoire, à partir de la commande sur un terminal : sudo bash usb_legacy_primtux9.sh<br />
Moins de 15 minutes plus tard, vous aurez une clef bootable en legacy avec primtux9 installé en mode persistant.<br />
Cette clef est aussi utilisable sur d'autres postes capables de booter en legacy ...<br />
<br />
<br />
Comme les pc avec des vieux bios ont souvent des problèmes à la sauvegarde,  celle ci est assurée par un renforcement du script  pour que l'extinction soit totale.<br />
Sur les 2 machines legacy de plus de 10 ans  qui m'ont servi à expérimenter, lenovo x201i et hp probook 6470b, j'ai du avoir recours à ce bouton. <br />
<br />
Actuellement l 'arrêt total sur mes machines n'est possible que si on utilise le bouton Eteindre Forcé  présent dans les applications système ...<br />
Peut être que sur d'autres, ce n'est pas nécessaire ...De toute façon une fois que l'écran est devenu noir mais sans que l'ordinateur soit éteint il est possible d'éteindre totalement en maintenant le doigt appuyé pendant plusieurs secondes sur le bouton d'allumage de l'ordinateur sans que cela soit dommageable pour le système.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Récupération de données et sauvegardes sur PrimTux]]></title>
			<link>https://forum.primtux.fr/showthread.php?tid=1895</link>
			<pubDate>Mon, 02 Feb 2026 16:59:47 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.primtux.fr/member.php?action=profile&uid=656">Nathalie100</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.primtux.fr/showthread.php?tid=1895</guid>
			<description><![CDATA[Bonjour,<br />
<br />
Je m’interroge sur les pratiques autour de la <a href="https://www.recoveo.com/" target="_blank" rel="noopener" class="mycode_url">récupération de données</a> et des sauvegardes sur PrimTux, notamment dans un contexte scolaire ou familial où plusieurs utilisateurs partagent la même machine. Entre les travaux d’élèves, les réglages personnalisés et les fichiers créés au fil du temps, il peut arriver que certaines données soient perdues ou écrasées. Je me demandais quelles solutions vous utilisez pour faciliter une éventuelle récupération de données et limiter les impacts quand un problème survient.<br />
<br />
Vos retours sur les méthodes que vous avez mises en place ou testées avec PrimTux m’intéressent.<br />
<br />
Merci d’avance]]></description>
			<content:encoded><![CDATA[Bonjour,<br />
<br />
Je m’interroge sur les pratiques autour de la <a href="https://www.recoveo.com/" target="_blank" rel="noopener" class="mycode_url">récupération de données</a> et des sauvegardes sur PrimTux, notamment dans un contexte scolaire ou familial où plusieurs utilisateurs partagent la même machine. Entre les travaux d’élèves, les réglages personnalisés et les fichiers créés au fil du temps, il peut arriver que certaines données soient perdues ou écrasées. Je me demandais quelles solutions vous utilisez pour faciliter une éventuelle récupération de données et limiter les impacts quand un problème survient.<br />
<br />
Vos retours sur les méthodes que vous avez mises en place ou testées avec PrimTux m’intéressent.<br />
<br />
Merci d’avance]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Primtux 8 Handy menu.]]></title>
			<link>https://forum.primtux.fr/showthread.php?tid=1884</link>
			<pubDate>Tue, 09 Dec 2025 10:27:33 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.primtux.fr/member.php?action=profile&uid=504">Cramy</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.primtux.fr/showthread.php?tid=1884</guid>
			<description><![CDATA[Bonjour à tous,<br />
Je savais comment les modifier sur primtux 7. Je bloque sur la modification des Handy menus du 8. <br />
Ce doit être encore possible, non ?<br />
Numériquement vôtre,]]></description>
			<content:encoded><![CDATA[Bonjour à tous,<br />
Je savais comment les modifier sur primtux 7. Je bloque sur la modification des Handy menus du 8. <br />
Ce doit être encore possible, non ?<br />
Numériquement vôtre,]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[WINE : need help !]]></title>
			<link>https://forum.primtux.fr/showthread.php?tid=1783</link>
			<pubDate>Tue, 09 Jul 2024 16:46:28 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.primtux.fr/member.php?action=profile&uid=514">Benjamin</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.primtux.fr/showthread.php?tid=1783</guid>
			<description><![CDATA[Bonjour,<br />
je découvre progressivement wine puisqu'à ce jour, trop peu d'éditeurs prévoient une installation des logiciels sur Linux.<br />
Je me heurte à beaucoup d'échecs, donc je me questionne sur les causes.<br />
Exemple : je souhaite installer Scriptum, chez Retz. <br />
J'ai copié le contenu du CD-ROM dans un nouveau dossier dans /opt.<br />
J'entre dans le dossier en tant que root.<br />
J'y lance un terminal et je tape la commande : <br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>wine Scriptum_PC.exe</code></div></div>Le terminal me renvoie : <br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>MESA-INTEL: warning: Ivy Bridge Vulkan support is incomplete<br />
MESA-INTEL: warning: Ivy Bridge Vulkan support is incomplete</code></div></div>L'installateur se lance. Je clique sur suivant etc.<br />
L'installation semble bien se passer et lorsque Scriptum se lance, une fenêtre s'ouvre et m'informe que Scriptum a rencontré un problème sérieux et doit être fermé.Il est évoqué un problème dans wine, que j'ai pourtant mis à jour. <br />
<br />
Avec wincfg, je me suis mis sur Windows 7, par défaut. Mais même en changeant de version, je ne parviens à rien. <br />
<br />
J'ai rencontré ce problème avec plusieurs logiciels, d'où mon interrogation. <br />
<br />
Quelqu'un aurait une piste ? Je sens que ce Vulkan est la cause du problème mais bon... <img src="https://forum.primtux.fr/images/smilies/huh.png" alt="Huh" title="Huh" class="smilie smilie_17" /> <br />
<br />
Merci infiniment !<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://forum.primtux.fr/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=14" target="_blank" title="">fenetre erreur.png</a> (Taille : 8.66 Ko / Téléchargements : 37)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://forum.primtux.fr/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=15" target="_blank" title="">Scriptum.png</a> (Taille : 37.38 Ko / Téléchargements : 35)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[Bonjour,<br />
je découvre progressivement wine puisqu'à ce jour, trop peu d'éditeurs prévoient une installation des logiciels sur Linux.<br />
Je me heurte à beaucoup d'échecs, donc je me questionne sur les causes.<br />
Exemple : je souhaite installer Scriptum, chez Retz. <br />
J'ai copié le contenu du CD-ROM dans un nouveau dossier dans /opt.<br />
J'entre dans le dossier en tant que root.<br />
J'y lance un terminal et je tape la commande : <br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>wine Scriptum_PC.exe</code></div></div>Le terminal me renvoie : <br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>MESA-INTEL: warning: Ivy Bridge Vulkan support is incomplete<br />
MESA-INTEL: warning: Ivy Bridge Vulkan support is incomplete</code></div></div>L'installateur se lance. Je clique sur suivant etc.<br />
L'installation semble bien se passer et lorsque Scriptum se lance, une fenêtre s'ouvre et m'informe que Scriptum a rencontré un problème sérieux et doit être fermé.Il est évoqué un problème dans wine, que j'ai pourtant mis à jour. <br />
<br />
Avec wincfg, je me suis mis sur Windows 7, par défaut. Mais même en changeant de version, je ne parviens à rien. <br />
<br />
J'ai rencontré ce problème avec plusieurs logiciels, d'où mon interrogation. <br />
<br />
Quelqu'un aurait une piste ? Je sens que ce Vulkan est la cause du problème mais bon... <img src="https://forum.primtux.fr/images/smilies/huh.png" alt="Huh" title="Huh" class="smilie smilie_17" /> <br />
<br />
Merci infiniment !<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://forum.primtux.fr/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=14" target="_blank" title="">fenetre erreur.png</a> (Taille : 8.66 Ko / Téléchargements : 37)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://forum.primtux.fr/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=15" target="_blank" title="">Scriptum.png</a> (Taille : 37.38 Ko / Téléchargements : 35)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Primtux8: peut on configurer le Bluetooth pour connecter une enceinte?]]></title>
			<link>https://forum.primtux.fr/showthread.php?tid=1778</link>
			<pubDate>Tue, 18 Jun 2024 09:42:05 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.primtux.fr/member.php?action=profile&uid=513">coletrix</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.primtux.fr/showthread.php?tid=1778</guid>
			<description><![CDATA[Bonjour à tous,<br />
<br />
J’utilise la distribution primtux8 sur un PC HP qui a 10 ans et qui dispose du Bluetooth.<br />
J’aimerais configurer ce dernier pour y connecter une enceinte. Les derniers sujets sur le forum datent de 2020, et je n’ai pas bien compris… pourriez-vous m’indiquer si cela possible?<br />
<br />
Je vous remercie par avance pour vos retours.<br />
<br />
Bonne journée<br />
<br />
Coletrix]]></description>
			<content:encoded><![CDATA[Bonjour à tous,<br />
<br />
J’utilise la distribution primtux8 sur un PC HP qui a 10 ans et qui dispose du Bluetooth.<br />
J’aimerais configurer ce dernier pour y connecter une enceinte. Les derniers sujets sur le forum datent de 2020, et je n’ai pas bien compris… pourriez-vous m’indiquer si cela possible?<br />
<br />
Je vous remercie par avance pour vos retours.<br />
<br />
Bonne journée<br />
<br />
Coletrix]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Choix i386 ou amd64 ?]]></title>
			<link>https://forum.primtux.fr/showthread.php?tid=1722</link>
			<pubDate>Sat, 10 Dec 2022 09:56:36 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.primtux.fr/member.php?action=profile&uid=483">Rom1</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.primtux.fr/showthread.php?tid=1722</guid>
			<description><![CDATA[Bonjour,<br />
<br />
J'ai récupéré un ordinateur dont le processeur est un i5. Par conséquent, quelle distribution dois-je choisir : i386 ou amd64 ?<br />
<br />
Merci d'avance.<br />
<br />
Romain]]></description>
			<content:encoded><![CDATA[Bonjour,<br />
<br />
J'ai récupéré un ordinateur dont le processeur est un i5. Par conséquent, quelle distribution dois-je choisir : i386 ou amd64 ?<br />
<br />
Merci d'avance.<br />
<br />
Romain]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[primtux et tablettes avec scrcpy]]></title>
			<link>https://forum.primtux.fr/showthread.php?tid=1663</link>
			<pubDate>Wed, 12 Jan 2022 17:31:52 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.primtux.fr/member.php?action=profile&uid=175">Alain</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.primtux.fr/showthread.php?tid=1663</guid>
			<description><![CDATA[Bonjour <br />
Voici un exemple de video de tablettes réalisée avec primtux , simplescreenrecorder  et scrcpy<br />
<br />
Je pense que l'explication de démarches sur tablettes  et la création de vidéos associées peut être faite par des élèves de cycle 3, une fois la configuration faite.  (installation de simplescreen recorder, paramétrage du son dans simplescreen recorder ) et installation de scrcpy<br />
voir la video ici <a href="https://drive.google.com/file/d/1qp8xdAKbIHs39MBWxifz90HkSeSfvXry/view?usp=sharing" target="_blank" rel="noopener" class="mycode_url">https://drive.google.com/file/d/1qp8xdAK...sp=sharing</a><br />
<br />
A noter que cela fonctionne aussi avec primtux4 et des tablettes ou smartphone  ( androïd) de base<br />
<br />
Alain]]></description>
			<content:encoded><![CDATA[Bonjour <br />
Voici un exemple de video de tablettes réalisée avec primtux , simplescreenrecorder  et scrcpy<br />
<br />
Je pense que l'explication de démarches sur tablettes  et la création de vidéos associées peut être faite par des élèves de cycle 3, une fois la configuration faite.  (installation de simplescreen recorder, paramétrage du son dans simplescreen recorder ) et installation de scrcpy<br />
voir la video ici <a href="https://drive.google.com/file/d/1qp8xdAKbIHs39MBWxifz90HkSeSfvXry/view?usp=sharing" target="_blank" rel="noopener" class="mycode_url">https://drive.google.com/file/d/1qp8xdAK...sp=sharing</a><br />
<br />
A noter que cela fonctionne aussi avec primtux4 et des tablettes ou smartphone  ( androïd) de base<br />
<br />
Alain]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[Résolu]parvient pas à faire fonctionner virtual box avec windows 10]]></title>
			<link>https://forum.primtux.fr/showthread.php?tid=1639</link>
			<pubDate>Fri, 19 Nov 2021 23:19:27 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.primtux.fr/member.php?action=profile&uid=197">chti5933</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.primtux.fr/showthread.php?tid=1639</guid>
			<description><![CDATA[Sur une machine laptop hp  équipé avec <br />
<br />
AMD ARADEON R5<br />
ram 4 Go <br />
systeme d'exploitation 64 bits <br />
j'ai un message d'erreur quand je prépare la machine virtuelle<br />
Processeur<br />
pae  coché<br />
je ne touche jamais à la partie accélération<br />
mais j'ai le message suivant<br />
paramètre invalide détecté :<br />
<br />
PAGE SYSTEME : ACCELERATION<br />
la virtualisation matérielle est activée dans la section accélération de la page syteme bien qu'elle <br />
<span style="font-weight: bold;" class="mycode_b">ne soit pas prise en charge par le système hôte</span>. Elle doit être désactivée pour pouvoir démarrer le système virtuel<br />
<br />
dans l'onglet je trouve<br />
interface de virtualisation , plusieurs options<br />
none, , par défaut, Héritage, Minimale , hyper-V<br />
kvm<br />
<br />
et une case à cocher virtualisation matérielle ' la case ' activer la pagination imbriquée<br />
<br />
aucune combinaison de ces deux options ne retire le message d'erreur<br />
<br />
Je comprends , que c'est dans windows ou le processeur que cela se passe ???]]></description>
			<content:encoded><![CDATA[Sur une machine laptop hp  équipé avec <br />
<br />
AMD ARADEON R5<br />
ram 4 Go <br />
systeme d'exploitation 64 bits <br />
j'ai un message d'erreur quand je prépare la machine virtuelle<br />
Processeur<br />
pae  coché<br />
je ne touche jamais à la partie accélération<br />
mais j'ai le message suivant<br />
paramètre invalide détecté :<br />
<br />
PAGE SYSTEME : ACCELERATION<br />
la virtualisation matérielle est activée dans la section accélération de la page syteme bien qu'elle <br />
<span style="font-weight: bold;" class="mycode_b">ne soit pas prise en charge par le système hôte</span>. Elle doit être désactivée pour pouvoir démarrer le système virtuel<br />
<br />
dans l'onglet je trouve<br />
interface de virtualisation , plusieurs options<br />
none, , par défaut, Héritage, Minimale , hyper-V<br />
kvm<br />
<br />
et une case à cocher virtualisation matérielle ' la case ' activer la pagination imbriquée<br />
<br />
aucune combinaison de ces deux options ne retire le message d'erreur<br />
<br />
Je comprends , que c'est dans windows ou le processeur que cela se passe ???]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[résolu] Installation de clé wifi Brostrend ac1200]]></title>
			<link>https://forum.primtux.fr/showthread.php?tid=1593</link>
			<pubDate>Sun, 23 May 2021 04:59:18 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.primtux.fr/member.php?action=profile&uid=197">chti5933</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.primtux.fr/showthread.php?tid=1593</guid>
			<description><![CDATA[Bonjour,<br />
<br />
                     Je viens d'acquérir une clé wifi "rapide" <br />
<br />
<a href="https://www.brostrend.net/products/brostrend-cle-wifi-usb-adaptateurs-1200-mbps" target="_blank" rel="noopener" class="mycode_url">https://www.brostrend.net/products/brost...-1200-mbps</a><br />
<br />
effectivement j'ai gagné en vitesse et qualité de réception<br />
<br />
le processus d'installation pour linux est disponible aisément<br />
<br />
<a href="https://deb.trendtechcn.com/" target="_blank" rel="noopener" class="mycode_url">ici</a><br />
<br />
la commande <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>sh -c 'wget deb.trendtechcn.com/install -O /tmp/install &amp;&amp; sh /tmp/install'</code></div></div>  permet l’installation, il suffit de suivre les indications]]></description>
			<content:encoded><![CDATA[Bonjour,<br />
<br />
                     Je viens d'acquérir une clé wifi "rapide" <br />
<br />
<a href="https://www.brostrend.net/products/brostrend-cle-wifi-usb-adaptateurs-1200-mbps" target="_blank" rel="noopener" class="mycode_url">https://www.brostrend.net/products/brost...-1200-mbps</a><br />
<br />
effectivement j'ai gagné en vitesse et qualité de réception<br />
<br />
le processus d'installation pour linux est disponible aisément<br />
<br />
<a href="https://deb.trendtechcn.com/" target="_blank" rel="noopener" class="mycode_url">ici</a><br />
<br />
la commande <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>sh -c 'wget deb.trendtechcn.com/install -O /tmp/install &amp;&amp; sh /tmp/install'</code></div></div>  permet l’installation, il suffit de suivre les indications]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Abalect Primtux6  attention aux propriétés erreur75]]></title>
			<link>https://forum.primtux.fr/showthread.php?tid=1540</link>
			<pubDate>Fri, 29 Jan 2021 11:12:21 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.primtux.fr/member.php?action=profile&uid=197">chti5933</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.primtux.fr/showthread.php?tid=1540</guid>
			<description><![CDATA[Bonjour,<br />
<br />
                       En continuant à préparer un guide d’utilisation j'observe un besoin nécessaire<br />
<br />
<br />
Constat <br />
<br />
Abalect   est accompagné de documents situés pour Primtux 6 dans<br />
/usr/share/abalect/CE1 <br />
ou<br />
/usr/share/abalect/CE2<br />
<br />
ou<br />
/usr/share/abalect/CM1 <br />
ou<br />
/usr/share/abalect/CM2<br />
<br />
<br />
on y trouve des fichiers texte *.rtf plus ou moins accompagnés de fichiers qui lui sont associés<br />
certains textes sont déjà bien fournis, peuvent être utilisés tel quel , mais aussi être corrigés ou complétés<br />
<br />
au départ :<br />
leur propriétaire  est root ,<br />
 le groupe est root<br />
<br />
<br />
Tout le monde peut voir et changer le contenu<br />
<br />
<br />
quelque soit la cession ( admin, 03-maxi, 02-super)<br />
si l'enseignant intervient complète,  crée, corrige un éléments , les fichiers qui sont associés vont changer de propriété<br />
<br />
<br />
si c'est dans la cession super que les modification ou création ont été faites les propriété des fichiers changent <br />
<a href="https://www.casimages.com/i/210129114610834606.jpg.html" target="_blank" rel="noopener" class="mycode_url"><img src="https://nsa40.casimages.com/img/2021/01/29/210129114610834606.jpg" loading="lazy"  alt="[Image: 210129114610834606.jpg]" class="mycode_img" /></a><br />
<br />
<br />
<br />
<br />
<br />
et quand on ouvrira la cession maxi  et qu'on voudra ouvrir travailler sur un document modifié, ou créé dans la cession super<br />
<br />
on obtiendra le message d'erreur suivant<br />
<a href="https://www.casimages.com/i/210129114610516296.png.html" target="_blank" rel="noopener" class="mycode_url"><img src="https://nsa40.casimages.com/img/2021/01/29/210129114610516296.png" loading="lazy"  alt="[Image: 210129114610516296.png]" class="mycode_img" /></a><br />
<br />
et inversement créer par maxi <span style="font-weight: bold;" class="mycode_b">ou administrateur</span><br />
<a href="https://www.casimages.com/i/210129114610574006.png.html" target="_blank" rel="noopener" class="mycode_url"><img src="https://nsa40.casimages.com/img/2021/01/29/210129114610574006.png" loading="lazy"  alt="[Image: 210129114610574006.png]" class="mycode_img" /></a><br />
<br />
<br />
Pour ne pas tomber sur ce problème, si le texte  a été créé dans un dossier (   /usr/share/abalect/CE1, ou /usr/share/abalect/CE2, etc pour CM1, CM2)<br />
<br />
il faut lancer dans un terminal<br />
<br />
sudo chmod 666 /usr/share/abalect/CE1/*.* si on travaillé avec un fichier modifié ou créé dans /usr/share/abalect/CE1<br />
<br />
et si on a créé ou modifié dans le répertoire abalect c a d <br />
/usr/share/abalect<br />
<br />
il faut que ce soit utilisable dans les cessions<br />
<br />
des instructions sont nécessaires<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>sudo chmod 666 /usr/share/abalect/*.rtf *.dic *.qst *.bil *.dat</code></div></div><br />
donc pour créer ou modifier un document la cession administrateur peut être utlisée mais il faut terminer par l'instrction en ligne de cde <br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>sudo chmod 666 /usr/share/abalect/*.rtf *.dic *.qst *.bil *.dat</code></div></div> merci pour vos remarques ou questions<br />
<br />
Pierre]]></description>
			<content:encoded><![CDATA[Bonjour,<br />
<br />
                       En continuant à préparer un guide d’utilisation j'observe un besoin nécessaire<br />
<br />
<br />
Constat <br />
<br />
Abalect   est accompagné de documents situés pour Primtux 6 dans<br />
/usr/share/abalect/CE1 <br />
ou<br />
/usr/share/abalect/CE2<br />
<br />
ou<br />
/usr/share/abalect/CM1 <br />
ou<br />
/usr/share/abalect/CM2<br />
<br />
<br />
on y trouve des fichiers texte *.rtf plus ou moins accompagnés de fichiers qui lui sont associés<br />
certains textes sont déjà bien fournis, peuvent être utilisés tel quel , mais aussi être corrigés ou complétés<br />
<br />
au départ :<br />
leur propriétaire  est root ,<br />
 le groupe est root<br />
<br />
<br />
Tout le monde peut voir et changer le contenu<br />
<br />
<br />
quelque soit la cession ( admin, 03-maxi, 02-super)<br />
si l'enseignant intervient complète,  crée, corrige un éléments , les fichiers qui sont associés vont changer de propriété<br />
<br />
<br />
si c'est dans la cession super que les modification ou création ont été faites les propriété des fichiers changent <br />
<a href="https://www.casimages.com/i/210129114610834606.jpg.html" target="_blank" rel="noopener" class="mycode_url"><img src="https://nsa40.casimages.com/img/2021/01/29/210129114610834606.jpg" loading="lazy"  alt="[Image: 210129114610834606.jpg]" class="mycode_img" /></a><br />
<br />
<br />
<br />
<br />
<br />
et quand on ouvrira la cession maxi  et qu'on voudra ouvrir travailler sur un document modifié, ou créé dans la cession super<br />
<br />
on obtiendra le message d'erreur suivant<br />
<a href="https://www.casimages.com/i/210129114610516296.png.html" target="_blank" rel="noopener" class="mycode_url"><img src="https://nsa40.casimages.com/img/2021/01/29/210129114610516296.png" loading="lazy"  alt="[Image: 210129114610516296.png]" class="mycode_img" /></a><br />
<br />
et inversement créer par maxi <span style="font-weight: bold;" class="mycode_b">ou administrateur</span><br />
<a href="https://www.casimages.com/i/210129114610574006.png.html" target="_blank" rel="noopener" class="mycode_url"><img src="https://nsa40.casimages.com/img/2021/01/29/210129114610574006.png" loading="lazy"  alt="[Image: 210129114610574006.png]" class="mycode_img" /></a><br />
<br />
<br />
Pour ne pas tomber sur ce problème, si le texte  a été créé dans un dossier (   /usr/share/abalect/CE1, ou /usr/share/abalect/CE2, etc pour CM1, CM2)<br />
<br />
il faut lancer dans un terminal<br />
<br />
sudo chmod 666 /usr/share/abalect/CE1/*.* si on travaillé avec un fichier modifié ou créé dans /usr/share/abalect/CE1<br />
<br />
et si on a créé ou modifié dans le répertoire abalect c a d <br />
/usr/share/abalect<br />
<br />
il faut que ce soit utilisable dans les cessions<br />
<br />
des instructions sont nécessaires<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>sudo chmod 666 /usr/share/abalect/*.rtf *.dic *.qst *.bil *.dat</code></div></div><br />
donc pour créer ou modifier un document la cession administrateur peut être utlisée mais il faut terminer par l'instrction en ligne de cde <br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>sudo chmod 666 /usr/share/abalect/*.rtf *.dic *.qst *.bil *.dat</code></div></div> merci pour vos remarques ou questions<br />
<br />
Pierre]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Problème installation GRUB]]></title>
			<link>https://forum.primtux.fr/showthread.php?tid=1435</link>
			<pubDate>Thu, 14 May 2020 16:40:22 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.primtux.fr/member.php?action=profile&uid=406">Local Hero</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.primtux.fr/showthread.php?tid=1435</guid>
			<description><![CDATA[Bonsoir.<br />
<br />
J'ai téléchargé la dernière version de Primtux 64 bits.<br />
<br />
J'ai créé une clé USB bootable pour l'installation.<br />
<br />
J'ai paramétré la séquence de boot du bios.<br />
<br />
J'ai sélectionné "installer Primtux" lors du boot sur la clé USB. (1)<br />
<br />
Le processus d'installation est arrivé à son terme (ou presque).<br />
<br />
La toute dernière étape m'affiche qu'il y a un problème de GRUB et que Primtux ne pourra pas se lancer.<br />
<br />
Que faire ?<br />
<br />
Merci d'avance à la personne qui passera du temps à me répondre.<br />
<br />
Local Hero.]]></description>
			<content:encoded><![CDATA[Bonsoir.<br />
<br />
J'ai téléchargé la dernière version de Primtux 64 bits.<br />
<br />
J'ai créé une clé USB bootable pour l'installation.<br />
<br />
J'ai paramétré la séquence de boot du bios.<br />
<br />
J'ai sélectionné "installer Primtux" lors du boot sur la clé USB. (1)<br />
<br />
Le processus d'installation est arrivé à son terme (ou presque).<br />
<br />
La toute dernière étape m'affiche qu'il y a un problème de GRUB et que Primtux ne pourra pas se lancer.<br />
<br />
Que faire ?<br />
<br />
Merci d'avance à la personne qui passera du temps à me répondre.<br />
<br />
Local Hero.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[disk boot failure]]></title>
			<link>https://forum.primtux.fr/showthread.php?tid=1406</link>
			<pubDate>Sun, 05 Apr 2020 17:48:23 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.primtux.fr/member.php?action=profile&uid=12">Alkaswaba</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.primtux.fr/showthread.php?tid=1406</guid>
			<description><![CDATA[Bonjour, bonsoir,<br />
<br />
Je reviens une nouvelle fois avec un soucis. Mon conjoint a branché un autre disque dur sur mon pc primtux. <br />
Ce disque dur a été débranché depuis mais maintenant, je ne peux plus démarrer le mien, j'ai l'erreur suivante au démarrage :<br />
<br />
Disk book failure, insert system disk and press enter.<br />
<br />
<a href="https://drive.google.com/open?id=1O1Mq9-W4L-P7gSQgTNvlEBaeg23fgFch" target="_blank" rel="noopener" class="mycode_url">https://drive.google.com/open?id=1O1Mq9-...aeg23fgFch</a><br />
<br />
Je suis allée voir dans le bios mais en vain ...<br />
<br />
<a href="https://drive.google.com/open?id=1O4t4TlvGYlEmlw_atyfCKBkiiqxcQ1qH" target="_blank" rel="noopener" class="mycode_url">https://drive.google.com/open?id=1O4t4Tl...kiiqxcQ1qH</a><br />
<br />
<a href="https://drive.google.com/open?id=1NzXBZ5doYhVtovZ9Dl448TIpOVGrLK3n" target="_blank" rel="noopener" class="mycode_url">https://drive.google.com/open?id=1NzXBZ5...IpOVGrLK3n</a><br />
<br />
<br />
Que puis-je faire ? Sachant que je n'ai pas de lecteur cd-rom sur ce pc (c'est un pc fait maison avec des pièces récupérées par ci par là)<br />
<br />
Voici des photos de l'écran (je les stock ailleurs, je laisse les liens car c'est trop gros pour être affiché directement ici)<br />
<br />
Merci d'avance pour votre aide...]]></description>
			<content:encoded><![CDATA[Bonjour, bonsoir,<br />
<br />
Je reviens une nouvelle fois avec un soucis. Mon conjoint a branché un autre disque dur sur mon pc primtux. <br />
Ce disque dur a été débranché depuis mais maintenant, je ne peux plus démarrer le mien, j'ai l'erreur suivante au démarrage :<br />
<br />
Disk book failure, insert system disk and press enter.<br />
<br />
<a href="https://drive.google.com/open?id=1O1Mq9-W4L-P7gSQgTNvlEBaeg23fgFch" target="_blank" rel="noopener" class="mycode_url">https://drive.google.com/open?id=1O1Mq9-...aeg23fgFch</a><br />
<br />
Je suis allée voir dans le bios mais en vain ...<br />
<br />
<a href="https://drive.google.com/open?id=1O4t4TlvGYlEmlw_atyfCKBkiiqxcQ1qH" target="_blank" rel="noopener" class="mycode_url">https://drive.google.com/open?id=1O4t4Tl...kiiqxcQ1qH</a><br />
<br />
<a href="https://drive.google.com/open?id=1NzXBZ5doYhVtovZ9Dl448TIpOVGrLK3n" target="_blank" rel="noopener" class="mycode_url">https://drive.google.com/open?id=1NzXBZ5...IpOVGrLK3n</a><br />
<br />
<br />
Que puis-je faire ? Sachant que je n'ai pas de lecteur cd-rom sur ce pc (c'est un pc fait maison avec des pièces récupérées par ci par là)<br />
<br />
Voici des photos de l'écran (je les stock ailleurs, je laisse les liens car c'est trop gros pour être affiché directement ici)<br />
<br />
Merci d'avance pour votre aide...]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Terminaux légers/serveur pour Primtux 3 amd64 legacy et Raspberry Pi]]></title>
			<link>https://forum.primtux.fr/showthread.php?tid=1404</link>
			<pubDate>Fri, 03 Apr 2020 19:08:06 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.primtux.fr/member.php?action=profile&uid=54">moricef1</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.primtux.fr/showthread.php?tid=1404</guid>
			<description><![CDATA[<span style="font-weight: bold;" class="mycode_b"><span style="font-size: x-large;" class="mycode_size">Linux Terminal Server Project (LTSP]</span></span><br />
<br />
En 2015, à l’occasion d’une discussion avec notre directrice d’école, il s’est<br />
avéré que l’état du parc informatique dans sa classe de petite et moyenne sections était bien en<br />
dessous de ses besoins. Ceux-ci sont de quatres postes au plus. Considérant le coût important<br />
que peut représenter l’achat de postes informatiques complets (environ 2900 € pour 4 postes),<br />
c’est vers une architecture client-serveur, qui rempli adéquatement les conditions d’économie de<br />
place et de coûts, que mon choix se portera. Le rôle de clients sera attribué aux Raspberry Pi, des<br />
nano-ordinateurs mono-carte de faible coût et peu gourmands en énergie électrique. Le serveur,<br />
qui sera aussi serveur de sauvegardes pour la mairie, fera tourner une distribution éducative. La<br />
machine sera un ordinateur de bureau de bonne facture avec un bon processeur et suffisamment<br />
d’espace disque et de mémoire. L’ensemble fonctionnera sous des systèmes d’exploitation GNU-<br />
Linux. Le choix de Linux s’explique par l’absence de coût d’installation logicielle (pas licences à<br />
payer) et par la fiabilité (peu ou prou de virus) et la stabilité du système, donc de sa maintenance<br />
(très peu de redémarrage des serveurs, etc).<br />
<br />
<br />
À la recherche d’informations concernant un système clients-serveur à base de Raspberry, je<br />
découvre le projet Linux Terminal Server Project (LTSP)[LTSP]. Celui-ci, grace à debootstrap,<br />
permet de construire un système complet dans un répertoire donné et la commande chroot<br />
permet « d’entrer » dans ce nouveau système. <br />
Dans un premier temp, j’étais convaincu que ce système correspondrait en tout point à mon<br />
projet : LTSP permet en effet de mettre en place assez facilement et rapidement un système<br />
client-serveur linux en recyclant comme clients des machines de faibles puissances ou obsolètes en<br />
regard de la demande croissante en ressources des systèmes actuels. De plus, LTSP est largement<br />
plébicité dans le domaine de l’informatique pédagogique et il existe de nombreux exemples où<br />
il est couplé avec le Raspberry.<br />
Mais dans les faits, l’installation d’un système racine via LTSP est assez longue, et hasar-<br />
deuse si la connexion internet est de qualité moyenne : à la moindre coupure inetrnet, il faut<br />
recommencer toute l’installation du système chrooté.<br />
Nous avons finalement constaté que LTSP n’était qu’une collection de scripts, une sorte<br />
de front-end, utilisant en arrière-plan des outils déjà existants de base sous Linux, conçu pour<br />
faciliter l’installation du système par des utilisateurs n’ayant pas de grandes connaissances en<br />
informatique et pour correspondre à une plage de systèmes assez large.<br />
Il est également clair que LTSP n’est pas fait pour une virtualisation totale car les scripts<br />
ne prennent leur configuration qu’installés en dur dans le système hôte.<br />
LTSP est prévu en fait pour être installé directement sur la machine hôte, comme système<br />
dédié.<br />
Or, pour des questions de sécurité évidentes, car le serveur sera aussi utilisé comme serveur<br />
de sauvegardes pour la mairie, il n’est pas question de mélanger les activités scolaires et les<br />
activités administratives de la mairie dans un même environnement.<br />
Ainsi, devant le manque de documentation et le fait qu’en utilisant les outils sous-jacents<br />
déjà complètement documentés, nous obtiendrions un résultat semblable, nous avons abandonné<br />
LTSP pour ne garder de lui que son gestionnaire de connexion LTSP Display Manager (LDM)<br />
sur les Raspberry.<br />
[h] Les outils de base Unix/GNU/Linux[/h]<br />
En décorticant LTSP, nous avons constaté que :<br />
— l’installation du système chrooté peut se faire sans LTSP, directement avec les outils de<br />
base debootstrap et chroot<br />
— le principe de communication entre les serveur LTSP et les clients est basé sur SSH 2 .<br />
— Nous avons utilisé et configuré le protocole SSH pour la communication entre les Rasp-<br />
berry et le serveur. C’est par SSH, que sont transmises les actions du clavier et de la<br />
souris et par lui encore qu’arrivent les images à l’écran.<br />
Le son est géré à part par le serveur de son Pulseaudio.<br />
<br />
<hr class="mycode_hr" />
<br />
<div style="text-align: left;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">La partie logicielle</span></span></div>
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">Présentation du système</span></span><br />
<br />
De fait, lors des tests sur les Raspberry avec Raspbian Jessie installée, nous avons pu constaté<br />
l’évolution de SytemVInit vers systemd. Par la suite, j’ai abandonné le principe de chroot pour<br />
celui de conteneur par systemd-nspawn, beaucoup plus simple à mettre en place et à contrôler.<br />
Primtux tournera donc dans un conteneur systemd-nspawn, l’évolution du chroot utilisé dans<br />
LTSP.<br />
<span style="font-style: italic;" class="mycode_i">Ceci est valable pour primtux 3 amd64 legacy et raspberry sous raspbian stretch lite avec systemd.</span><br />
<span style="font-style: italic;" class="mycode_i">Toutes les commandes sont effectuées en tant qu'administrateur root</span><br />
<br />
<hr class="mycode_hr" />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Les clients raspberry</span></span><br />
<br />
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 -&gt; Network options -&gt; N3 Network interface names. Ref. :  <a href="https://www.raspberrypi.org/forums/viewtopic.php?t=191252" target="_blank" rel="noopener" class="mycode_url">https://www.raspberrypi.org/forums/viewt...p?t=191252</a><br />
<br />
Ensuite on force l'adresse MAC  de la carte réseau dans /boot/cmdline.txt en rajoutant à la fin : <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>smsc95xx.macaddr=B8:27:EB:XX:XX:XX</code></div></div><br />
(juste changer les 3 derniers couples de valeurs)<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Activation du serveur ssh</span><br />
Créer un fichier texte vide nommé ssh dans le répertoire /boot<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Installer les paquets nécessaires au son et LDM</span><br />
<br />
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)<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>apt-get update &amp;&amp; apt-get upgrade &amp;&amp; apt-get install xserver-xorg pulseaudio pulseaudio-module-zeroconf alsa-base ldm fuse ntfs-3g</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Activation du montage des périphériques de stockages USB</span><br />
<br />
Remplacer la ligne MountFlags=slave par MountFlags=shared dans /lib/systemd/system/systemd-udevd.service<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>#  This file is part of systemd.<br />
#<br />
#  systemd is free software; you can redistribute it and/or modify it<br />
#  under the terms of the GNU Lesser General Public License as published by<br />
#  the Free Software Foundation; either version 2.1 of the License, or<br />
#  (at your option) any later version.<br />
<br />
[Unit]<br />
Description=udev Kernel Device Manager<br />
Documentation=man:systemd-udevd.service(8) man:udev(7)<br />
DefaultDependencies=no<br />
Wants=systemd-udevd-control.socket systemd-udevd-kernel.socket<br />
After=systemd-udevd-control.socket systemd-udevd-kernel.socket systemd-sysusers.service<br />
Before=sysinit.target<br />
ConditionPathIsReadWrite=/sys<br />
<br />
[Service]<br />
Type=notify<br />
OOMScoreAdjust=-1000<br />
Sockets=systemd-udevd-control.socket systemd-udevd-kernel.socket<br />
Restart=always<br />
RestartSec=0<br />
ExecStart=/lib/systemd/systemd-udevd<br />
KillMode=mixed<br />
WatchdogSec=3min<br />
TasksMax=infinity<br />
MountFlags=shared<br />
MemoryDenyWriteExecute=yes<br />
RestrictRealtime=yes<br />
RestrictAddressFamilies=AF_UNIX AF_NETLINK AF_INET AF_INET6</code></div></div><br />
puis rebooter<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Configuration du réseau</span></span><br />
<br />
La configuration réseau sera effectuée par le biais de systemd-networkd par DHCP.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Passer de Network Manager à Systemd-Networkd</span><br />
<br />
Il est relativement simple de passer de Network Manager à systemd-networkd (et vice versa). <br />
Tout d'abord, désactivez le service network-manager et activez systemd-networkd comme suit :<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>systemctl disable network-manager<br />
systemctl enable systemd-networkd<br />
systemctl start systemd-networkd</code></div></div><br />
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. <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>systemctl enable systemd-resolved <br />
systemctl start systemd-resolved</code></div></div><br />
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. <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>rm /etc/resolv.conf<br />
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf<br />
systemctl restart systemd-resolved<br />
systemctl restart systemd-networkd</code></div></div><br />
Dans /etc/dhcpcd.conf, on change :<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code># Use the hardware address of the interface for the Client ID.<br />
clientid<br />
# or<br />
# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as per RFC4361.<br />
#duid</code></div></div><br />
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<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Configuration du serveur de son PulseAudio</span><br />
<br />
On ajoute si il n'y est pas déjà le fichier /etc/asound.conf :<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>pcm.!default {<br />
        type hw<br />
        card 0<br />
        device 0<br />
}<br />
<br />
ctl.!default {<br />
        type hw<br />
        card 0<br />
        device 0<br />
}</code></div></div><br />
Afin de démarrer pulseaudio en tant que système via systemd, créer le fichier /etc/systemd/system/pulseaudio.service<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>[Unit]<br />
Description=PulseAudio daemon<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
<br />
[Service]<br />
Type=simple<br />
PrivateTmp=true<br />
ExecStart=/usr/bin/pulseaudio --system --realtime --disallow-exit --no-cpu-limit</code></div></div><br />
pour autoriser les flux audio en réseau pour pulseaudio, on rajoute à la fin du fichier /etc/pulse/system.pa  : <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>load-module module-native-protocol-tcp auth-ip-acl=192.168.0.0/16;127.0.0.1<br />
load-module module-zeroconf-publish</code></div></div><br />
et dans la section réseau de /etc/pulse/default.pa : <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>### Network access (may be configured with paprefs, so leave this commented<br />
### here if you plan to use paprefs)<br />
#load-module module-esound-protocol-tcp<br />
load-module module-native-protocol-tcp auth-ip-acl=192.168.0.0/16;127.0.0.1<br />
#load-module module-native-protocol-tcp<br />
#load-module module-zeroconf-publish</code></div></div><br />
Lancer manuellement pulseaudio pour vérifier qu'il n'y a pas d'erreurs :<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>systemctl start pulseaudio.service<br />
systemctl status pulseaudio.service</code></div></div><br />
et pour le faire se lancer au démarrage :<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>systemctl enable pulseaudio.service</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Connexion au serveur par LDM</span><br />
<br />
Créer le service  /etc/systemd/system/ldm-primtux3-connect.service. On lance le script après l'établissement du réseau.  :<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>[Unit]<br />
Description=ldm-primtux3-connection<br />
After=network-online.target<br />
Wants=network-online.target <br />
<br />
[Service]<br />
Type=simple<br />
ExecStart=/root/primtux_client.sh<br />
<br />
[Install]<br />
WantedBy = multi-user.target</code></div></div><br />
Le script /root/primtux_client.sh qui est lancé : <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>#!/bin/sh<br />
<br />
# Préparer le server X (affichage)<br />
/usr/bin/Xorg &amp;<br />
export DISPLAY=:0<br />
<br />
# attendre que X se lance<br />
/bin/sleep 5<br />
<br />
# Variables pour LDM<br />
<br />
export LDM_XSESSION=startfluxbox<br />
export LDM_SSHOPTIONS="-o StrictHostKeyChecking=no -o CheckHostIP=no"<br />
export LDM_SERVER=192.168.2.4<br />
<br />
# Lancer LDM qui redémarre automatiquement si il est stoppé<br />
while true<br />
do<br />
  /usr/sbin/ldm<br />
done</code></div></div><br />
Rendre le script executable : <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>chmod +x /root/primtux_client.sh</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Clonage de la carte SD du Raspberry</span><br />
<br />
Voir ce tuto : <a href="http://www.framboise314.fr/clonez-la-carte-sd-de-votre-raspberry-pi/" target="_blank" rel="noopener" class="mycode_url">http://www.framboise314.fr/clonez-la-car...pberry-pi/</a>. 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.<br />
<br />
<hr class="mycode_hr" />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">Le serveur headless debian stretch</span></span><span style="font-size: small;" class="mycode_size"> (headless : sans interface graphique)</span><br />
(Je n'explique pas tout ici pour le serveur)<br />
<br />
<span style="font-style: italic;" class="mycode_i"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Sur le serveur, les commandes qui suivent sont à exécuter en tant que root.</span></span></span><br />
<br />
Le serveur est installé sur 2 disques durs de 1 TO chacun avec 2 cartes réseau.<br />
Les disques sont partitionnés avec raid 1 logiciel et lvm.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Configuration du réseau</span><br />
<br />
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.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Passer de Network Manager à Systemd-Networkd</span><br />
Il est relativement simple de passer de Network Manager à systemd-networkd (et vice versa). <br />
Tout d'abord, désactivez le service network-manager et activez systemd-networkd comme suit. <br />
*<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>systemctl disable network-manager<br />
systemctl enable systemd-networkd<br />
systemctl start systemd-networkd</code></div></div><br />
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.<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>systemctl enable systemd-resolved <br />
systemctl start systemd-resolved</code></div></div><br />
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. <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>rm /etc/resolv.conf<br />
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Configurer les connexions réseau avec systemd-networkd </span><br />
<br />
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. <br />
Commençons par créer un dossier /etc/systemd/network. <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>mkdir /etc/systemd/network</code></div></div><br />
Lister les noms des interfaces réseau ( Predictable Network Interface Names ) avec la commande ip link :<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>ip link</code></div></div><div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default<br />
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00<br />
2: enp2s0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000<br />
    link/ether 40:8d:5c:6f:c4:1d brd ff:ff:ff:ff:ff:ff<br />
3: enp4s1: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast master br0 state UP mode DEFAULT group default qlen 1000<br />
    link/ether 3c:8c:f8:21:06:d7 brd ff:ff:ff:ff:ff:ff</code></div></div><br />
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.<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>nano /etc/systemd/network/enp2s0.network</code></div></div><div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>[Match]<br />
Name=enp2s0<br />
[Network]<br />
DHCP=v4</code></div></div><br />
La seconde carte réseau sera attribuée au sous-réseau ltsp via un pont (bridge) br0 :<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>nano /etc/systemd/network/enp4s1.network</code></div></div><div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>[Match]<br />
Name=enp4s1<br />
<br />
[Network]<br />
Bridge=br0</code></div></div><br />
Création du pont br0 : <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>nano /etc/systemd/network/bro.netdev</code></div></div><div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>[NetDev]<br />
Name=br0<br />
Kind=bridge</code></div></div><br />
Le pont br0 est configuré en DHCP<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>nano /etc/systemd/network/bro.network</code></div></div><div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>[Match]<br />
Name=br0<br />
<br />
[Network]<br />
DHCP=v4</code></div></div><div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>systemctl restart systemd-networkd</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">Création du conteneur primtux3</span></span><br />
<br />
<br />
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.<br />
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: <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>sudo mkdir primtux3_vm</code></div></div><br />
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 :<br />
Créer d’abord le fichier d’exclusion. <br />
<br />
Le fichier <span style="font-style: italic;" class="mycode_i">exclud.lst</span> : <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>/tmp<br />
/mnt<br />
/etc/fstab</code></div></div><br />
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) :<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>sudo rsync -ravHz --exclude-from=exclud.lst -e "ssh -p 222" / user@192.168.X.X:~/primtux3_vm/</code></div></div><br />
Ensuite sur le serveur, copier le répertoire /home/user/primtux3_vm en le renommant vers /var/lib/machines/ : <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>cp -a /home/user/primtux3_vm /var/lib/machines/primtux3</code></div></div><br />
Changer le propriétaire du répertoire nouvellement créé pour root : <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>sudo ls -l /var/lib/machines/primtux3<br />
sudo chown -R root : /var/lib/machines/primtux3</code></div></div><br />
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 :<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>nano /etc/systemd/system/primtux3.service</code></div></div><div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>[Unit]<br />
Description=Container primtux3<br />
<br />
[Service]<br />
ExecStart=/usr/bin/systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest --directory=/var/lib/machines/primtux3 --network-bridge=br0<br />
ExecStartPost =/bin/bash -c "chown -R root: /var/lib/machines/primtux3"<br />
ExecStartPost =/bin/bash -c "chmod u+s /var/lib/machines/primtux3/usr/bin/sudo"<br />
ExecStartPost =/bin/bash -c "chown -R 1000:1000 /var/lib/machines/primtux3/home/administrateur/"<br />
ExecStartPost =/bin/bash -c "chown -R 1001:1001 /var/lib/machines/primtux3/home/01-mini/"<br />
ExecStartPost =/bin/bash -c "chown -R 1002:1002 /var/lib/machines/primtux3/home/02-super/"<br />
ExecStartPost =/bin/bash -c "chown -R 1003:1003 /var/lib/machines/primtux3/home/03-maxi/"<br />
<br />
KillMode=mixed<br />
Type=notify<br />
RestartForceExitStatus=133<br />
SuccessExitStatus=133<br />
<br />
[Install]<br />
WantedBy=multi-user.target</code></div></div><br />
Pour le lancer au démarrage du système via systemd-nspawn, il faut l'activer ainsi : <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>systemctl enable primtux3.service</code></div></div><br />
et pour le lancer manuellement : <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>systemctl start primtux3.service</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">Configuration du son coté serveur</span></span><br />
<br />
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.<br />
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<br />
PULSE_SERVER=&#36;LTSP_CLIENT<br />
export PULSE_SERVER <br />
et aussi pendant qu’on y est<br />
export LANG=fr_FR.UTF-8 <br />
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 :<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>#!/bin/sh<br />
#<br />
# fluxbox startup-script:<br />
#<br />
# Lines starting with a '#' are ignored.<br />
<br />
# Change your keymap:<br />
xmodmap "/home/primtux/.Xmodmap"<br />
<br />
# Applications you want to run with fluxbox.<br />
# MAKE SURE THAT APPS THAT KEEP RUNNING HAVE AN ''&amp;'' AT THE END.<br />
#<br />
PULSE_SERVER=&#36;LTSP_CLIENT<br />
export PULSE_SERVER<br />
export LANG=fr_FR.UTF-8<br />
# idesk &amp;<br />
#<br />
# Debian-local change:<br />
#   - fbautostart has been added with a quick hack to check to see if it<br />
#     exists. If it does, we'll start it up by default.<br />
which fbautostart &gt; /dev/null<br />
if [ &#36;? -eq 0 ]; then<br />
    fbautostart<br />
fi<br />
<br />
# And last but not least we start fluxbox.<br />
# Because it is the last app you have to run it with ''exec'' before it.<br />
exec /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 &amp;<br />
exec xfce4-panel &amp;<br />
exec lxpanel &amp;<br />
exec rox -p 1 &amp;<br />
# exec /usr/bin/BNE-Linux &amp;<br />
# exec /usr/local/bin/primtux/handymenu-mini &amp;<br />
# exec /usr/local/bin/primtux/handymenu-super &amp;<br />
# exec /usr/local/bin/primtux/handymenu-maxi &amp;<br />
exec /usr/local/bin/primtux/accueil &amp;<br />
# exec xscreensaver -nosplash &amp;<br />
exec fluxbox<br />
# or if you want to keep a log:<br />
# exec fluxbox -log "/home/primtux/.fluxbox/log"</code></div></div>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) : <br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;<br />
&lt;!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"&gt;<br />
&lt;!--Generated with glade3 3.4.1 on Sat Feb 16 01:52:03 2008 --&gt;<br />
&lt;glade-interface&gt;<br />
  &lt;widget class="GtkWindow" id="ShutdownBox"&gt;<br />
    &lt;property name="width_request"&gt;350&lt;/property&gt;<br />
    &lt;property name="height_request"&gt;310&lt;/property&gt;<br />
    &lt;property name="events"&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;<br />
    &lt;property name="title" translatable="yes"&gt;PrimTux Shutdown Menu&lt;/property&gt;<br />
    &lt;property name="resizable"&gt;False&lt;/property&gt;<br />
    &lt;property name="modal"&gt;True&lt;/property&gt;<br />
    &lt;property name="window_position"&gt;GTK_WIN_POS_CENTER&lt;/property&gt;<br />
    &lt;property name="icon"&gt;help-browser.png&lt;/property&gt;<br />
    &lt;property name="skip_taskbar_hint"&gt;True&lt;/property&gt;<br />
    &lt;property name="skip_pager_hint"&gt;True&lt;/property&gt;<br />
    &lt;property name="urgency_hint"&gt;True&lt;/property&gt;<br />
    &lt;property name="deletable"&gt;False&lt;/property&gt;<br />
    &lt;property name="opacity"&gt;0&lt;/property&gt;<br />
    &lt;child&gt;<br />
      &lt;widget class="GtkLayout" id="layout1"&gt;<br />
        &lt;property name="visible"&gt;True&lt;/property&gt;<br />
        &lt;property name="events"&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;<br />
        &lt;child&gt;<br />
          &lt;widget class="GtkButton" id="LogoutButton"&gt;<br />
            &lt;property name="width_request"&gt;210&lt;/property&gt;<br />
            &lt;property name="height_request"&gt;52&lt;/property&gt;<br />
            &lt;property name="visible"&gt;True&lt;/property&gt;<br />
            &lt;property name="can_focus"&gt;True&lt;/property&gt;<br />
            &lt;property name="receives_default"&gt;True&lt;/property&gt;<br />
            &lt;property name="events"&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;<br />
            &lt;property name="label" translatable="yes"&gt;_Fermer la session&lt;/property&gt;<br />
            &lt;property name="use_underline"&gt;True&lt;/property&gt;<br />
            &lt;property name="response_id"&gt;0&lt;/property&gt;<br />
            &lt;signal name="clicked" handler="on_LogoutButton_clicked"/&gt;<br />
          &lt;/widget&gt;<br />
          &lt;packing&gt;<br />
            &lt;property name="x"&gt;36&lt;/property&gt;<br />
            &lt;property name="y"&gt;86&lt;/property&gt;<br />
          &lt;/packing&gt;<br />
        &lt;/child&gt;<br />
        &lt;child&gt;<br />
          &lt;widget class="GtkImage" id="image3"&gt;<br />
            &lt;property name="width_request"&gt;62&lt;/property&gt;<br />
            &lt;property name="height_request"&gt;47&lt;/property&gt;<br />
            &lt;property name="visible"&gt;True&lt;/property&gt;<br />
            &lt;property name="events"&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;<br />
            &lt;property name="stock"&gt;gtk-stop&lt;/property&gt;<br />
          &lt;/widget&gt;<br />
          &lt;packing&gt;<br />
            &lt;property name="x"&gt;41&lt;/property&gt;<br />
            &lt;property name="y"&gt;91&lt;/property&gt;<br />
          &lt;/packing&gt;<br />
        &lt;/child&gt;<br />
        &lt;child&gt;<br />
          &lt;widget class="GtkButton" id="CancelButton"&gt;<br />
            &lt;property name="width_request"&gt;210&lt;/property&gt;<br />
            &lt;property name="height_request"&gt;52&lt;/property&gt;<br />
            &lt;property name="visible"&gt;True&lt;/property&gt;<br />
            &lt;property name="can_focus"&gt;True&lt;/property&gt;<br />
            &lt;property name="receives_default"&gt;True&lt;/property&gt;<br />
            &lt;property name="events"&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;<br />
            &lt;property name="label" translatable="yes"&gt;_Annuler&lt;/property&gt;<br />
            &lt;property name="use_underline"&gt;True&lt;/property&gt;<br />
            &lt;property name="response_id"&gt;0&lt;/property&gt;<br />
            &lt;signal name="clicked" handler="on_CancelButton_clicked"/&gt;<br />
          &lt;/widget&gt;<br />
          &lt;packing&gt;<br />
            &lt;property name="x"&gt;37&lt;/property&gt;<br />
            &lt;property name="y"&gt;168&lt;/property&gt;<br />
          &lt;/packing&gt;<br />
        &lt;/child&gt;<br />
        &lt;child&gt;<br />
          &lt;widget class="GtkImage" id="image4"&gt;<br />
            &lt;property name="width_request"&gt;50&lt;/property&gt;<br />
            &lt;property name="height_request"&gt;44&lt;/property&gt;<br />
            &lt;property name="visible"&gt;True&lt;/property&gt;<br />
            &lt;property name="events"&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;<br />
            &lt;property name="stock"&gt;gtk-undo&lt;/property&gt;<br />
          &lt;/widget&gt;<br />
          &lt;packing&gt;<br />
            &lt;property name="x"&gt;46&lt;/property&gt;<br />
            &lt;property name="y"&gt;168&lt;/property&gt;<br />
          &lt;/packing&gt;<br />
        &lt;/child&gt;<br />
        &lt;child&gt;<br />
          &lt;widget class="GtkImage" id="image5"&gt;<br />
          &lt;property name="width_request"&gt;67&lt;/property&gt;<br />
            &lt;property name="height_request"&gt;285&lt;/property&gt;<br />
            &lt;property name="visible"&gt;True&lt;/property&gt;<br />
            &lt;property name="events"&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;<br />
            &lt;property name="pixbuf"&gt;logo.png&lt;/property&gt;<br />
            &lt;property name="icon_size"&gt;2&lt;/property&gt;<br />
          &lt;/widget&gt;<br />
          &lt;packing&gt;<br />
            &lt;property name="x"&gt;261&lt;/property&gt;<br />
            &lt;property name="y"&gt;14&lt;/property&gt;<br />
          &lt;/packing&gt;<br />
        &lt;/child&gt;<br />
        &lt;child&gt;<br />
          &lt;widget class="GtkHSeparator" id="hseparator1"&gt;<br />
            &lt;property name="width_request"&gt;207&lt;/property&gt;<br />
            &lt;property name="height_request"&gt;20&lt;/property&gt;<br />
            &lt;property name="visible"&gt;True&lt;/property&gt;<br />
            &lt;property name="events"&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;<br />
          &lt;/widget&gt;<br />
          &lt;packing&gt;<br />
            &lt;property name="x"&gt;38&lt;/property&gt;<br />
            &lt;property name="y"&gt;145&lt;/property&gt;<br />
          &lt;/packing&gt;<br />
        &lt;/child&gt;<br />
      &lt;/widget&gt;<br />
    &lt;/child&gt;<br />
  &lt;/widget&gt;<br />
&lt;/glade-interface&gt;</code></div></div>J’ai ensuite copier chaque compte, en les renommant pour simplifier, autant de fois qu’il y a de raspberry : <br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>cp -a /home/01-mini mini1</code></div></div>De même pour super et maxi.<br />
Démarrer le container, se loguer dedans avec <br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>machinectl login primtux3</code></div></div>créer les utilisateurs correspondants avec adduser et changer les propriétaires des homes pour les utilisateurs nouvellement créés. <br />
Vérifier dans /etc/passwd, changer le shell si nécessaire pour /bin/bash car ssh en a besoin.<br />
Pour sortir du container, taper rapidement 3 fois ] en maintenant la touche control + Alt Gr enfoncée (^]]])<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">Serveur DHCP</span></span><br />
<br />
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).<br />
Configuration du serveur isc-dhcp-server. On installe le paquet isc-dhcp-server : <br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>apt-get install isc-dhcp-server</code></div></div>Ecrire le fichier /etc/dhcp/dhcpd.conf : <br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>#<br />
# Default LTSP dhcpd.conf config file.<br />
#<br />
<br />
authoritative;                                     <br />
<br />
subnet 192.168.xx.0 netmask 255.255.255.0 {<br />
    range 192.168.xx.10 192.168.xx.50;            # Plage d'adresse desservie par le serveur DHCP du serveur LTSP<br />
    option domain-name "aaaa.bbbbb.ccc";    # nom DNS du réseau pédagogique<br />
    option domain-name-servers 192.168.xx.xx;         # adresse IP du serveur DNS <br />
    option broadcast-address 192.168.xx.255;}<br />
        host rasp1 {<br />
        hardware ethernet B8:27:EB:XX:XX:XX;<br />
        fixed-address 192.168.xx.xx;<br />
        }       <br />
<br />
        host rasp2 { <br />
        hardware ethernet B8:27:EB:XX:XX:XX;<br />
        fixed-address 192.168.xx.xx;<br />
        }<br />
<br />
        host rasp3 {<br />
        hardware ethernet B8:27:EB:XX:XX:XX;<br />
        fixed-address 192.168.xx.xx;<br />
        }       <br />
<br />
        host rasp4 {<br />
        hardware ethernet B8:27:EB:XX:XX:XX;<br />
        fixed-address 192.168.xx.xx;<br />
        }</code></div></div><br />
Voilà !<br />
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.<br />
<br />
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.<br />
<br />
Je l’ai aussi testé sur un odroid-c2 avec une armbian 64 stretch. <br />
To be continued ...<br />
<br />
Sources : <br />
<a href="https://www.freedesktop.org/software/systemd/man/systemd-nspawn.html" target="_blank" rel="noopener" class="mycode_url">https://www.freedesktop.org/software/sys...spawn.html</a><br />
<a href="http://www.olafdietsche.de/2016/06/25/network-systemd-nspawn-container" target="_blank" rel="noopener" class="mycode_url">http://www.olafdietsche.de/2016/06/25/ne...-container</a><br />
<a href="https://wiki.archlinux.org/index.php/systemd-networkd" target="_blank" rel="noopener" class="mycode_url">https://wiki.archlinux.org/index.php/systemd-networkd</a><br />
<a href="https://lindenberg.io/blog/post/debian-containers-with-systemd-nspawn/" target="_blank" rel="noopener" class="mycode_url">https://lindenberg.io/blog/post/debian-c...md-nspawn/</a><br />
<a href="http://xmodulo.com/switch-from-networkmanager-to-systemd-networkd.html" target="_blank" rel="noopener" class="mycode_url">http://xmodulo.com/switch-from-networkma...workd.html</a><br />
<a href="https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/" target="_blank" rel="noopener" class="mycode_url">https://www.freedesktop.org/wiki/Softwar...orkTarget/</a><br />
<a href="https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/" target="_blank" rel="noopener" class="mycode_url">https://www.freedesktop.org/wiki/Softwar...faceNames/</a>]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;" class="mycode_b"><span style="font-size: x-large;" class="mycode_size">Linux Terminal Server Project (LTSP]</span></span><br />
<br />
En 2015, à l’occasion d’une discussion avec notre directrice d’école, il s’est<br />
avéré que l’état du parc informatique dans sa classe de petite et moyenne sections était bien en<br />
dessous de ses besoins. Ceux-ci sont de quatres postes au plus. Considérant le coût important<br />
que peut représenter l’achat de postes informatiques complets (environ 2900 € pour 4 postes),<br />
c’est vers une architecture client-serveur, qui rempli adéquatement les conditions d’économie de<br />
place et de coûts, que mon choix se portera. Le rôle de clients sera attribué aux Raspberry Pi, des<br />
nano-ordinateurs mono-carte de faible coût et peu gourmands en énergie électrique. Le serveur,<br />
qui sera aussi serveur de sauvegardes pour la mairie, fera tourner une distribution éducative. La<br />
machine sera un ordinateur de bureau de bonne facture avec un bon processeur et suffisamment<br />
d’espace disque et de mémoire. L’ensemble fonctionnera sous des systèmes d’exploitation GNU-<br />
Linux. Le choix de Linux s’explique par l’absence de coût d’installation logicielle (pas licences à<br />
payer) et par la fiabilité (peu ou prou de virus) et la stabilité du système, donc de sa maintenance<br />
(très peu de redémarrage des serveurs, etc).<br />
<br />
<br />
À la recherche d’informations concernant un système clients-serveur à base de Raspberry, je<br />
découvre le projet Linux Terminal Server Project (LTSP)[LTSP]. Celui-ci, grace à debootstrap,<br />
permet de construire un système complet dans un répertoire donné et la commande chroot<br />
permet « d’entrer » dans ce nouveau système. <br />
Dans un premier temp, j’étais convaincu que ce système correspondrait en tout point à mon<br />
projet : LTSP permet en effet de mettre en place assez facilement et rapidement un système<br />
client-serveur linux en recyclant comme clients des machines de faibles puissances ou obsolètes en<br />
regard de la demande croissante en ressources des systèmes actuels. De plus, LTSP est largement<br />
plébicité dans le domaine de l’informatique pédagogique et il existe de nombreux exemples où<br />
il est couplé avec le Raspberry.<br />
Mais dans les faits, l’installation d’un système racine via LTSP est assez longue, et hasar-<br />
deuse si la connexion internet est de qualité moyenne : à la moindre coupure inetrnet, il faut<br />
recommencer toute l’installation du système chrooté.<br />
Nous avons finalement constaté que LTSP n’était qu’une collection de scripts, une sorte<br />
de front-end, utilisant en arrière-plan des outils déjà existants de base sous Linux, conçu pour<br />
faciliter l’installation du système par des utilisateurs n’ayant pas de grandes connaissances en<br />
informatique et pour correspondre à une plage de systèmes assez large.<br />
Il est également clair que LTSP n’est pas fait pour une virtualisation totale car les scripts<br />
ne prennent leur configuration qu’installés en dur dans le système hôte.<br />
LTSP est prévu en fait pour être installé directement sur la machine hôte, comme système<br />
dédié.<br />
Or, pour des questions de sécurité évidentes, car le serveur sera aussi utilisé comme serveur<br />
de sauvegardes pour la mairie, il n’est pas question de mélanger les activités scolaires et les<br />
activités administratives de la mairie dans un même environnement.<br />
Ainsi, devant le manque de documentation et le fait qu’en utilisant les outils sous-jacents<br />
déjà complètement documentés, nous obtiendrions un résultat semblable, nous avons abandonné<br />
LTSP pour ne garder de lui que son gestionnaire de connexion LTSP Display Manager (LDM)<br />
sur les Raspberry.<br />
[h] Les outils de base Unix/GNU/Linux[/h]<br />
En décorticant LTSP, nous avons constaté que :<br />
— l’installation du système chrooté peut se faire sans LTSP, directement avec les outils de<br />
base debootstrap et chroot<br />
— le principe de communication entre les serveur LTSP et les clients est basé sur SSH 2 .<br />
— Nous avons utilisé et configuré le protocole SSH pour la communication entre les Rasp-<br />
berry et le serveur. C’est par SSH, que sont transmises les actions du clavier et de la<br />
souris et par lui encore qu’arrivent les images à l’écran.<br />
Le son est géré à part par le serveur de son Pulseaudio.<br />
<br />
<hr class="mycode_hr" />
<br />
<div style="text-align: left;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">La partie logicielle</span></span></div>
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">Présentation du système</span></span><br />
<br />
De fait, lors des tests sur les Raspberry avec Raspbian Jessie installée, nous avons pu constaté<br />
l’évolution de SytemVInit vers systemd. Par la suite, j’ai abandonné le principe de chroot pour<br />
celui de conteneur par systemd-nspawn, beaucoup plus simple à mettre en place et à contrôler.<br />
Primtux tournera donc dans un conteneur systemd-nspawn, l’évolution du chroot utilisé dans<br />
LTSP.<br />
<span style="font-style: italic;" class="mycode_i">Ceci est valable pour primtux 3 amd64 legacy et raspberry sous raspbian stretch lite avec systemd.</span><br />
<span style="font-style: italic;" class="mycode_i">Toutes les commandes sont effectuées en tant qu'administrateur root</span><br />
<br />
<hr class="mycode_hr" />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Les clients raspberry</span></span><br />
<br />
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 -&gt; Network options -&gt; N3 Network interface names. Ref. :  <a href="https://www.raspberrypi.org/forums/viewtopic.php?t=191252" target="_blank" rel="noopener" class="mycode_url">https://www.raspberrypi.org/forums/viewt...p?t=191252</a><br />
<br />
Ensuite on force l'adresse MAC  de la carte réseau dans /boot/cmdline.txt en rajoutant à la fin : <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>smsc95xx.macaddr=B8:27:EB:XX:XX:XX</code></div></div><br />
(juste changer les 3 derniers couples de valeurs)<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Activation du serveur ssh</span><br />
Créer un fichier texte vide nommé ssh dans le répertoire /boot<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Installer les paquets nécessaires au son et LDM</span><br />
<br />
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)<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>apt-get update &amp;&amp; apt-get upgrade &amp;&amp; apt-get install xserver-xorg pulseaudio pulseaudio-module-zeroconf alsa-base ldm fuse ntfs-3g</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Activation du montage des périphériques de stockages USB</span><br />
<br />
Remplacer la ligne MountFlags=slave par MountFlags=shared dans /lib/systemd/system/systemd-udevd.service<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>#  This file is part of systemd.<br />
#<br />
#  systemd is free software; you can redistribute it and/or modify it<br />
#  under the terms of the GNU Lesser General Public License as published by<br />
#  the Free Software Foundation; either version 2.1 of the License, or<br />
#  (at your option) any later version.<br />
<br />
[Unit]<br />
Description=udev Kernel Device Manager<br />
Documentation=man:systemd-udevd.service(8) man:udev(7)<br />
DefaultDependencies=no<br />
Wants=systemd-udevd-control.socket systemd-udevd-kernel.socket<br />
After=systemd-udevd-control.socket systemd-udevd-kernel.socket systemd-sysusers.service<br />
Before=sysinit.target<br />
ConditionPathIsReadWrite=/sys<br />
<br />
[Service]<br />
Type=notify<br />
OOMScoreAdjust=-1000<br />
Sockets=systemd-udevd-control.socket systemd-udevd-kernel.socket<br />
Restart=always<br />
RestartSec=0<br />
ExecStart=/lib/systemd/systemd-udevd<br />
KillMode=mixed<br />
WatchdogSec=3min<br />
TasksMax=infinity<br />
MountFlags=shared<br />
MemoryDenyWriteExecute=yes<br />
RestrictRealtime=yes<br />
RestrictAddressFamilies=AF_UNIX AF_NETLINK AF_INET AF_INET6</code></div></div><br />
puis rebooter<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Configuration du réseau</span></span><br />
<br />
La configuration réseau sera effectuée par le biais de systemd-networkd par DHCP.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Passer de Network Manager à Systemd-Networkd</span><br />
<br />
Il est relativement simple de passer de Network Manager à systemd-networkd (et vice versa). <br />
Tout d'abord, désactivez le service network-manager et activez systemd-networkd comme suit :<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>systemctl disable network-manager<br />
systemctl enable systemd-networkd<br />
systemctl start systemd-networkd</code></div></div><br />
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. <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>systemctl enable systemd-resolved <br />
systemctl start systemd-resolved</code></div></div><br />
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. <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>rm /etc/resolv.conf<br />
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf<br />
systemctl restart systemd-resolved<br />
systemctl restart systemd-networkd</code></div></div><br />
Dans /etc/dhcpcd.conf, on change :<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code># Use the hardware address of the interface for the Client ID.<br />
clientid<br />
# or<br />
# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as per RFC4361.<br />
#duid</code></div></div><br />
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<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Configuration du serveur de son PulseAudio</span><br />
<br />
On ajoute si il n'y est pas déjà le fichier /etc/asound.conf :<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>pcm.!default {<br />
        type hw<br />
        card 0<br />
        device 0<br />
}<br />
<br />
ctl.!default {<br />
        type hw<br />
        card 0<br />
        device 0<br />
}</code></div></div><br />
Afin de démarrer pulseaudio en tant que système via systemd, créer le fichier /etc/systemd/system/pulseaudio.service<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>[Unit]<br />
Description=PulseAudio daemon<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
<br />
[Service]<br />
Type=simple<br />
PrivateTmp=true<br />
ExecStart=/usr/bin/pulseaudio --system --realtime --disallow-exit --no-cpu-limit</code></div></div><br />
pour autoriser les flux audio en réseau pour pulseaudio, on rajoute à la fin du fichier /etc/pulse/system.pa  : <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>load-module module-native-protocol-tcp auth-ip-acl=192.168.0.0/16;127.0.0.1<br />
load-module module-zeroconf-publish</code></div></div><br />
et dans la section réseau de /etc/pulse/default.pa : <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>### Network access (may be configured with paprefs, so leave this commented<br />
### here if you plan to use paprefs)<br />
#load-module module-esound-protocol-tcp<br />
load-module module-native-protocol-tcp auth-ip-acl=192.168.0.0/16;127.0.0.1<br />
#load-module module-native-protocol-tcp<br />
#load-module module-zeroconf-publish</code></div></div><br />
Lancer manuellement pulseaudio pour vérifier qu'il n'y a pas d'erreurs :<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>systemctl start pulseaudio.service<br />
systemctl status pulseaudio.service</code></div></div><br />
et pour le faire se lancer au démarrage :<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>systemctl enable pulseaudio.service</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Connexion au serveur par LDM</span><br />
<br />
Créer le service  /etc/systemd/system/ldm-primtux3-connect.service. On lance le script après l'établissement du réseau.  :<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>[Unit]<br />
Description=ldm-primtux3-connection<br />
After=network-online.target<br />
Wants=network-online.target <br />
<br />
[Service]<br />
Type=simple<br />
ExecStart=/root/primtux_client.sh<br />
<br />
[Install]<br />
WantedBy = multi-user.target</code></div></div><br />
Le script /root/primtux_client.sh qui est lancé : <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>#!/bin/sh<br />
<br />
# Préparer le server X (affichage)<br />
/usr/bin/Xorg &amp;<br />
export DISPLAY=:0<br />
<br />
# attendre que X se lance<br />
/bin/sleep 5<br />
<br />
# Variables pour LDM<br />
<br />
export LDM_XSESSION=startfluxbox<br />
export LDM_SSHOPTIONS="-o StrictHostKeyChecking=no -o CheckHostIP=no"<br />
export LDM_SERVER=192.168.2.4<br />
<br />
# Lancer LDM qui redémarre automatiquement si il est stoppé<br />
while true<br />
do<br />
  /usr/sbin/ldm<br />
done</code></div></div><br />
Rendre le script executable : <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>chmod +x /root/primtux_client.sh</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Clonage de la carte SD du Raspberry</span><br />
<br />
Voir ce tuto : <a href="http://www.framboise314.fr/clonez-la-carte-sd-de-votre-raspberry-pi/" target="_blank" rel="noopener" class="mycode_url">http://www.framboise314.fr/clonez-la-car...pberry-pi/</a>. 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.<br />
<br />
<hr class="mycode_hr" />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">Le serveur headless debian stretch</span></span><span style="font-size: small;" class="mycode_size"> (headless : sans interface graphique)</span><br />
(Je n'explique pas tout ici pour le serveur)<br />
<br />
<span style="font-style: italic;" class="mycode_i"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Sur le serveur, les commandes qui suivent sont à exécuter en tant que root.</span></span></span><br />
<br />
Le serveur est installé sur 2 disques durs de 1 TO chacun avec 2 cartes réseau.<br />
Les disques sont partitionnés avec raid 1 logiciel et lvm.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Configuration du réseau</span><br />
<br />
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.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Passer de Network Manager à Systemd-Networkd</span><br />
Il est relativement simple de passer de Network Manager à systemd-networkd (et vice versa). <br />
Tout d'abord, désactivez le service network-manager et activez systemd-networkd comme suit. <br />
*<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>systemctl disable network-manager<br />
systemctl enable systemd-networkd<br />
systemctl start systemd-networkd</code></div></div><br />
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.<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>systemctl enable systemd-resolved <br />
systemctl start systemd-resolved</code></div></div><br />
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. <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>rm /etc/resolv.conf<br />
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Configurer les connexions réseau avec systemd-networkd </span><br />
<br />
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. <br />
Commençons par créer un dossier /etc/systemd/network. <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>mkdir /etc/systemd/network</code></div></div><br />
Lister les noms des interfaces réseau ( Predictable Network Interface Names ) avec la commande ip link :<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>ip link</code></div></div><div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default<br />
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00<br />
2: enp2s0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000<br />
    link/ether 40:8d:5c:6f:c4:1d brd ff:ff:ff:ff:ff:ff<br />
3: enp4s1: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast master br0 state UP mode DEFAULT group default qlen 1000<br />
    link/ether 3c:8c:f8:21:06:d7 brd ff:ff:ff:ff:ff:ff</code></div></div><br />
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.<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>nano /etc/systemd/network/enp2s0.network</code></div></div><div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>[Match]<br />
Name=enp2s0<br />
[Network]<br />
DHCP=v4</code></div></div><br />
La seconde carte réseau sera attribuée au sous-réseau ltsp via un pont (bridge) br0 :<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>nano /etc/systemd/network/enp4s1.network</code></div></div><div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>[Match]<br />
Name=enp4s1<br />
<br />
[Network]<br />
Bridge=br0</code></div></div><br />
Création du pont br0 : <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>nano /etc/systemd/network/bro.netdev</code></div></div><div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>[NetDev]<br />
Name=br0<br />
Kind=bridge</code></div></div><br />
Le pont br0 est configuré en DHCP<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>nano /etc/systemd/network/bro.network</code></div></div><div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>[Match]<br />
Name=br0<br />
<br />
[Network]<br />
DHCP=v4</code></div></div><div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>systemctl restart systemd-networkd</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">Création du conteneur primtux3</span></span><br />
<br />
<br />
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.<br />
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: <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>sudo mkdir primtux3_vm</code></div></div><br />
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 :<br />
Créer d’abord le fichier d’exclusion. <br />
<br />
Le fichier <span style="font-style: italic;" class="mycode_i">exclud.lst</span> : <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>/tmp<br />
/mnt<br />
/etc/fstab</code></div></div><br />
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) :<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>sudo rsync -ravHz --exclude-from=exclud.lst -e "ssh -p 222" / user@192.168.X.X:~/primtux3_vm/</code></div></div><br />
Ensuite sur le serveur, copier le répertoire /home/user/primtux3_vm en le renommant vers /var/lib/machines/ : <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>cp -a /home/user/primtux3_vm /var/lib/machines/primtux3</code></div></div><br />
Changer le propriétaire du répertoire nouvellement créé pour root : <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>sudo ls -l /var/lib/machines/primtux3<br />
sudo chown -R root : /var/lib/machines/primtux3</code></div></div><br />
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 :<br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>nano /etc/systemd/system/primtux3.service</code></div></div><div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>[Unit]<br />
Description=Container primtux3<br />
<br />
[Service]<br />
ExecStart=/usr/bin/systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest --directory=/var/lib/machines/primtux3 --network-bridge=br0<br />
ExecStartPost =/bin/bash -c "chown -R root: /var/lib/machines/primtux3"<br />
ExecStartPost =/bin/bash -c "chmod u+s /var/lib/machines/primtux3/usr/bin/sudo"<br />
ExecStartPost =/bin/bash -c "chown -R 1000:1000 /var/lib/machines/primtux3/home/administrateur/"<br />
ExecStartPost =/bin/bash -c "chown -R 1001:1001 /var/lib/machines/primtux3/home/01-mini/"<br />
ExecStartPost =/bin/bash -c "chown -R 1002:1002 /var/lib/machines/primtux3/home/02-super/"<br />
ExecStartPost =/bin/bash -c "chown -R 1003:1003 /var/lib/machines/primtux3/home/03-maxi/"<br />
<br />
KillMode=mixed<br />
Type=notify<br />
RestartForceExitStatus=133<br />
SuccessExitStatus=133<br />
<br />
[Install]<br />
WantedBy=multi-user.target</code></div></div><br />
Pour le lancer au démarrage du système via systemd-nspawn, il faut l'activer ainsi : <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>systemctl enable primtux3.service</code></div></div><br />
et pour le lancer manuellement : <br />
<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>systemctl start primtux3.service</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">Configuration du son coté serveur</span></span><br />
<br />
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.<br />
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<br />
PULSE_SERVER=&#36;LTSP_CLIENT<br />
export PULSE_SERVER <br />
et aussi pendant qu’on y est<br />
export LANG=fr_FR.UTF-8 <br />
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 :<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>#!/bin/sh<br />
#<br />
# fluxbox startup-script:<br />
#<br />
# Lines starting with a '#' are ignored.<br />
<br />
# Change your keymap:<br />
xmodmap "/home/primtux/.Xmodmap"<br />
<br />
# Applications you want to run with fluxbox.<br />
# MAKE SURE THAT APPS THAT KEEP RUNNING HAVE AN ''&amp;'' AT THE END.<br />
#<br />
PULSE_SERVER=&#36;LTSP_CLIENT<br />
export PULSE_SERVER<br />
export LANG=fr_FR.UTF-8<br />
# idesk &amp;<br />
#<br />
# Debian-local change:<br />
#   - fbautostart has been added with a quick hack to check to see if it<br />
#     exists. If it does, we'll start it up by default.<br />
which fbautostart &gt; /dev/null<br />
if [ &#36;? -eq 0 ]; then<br />
    fbautostart<br />
fi<br />
<br />
# And last but not least we start fluxbox.<br />
# Because it is the last app you have to run it with ''exec'' before it.<br />
exec /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 &amp;<br />
exec xfce4-panel &amp;<br />
exec lxpanel &amp;<br />
exec rox -p 1 &amp;<br />
# exec /usr/bin/BNE-Linux &amp;<br />
# exec /usr/local/bin/primtux/handymenu-mini &amp;<br />
# exec /usr/local/bin/primtux/handymenu-super &amp;<br />
# exec /usr/local/bin/primtux/handymenu-maxi &amp;<br />
exec /usr/local/bin/primtux/accueil &amp;<br />
# exec xscreensaver -nosplash &amp;<br />
exec fluxbox<br />
# or if you want to keep a log:<br />
# exec fluxbox -log "/home/primtux/.fluxbox/log"</code></div></div>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) : <br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;<br />
&lt;!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"&gt;<br />
&lt;!--Generated with glade3 3.4.1 on Sat Feb 16 01:52:03 2008 --&gt;<br />
&lt;glade-interface&gt;<br />
  &lt;widget class="GtkWindow" id="ShutdownBox"&gt;<br />
    &lt;property name="width_request"&gt;350&lt;/property&gt;<br />
    &lt;property name="height_request"&gt;310&lt;/property&gt;<br />
    &lt;property name="events"&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;<br />
    &lt;property name="title" translatable="yes"&gt;PrimTux Shutdown Menu&lt;/property&gt;<br />
    &lt;property name="resizable"&gt;False&lt;/property&gt;<br />
    &lt;property name="modal"&gt;True&lt;/property&gt;<br />
    &lt;property name="window_position"&gt;GTK_WIN_POS_CENTER&lt;/property&gt;<br />
    &lt;property name="icon"&gt;help-browser.png&lt;/property&gt;<br />
    &lt;property name="skip_taskbar_hint"&gt;True&lt;/property&gt;<br />
    &lt;property name="skip_pager_hint"&gt;True&lt;/property&gt;<br />
    &lt;property name="urgency_hint"&gt;True&lt;/property&gt;<br />
    &lt;property name="deletable"&gt;False&lt;/property&gt;<br />
    &lt;property name="opacity"&gt;0&lt;/property&gt;<br />
    &lt;child&gt;<br />
      &lt;widget class="GtkLayout" id="layout1"&gt;<br />
        &lt;property name="visible"&gt;True&lt;/property&gt;<br />
        &lt;property name="events"&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;<br />
        &lt;child&gt;<br />
          &lt;widget class="GtkButton" id="LogoutButton"&gt;<br />
            &lt;property name="width_request"&gt;210&lt;/property&gt;<br />
            &lt;property name="height_request"&gt;52&lt;/property&gt;<br />
            &lt;property name="visible"&gt;True&lt;/property&gt;<br />
            &lt;property name="can_focus"&gt;True&lt;/property&gt;<br />
            &lt;property name="receives_default"&gt;True&lt;/property&gt;<br />
            &lt;property name="events"&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;<br />
            &lt;property name="label" translatable="yes"&gt;_Fermer la session&lt;/property&gt;<br />
            &lt;property name="use_underline"&gt;True&lt;/property&gt;<br />
            &lt;property name="response_id"&gt;0&lt;/property&gt;<br />
            &lt;signal name="clicked" handler="on_LogoutButton_clicked"/&gt;<br />
          &lt;/widget&gt;<br />
          &lt;packing&gt;<br />
            &lt;property name="x"&gt;36&lt;/property&gt;<br />
            &lt;property name="y"&gt;86&lt;/property&gt;<br />
          &lt;/packing&gt;<br />
        &lt;/child&gt;<br />
        &lt;child&gt;<br />
          &lt;widget class="GtkImage" id="image3"&gt;<br />
            &lt;property name="width_request"&gt;62&lt;/property&gt;<br />
            &lt;property name="height_request"&gt;47&lt;/property&gt;<br />
            &lt;property name="visible"&gt;True&lt;/property&gt;<br />
            &lt;property name="events"&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;<br />
            &lt;property name="stock"&gt;gtk-stop&lt;/property&gt;<br />
          &lt;/widget&gt;<br />
          &lt;packing&gt;<br />
            &lt;property name="x"&gt;41&lt;/property&gt;<br />
            &lt;property name="y"&gt;91&lt;/property&gt;<br />
          &lt;/packing&gt;<br />
        &lt;/child&gt;<br />
        &lt;child&gt;<br />
          &lt;widget class="GtkButton" id="CancelButton"&gt;<br />
            &lt;property name="width_request"&gt;210&lt;/property&gt;<br />
            &lt;property name="height_request"&gt;52&lt;/property&gt;<br />
            &lt;property name="visible"&gt;True&lt;/property&gt;<br />
            &lt;property name="can_focus"&gt;True&lt;/property&gt;<br />
            &lt;property name="receives_default"&gt;True&lt;/property&gt;<br />
            &lt;property name="events"&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;<br />
            &lt;property name="label" translatable="yes"&gt;_Annuler&lt;/property&gt;<br />
            &lt;property name="use_underline"&gt;True&lt;/property&gt;<br />
            &lt;property name="response_id"&gt;0&lt;/property&gt;<br />
            &lt;signal name="clicked" handler="on_CancelButton_clicked"/&gt;<br />
          &lt;/widget&gt;<br />
          &lt;packing&gt;<br />
            &lt;property name="x"&gt;37&lt;/property&gt;<br />
            &lt;property name="y"&gt;168&lt;/property&gt;<br />
          &lt;/packing&gt;<br />
        &lt;/child&gt;<br />
        &lt;child&gt;<br />
          &lt;widget class="GtkImage" id="image4"&gt;<br />
            &lt;property name="width_request"&gt;50&lt;/property&gt;<br />
            &lt;property name="height_request"&gt;44&lt;/property&gt;<br />
            &lt;property name="visible"&gt;True&lt;/property&gt;<br />
            &lt;property name="events"&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;<br />
            &lt;property name="stock"&gt;gtk-undo&lt;/property&gt;<br />
          &lt;/widget&gt;<br />
          &lt;packing&gt;<br />
            &lt;property name="x"&gt;46&lt;/property&gt;<br />
            &lt;property name="y"&gt;168&lt;/property&gt;<br />
          &lt;/packing&gt;<br />
        &lt;/child&gt;<br />
        &lt;child&gt;<br />
          &lt;widget class="GtkImage" id="image5"&gt;<br />
          &lt;property name="width_request"&gt;67&lt;/property&gt;<br />
            &lt;property name="height_request"&gt;285&lt;/property&gt;<br />
            &lt;property name="visible"&gt;True&lt;/property&gt;<br />
            &lt;property name="events"&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;<br />
            &lt;property name="pixbuf"&gt;logo.png&lt;/property&gt;<br />
            &lt;property name="icon_size"&gt;2&lt;/property&gt;<br />
          &lt;/widget&gt;<br />
          &lt;packing&gt;<br />
            &lt;property name="x"&gt;261&lt;/property&gt;<br />
            &lt;property name="y"&gt;14&lt;/property&gt;<br />
          &lt;/packing&gt;<br />
        &lt;/child&gt;<br />
        &lt;child&gt;<br />
          &lt;widget class="GtkHSeparator" id="hseparator1"&gt;<br />
            &lt;property name="width_request"&gt;207&lt;/property&gt;<br />
            &lt;property name="height_request"&gt;20&lt;/property&gt;<br />
            &lt;property name="visible"&gt;True&lt;/property&gt;<br />
            &lt;property name="events"&gt;GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK&lt;/property&gt;<br />
          &lt;/widget&gt;<br />
          &lt;packing&gt;<br />
            &lt;property name="x"&gt;38&lt;/property&gt;<br />
            &lt;property name="y"&gt;145&lt;/property&gt;<br />
          &lt;/packing&gt;<br />
        &lt;/child&gt;<br />
      &lt;/widget&gt;<br />
    &lt;/child&gt;<br />
  &lt;/widget&gt;<br />
&lt;/glade-interface&gt;</code></div></div>J’ai ensuite copier chaque compte, en les renommant pour simplifier, autant de fois qu’il y a de raspberry : <br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>cp -a /home/01-mini mini1</code></div></div>De même pour super et maxi.<br />
Démarrer le container, se loguer dedans avec <br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>machinectl login primtux3</code></div></div>créer les utilisateurs correspondants avec adduser et changer les propriétaires des homes pour les utilisateurs nouvellement créés. <br />
Vérifier dans /etc/passwd, changer le shell si nécessaire pour /bin/bash car ssh en a besoin.<br />
Pour sortir du container, taper rapidement 3 fois ] en maintenant la touche control + Alt Gr enfoncée (^]]])<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">Serveur DHCP</span></span><br />
<br />
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).<br />
Configuration du serveur isc-dhcp-server. On installe le paquet isc-dhcp-server : <br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>apt-get install isc-dhcp-server</code></div></div>Ecrire le fichier /etc/dhcp/dhcpd.conf : <br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>#<br />
# Default LTSP dhcpd.conf config file.<br />
#<br />
<br />
authoritative;                                     <br />
<br />
subnet 192.168.xx.0 netmask 255.255.255.0 {<br />
    range 192.168.xx.10 192.168.xx.50;            # Plage d'adresse desservie par le serveur DHCP du serveur LTSP<br />
    option domain-name "aaaa.bbbbb.ccc";    # nom DNS du réseau pédagogique<br />
    option domain-name-servers 192.168.xx.xx;         # adresse IP du serveur DNS <br />
    option broadcast-address 192.168.xx.255;}<br />
        host rasp1 {<br />
        hardware ethernet B8:27:EB:XX:XX:XX;<br />
        fixed-address 192.168.xx.xx;<br />
        }       <br />
<br />
        host rasp2 { <br />
        hardware ethernet B8:27:EB:XX:XX:XX;<br />
        fixed-address 192.168.xx.xx;<br />
        }<br />
<br />
        host rasp3 {<br />
        hardware ethernet B8:27:EB:XX:XX:XX;<br />
        fixed-address 192.168.xx.xx;<br />
        }       <br />
<br />
        host rasp4 {<br />
        hardware ethernet B8:27:EB:XX:XX:XX;<br />
        fixed-address 192.168.xx.xx;<br />
        }</code></div></div><br />
Voilà !<br />
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.<br />
<br />
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.<br />
<br />
Je l’ai aussi testé sur un odroid-c2 avec une armbian 64 stretch. <br />
To be continued ...<br />
<br />
Sources : <br />
<a href="https://www.freedesktop.org/software/systemd/man/systemd-nspawn.html" target="_blank" rel="noopener" class="mycode_url">https://www.freedesktop.org/software/sys...spawn.html</a><br />
<a href="http://www.olafdietsche.de/2016/06/25/network-systemd-nspawn-container" target="_blank" rel="noopener" class="mycode_url">http://www.olafdietsche.de/2016/06/25/ne...-container</a><br />
<a href="https://wiki.archlinux.org/index.php/systemd-networkd" target="_blank" rel="noopener" class="mycode_url">https://wiki.archlinux.org/index.php/systemd-networkd</a><br />
<a href="https://lindenberg.io/blog/post/debian-containers-with-systemd-nspawn/" target="_blank" rel="noopener" class="mycode_url">https://lindenberg.io/blog/post/debian-c...md-nspawn/</a><br />
<a href="http://xmodulo.com/switch-from-networkmanager-to-systemd-networkd.html" target="_blank" rel="noopener" class="mycode_url">http://xmodulo.com/switch-from-networkma...workd.html</a><br />
<a href="https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/" target="_blank" rel="noopener" class="mycode_url">https://www.freedesktop.org/wiki/Softwar...orkTarget/</a><br />
<a href="https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/" target="_blank" rel="noopener" class="mycode_url">https://www.freedesktop.org/wiki/Softwar...faceNames/</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Gcompris]]></title>
			<link>https://forum.primtux.fr/showthread.php?tid=1289</link>
			<pubDate>Fri, 20 Dec 2019 09:15:27 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.primtux.fr/member.php?action=profile&uid=255">Guygoyeg</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.primtux.fr/showthread.php?tid=1289</guid>
			<description><![CDATA[Bonjour,<br />
<br />
Sur mon PrimTux 4 Lubuntu (tenu à jour) Gcompris ne s'affiche pas bien.<br />
Il fait du "clipping" en permanence dès que je bouge la souris.<br />
<br />
J'ai l'impression que ça vient du pilote graphic à priori je suis en Open GL 2. Les autres jeux comme SuperTux qui prennent pas mal de ressources fonctionnent bien.<br />
<br />
Avez-vous une idée ?]]></description>
			<content:encoded><![CDATA[Bonjour,<br />
<br />
Sur mon PrimTux 4 Lubuntu (tenu à jour) Gcompris ne s'affiche pas bien.<br />
Il fait du "clipping" en permanence dès que je bouge la souris.<br />
<br />
J'ai l'impression que ça vient du pilote graphic à priori je suis en Open GL 2. Les autres jeux comme SuperTux qui prennent pas mal de ressources fonctionnent bien.<br />
<br />
Avez-vous une idée ?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[PrimTux5 flèches du clavier dans le terminal "^[[A ^[[B ^[[C ^[[D"]]></title>
			<link>https://forum.primtux.fr/showthread.php?tid=1260</link>
			<pubDate>Fri, 15 Nov 2019 20:04:03 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.primtux.fr/member.php?action=profile&uid=201">Yannick</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.primtux.fr/showthread.php?tid=1260</guid>
			<description><![CDATA[Sur une installation fraiche de <span style="font-weight: bold;" class="mycode_b">PrimTux5-lubuntu</span>, dans le terminal du compte administrateur les touches de déplacement du curseur (les flèches) ne fonctionnent pas mais affichent des séquences étranges "^[[A ^[[B ^[[C ^[[D".<br />
<br />
Pour régler ce problème il faut changer le shell : passer de dash à bash. Le shell dash est optimisé pour la vitesse et la mémoire et n'a pas de fonction d'historique ou de complétion, au contraire de bash.<br />
<br />
Pour cela il faut éditer le fichier /etc/passwd et remplacer dans la ligne de l'administrateur "sh" par "bash" :<br />
on recherche<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>administrateur:x:1000:1000::/home/administrateur:/bin/sh</code></div></div>et on remplace par<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>administrateur:x:1000:1000::/home/administrateur:/bin/bash</code></div></div><br />
[EDIT]<br />
On peut faire cela en une commande comme suggéré plus bas, c'est plus sûr que de risquer des erreurs à éditer directement un fichier aussi important que /etc/passwd (merci Philippe Dpt35) :<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>&#36; sudo chsh -s /bin/bash administrateur</code></div></div><br />
Après on sort de la session et on a un terminal avec historique et complétion par la touche [TAB].]]></description>
			<content:encoded><![CDATA[Sur une installation fraiche de <span style="font-weight: bold;" class="mycode_b">PrimTux5-lubuntu</span>, dans le terminal du compte administrateur les touches de déplacement du curseur (les flèches) ne fonctionnent pas mais affichent des séquences étranges "^[[A ^[[B ^[[C ^[[D".<br />
<br />
Pour régler ce problème il faut changer le shell : passer de dash à bash. Le shell dash est optimisé pour la vitesse et la mémoire et n'a pas de fonction d'historique ou de complétion, au contraire de bash.<br />
<br />
Pour cela il faut éditer le fichier /etc/passwd et remplacer dans la ligne de l'administrateur "sh" par "bash" :<br />
on recherche<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>administrateur:x:1000:1000::/home/administrateur:/bin/sh</code></div></div>et on remplace par<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>administrateur:x:1000:1000::/home/administrateur:/bin/bash</code></div></div><br />
[EDIT]<br />
On peut faire cela en une commande comme suggéré plus bas, c'est plus sûr que de risquer des erreurs à éditer directement un fichier aussi important que /etc/passwd (merci Philippe Dpt35) :<br />
<div class="codeblock"><div class="title">Code :</div><div class="body" dir="ltr"><code>&#36; sudo chsh -s /bin/bash administrateur</code></div></div><br />
Après on sort de la session et on a un terminal avec historique et complétion par la touche [TAB].]]></content:encoded>
		</item>
	</channel>
</rss>