Aller au contenu

Notes pour l'installation et la maintenance de PC sous Linux au lycée⚓︎

[Mise à jour : 10/02/2026]

Les notes sur nos premières installations sont laissées à disposition plus bas, pour mémoire, mais ne sont plus très à jour et il doit rester quelques coquilles qui ne seront pas corrigées. À noter que certains problèmes mentionnés ont disparu sur notre dernière installation, apparemment sans rien avoir modifié...

Caractéristiques principales⚓︎

Le contexte
  • Il s'agit de documenter notre installation d'une distribution Linux Mint sur des PC de notre lycée (salle A208 utilisée par les spécialistes NSI principalement, en salle des profs...)

  • Les principaux scripts et fichiers de configuration sont fournis, consultables en annexe en bas de page.

  • Après une première expérience en salle A208 utilisée entre autres par les spécialistes NSI, malgré un bilan globalement très positif, comme nous l'avions craint (et dit) dès le départ, nous avons pu constater des inconvénients liés au en double boot :

    • Avec un démarrage par défaut sous Windows pour ne pas effrayer l'utilisateur lambda, pas de réveil automatique possible, pour les mises à jour hors période d'utilisation, par exemple.

    • Avec Windows 10 en parallèle, on perdait aussi régulièrement, de manière aléatoire, l'accès à Grub et donc au boot sous Linux. Une manipulation était nécessaire sur le PC pour le rétablir.

    • Suite à l'installation de Windows 11, l'accès à Linux a été complètement écrasé et la manip. précédente ne suffisait plus. Il fallait donc résoudre ce problème de manière plus pérenne.

  • Suite à d'interminables tergiversations, il a finalement été décidé de réinstaller Linux Mint en simple boot dans cette salle. C'est cette approche que nous présentons ici.

  • Nous devrions reproduire la même installation sur nos anciens HP 6200 (i5 Gen.2, à 4 cœurs), installés en salle des profs et dans la salle 33 (où Windows était tellement lent que quasiment plus personne ne les utilisait).

  • Les ordinateurs sont intégrés à l'Active Directory (Windows) du lycée, les utilisateurs s'y connectent avec leurs identifiants habituels et retrouvent les mêmes partages réseau que sous Windows.

  • Seul un compte local peut utiliser sudo, les autres, y compris profs, sont les comptes réseau habituels enregistrés à l'AD (Windows) et n'ont pas de droits d'admin.

  • On ajoute un affichage sur le fond du Bureau indiquant l'adresse IP et le nom du PC (obtenu avec conky), un petit logo (NIRD) et quelques conseils.

  • Les mises à jour sont automatiques. Les PC se réveillent à 6h30, et se mettent à jour, avant de s'éteindre (+ extinction auto en fin de journée, les utilisateurs sont prévenus et peuvent l'annuler dans les deux cas).

  • Cette fois-ci, nous avons utilisé FOG (déjà installé au lycée) au lieu d'une clé bootable (RescueZilla) pour déployer l'installation, malgré quelques caprices des BIOS/UEFI des PC de cette salle qui ne permettent pas de l'exploiter de manière optimale (on devra activer « à la main » le boot PXE pour déployer l'image et parfois remodifier les paramétrages BIOS/UEFI derrière pour que tout fonctionne). Au final, c'est quand même très appréciable, avec 25 PC, d'autant plus qu'ils étaient déjà « inscrits » dans FOG en tant qu'hôtes sous Windows, ce qui nous a encore simplifié la tâche !

  • Pour automatiser en partie l'installation, nous avons réalisé deux scripts : preparer_pour_image sort le PC de l'AD et le renomme, pour éviter tout conflit, avant d'enregistrer son image avec FOG. renomme, donne le nom au PC (une fois déployé ou fraichement créé) et l'intègre à l'AD. Nous n'avons pas testé l'automatisation avec FOG de cette dernière procédure, par manque de temps et parce que notre installation ne devrait pas survivre au delà de la fin d'année scolaire (passage prévu à la « solution Région » dès la rentrée 2027, sans compter que nous n'avons pas directement accès à la machine qui fait tourner FOG...)

  • Nous ne détaillerons pas tous les logiciels installés, dans cette procédure, mais fournirons un fichier à télécharger pour les récupérer.

  • Nous avons placé un PC avec l'installation prévue en salle des profs 2 semaines avant la mise en place dans la salle de classe (de toute façon nous n'avions pas l'accord pour faire cette installation plus tôt). Cela a permis de donner des indications aux collègues pour limiter les réticences, d'ajouter quelques logiciels, et d'adapter quelques paramétrages et des éléments rappelés dans la page de documentation fournie. Cela semble avoir facilité l'acceptation du changement et rassuré.

Notes sur l'installation⚓︎

  • On installe Linux Mint 22.3 Cinnamon sur le SSD où se trouvait Windows (nvme 256Go), les SSD SATA qui avaient été ajoutés pour les partitions Linux quand nous étions en double-boot seront récupérés pour équiper notamment les PC de la salle 33 (ou salle des profs) qui ne disposaient que de disques durs mécaniques. Les PC sont nommés A208-LPROF, A208-L01, A208-L02 (et 33-L01), etc. en cohérence avec le reste du réseau, avec -L00 pour l'image de référence qui sera enregistrée pour déploiement ultérieur.

  • On choisit le clavier fr (alt) (idem fr oss) et d'installer les codec multimédia.

  • Un unique utilisateur (local) adminlinux est créé, qui sera le seul autorisé à utiliser sudo (les autres seront tous identifiés sur l'AD du lycée, avec leurs comptes habituels).

  • Au reboot, on ajoute les dépôts locaux, on réalise les mises à jour. On installe les logiciels voulus (cf. liste dans nos anciennes notes, mais ici il y en a davantage, voir plus bas pour les récupérer). On a évité certains gros paquets en flatpak (OnlyOffice, VS Codium...). La plupart de ceux installés ont été récupérés via Menu / Outil de sauvegarde / Sélection de logiciels, depuis une installation existante en salle des profs qui donnait satisfaction.

  • Pour l'inclusion à l'AD, il faut installer (ex. sudo apt install ...) adcli, krb5-user, libnss-sss, libpam-sss, ntp, realmd, samba, sssd, sssd-tools. Pour krbd5-user, en mode interactif lors de son installation, saisir le nom de royaume en majuscules, à savoir pour nous JEAN-MONNET.LOCAL.

  • Dans Menu / Écran de connexion, activer le verrouillage du pavé numérique (s'il n'apparaît pas, vérifier que numlockx est installé), permettre une connexion manuelle, cacher la liste des utilisateurs, interdire l'utilisateur invité. + Écran désigné DP-4... pour ne pas être sur le vidéoprojecteur uniquement au boot sur le PC prof.

  • Via le menu, Applications au démarrage, enlever Blueman, Welcome...

  • Paramètres système / Économiseurs d'écran ou Gestion de l'alimentation, pour éviter le verrouillage à la mise en veille.

  • Relevés système (en bas à droite), ajouter les paquets de langue, pilotes de périphériques (dont propriétaires NVidia suivant le matériel), codecs multimédia, si besoin. Ignorer Timeshift... ou au contraire l'utiliser (mais on aura une image disque de toute manière, donc c'est moins incontournable) !

  • On a opté pour le pilote vidéo : nvidia-driver-535 (conseillé) au lieu de xserver-xorg-video-nouveau, sur notre matériel.

  • On crée sur le Bureau un dossier « PROBLÈMES TECHNIQUES », qui contiendra des documentations (PDF ou autre) et des lanceurs divers, par exemple pour faciliter la soumission de « tickets » d'incident précis (très basiquement dans notre cas, un fichier .txt prérempli avec identifiants user et PC, heure, qui sera transmis par email ou messagerie Pronote), ou consulter l'état des prise en chage de ces tickets (simple pointeur vers une page Framadoc dédiée !)

  • Ajout d'icônes sur le panneau en bas d'écran (Menu Mint pour trouver chaque application, puis clic-droit / Ajouter au panneau) : LibreOffice Writer, (voire Calc, Impress), Navigateurs, Thonny, capture d'écran...

  • Pour les navigateurs, on limite le nombre de paramètres par défaut et on laisse l'utilisateur libre de modifier sa configuration (bien qu'elle reste locale au PC, comme le reste du profil utilisateur).

    • Pour Chromium, on se contente de quelques liens (en fait essentiellement un lien vers une page externe qu'on pourra facilement mettre à jour indépendemment de l'installation de ces PC et même utiliser depuis d'autres, qui contiendra les URL qu'on veut fournir). On choisit un moteur de recherche par défaut (StartPage.com) et on fait du tri dans ceux proposés (eBay...) On coche « demander où télécharger » dans les paramètres.

    • Pour Firefox, navigateur par défaut, nous avions eu des soucis en utilisant une copie du profil dans /etc/skel, quand les utilisateurs se connectaient la première fois après qu'une mise à jour du navigateur ait déjà eu lieu. Du coup, nous optons pour une autre approche, en utilisant un fichier /etc/firefox/policies/policies.json (contenu en annexe). Ces réglages sont similaires à ceux de Chromium, plus l'ajout de l'extension uBlock Origin.

      Par sécurité, nous laissons quand même un lanceur, dans le dossier « PROBLÈMES TECHNIQUES » sur le Bureau, qui efface .mozilla/ et .config/mozilla/ (modification récente de l'emplacement de ce fichier de configuration ?) dans l'espace personnel, en cas de souci similaire à ce que nous avions rencontré.

  • Certains paramétrages sont obtenus avec dconf (pour Nemo, Xed, Xreader, ou le panneau utilisé par Cinnamon et ses icônes) : un fichier a été créé, avec par exemple
    dconf dump /org/nemo/preferences/ > /usr/share/jeanmo/config_nemo et il est recopié, à la première connexion, en lançant dans le script associé une commande comme
    dconf load /org/nemo/preferences/ < /usr/share/jeanmo/config_nemo (voir en annexe dans initialisations.sh pour les autres.

  • Pour que les noms des PC soient résolus par le serveur DNS local (AD) :

    • Déposer le script update_dns_data.sh (voir annexe), rendu exécutable et lisible par tous, dans /usr/share/jeanmo/ (répertoire à créer, sudo mkdir /usr/share/jeanmo, sudo chmod a+rx /usr/share/jeanmo/update_dns_data.sh).
    • Créer un fichier /etc/rc.local et lui donner les bons droits et propriétaire (chown root:root /etc/rc.local et chmod 700 /etc/rc.local), qui exécute nsupdate avec en entrée le retour du script précédent (là aussi, voir en annexe).
  • L'intégration à l'AD sera géré par le script dédié renomme, à lancer par adminlinux après déploiement de l'image. Lors de l'installation, on le copie sur son Bureau (avec les droits d'exécution), ainsi que le script prepare_pour_image. Le premier se lance avec, dans un terminal lancé depuis le Bureau d'adminlinux,
    sudo ./renomme A208-L01 gervais.j en adaptant les paramètres : nom du PC, suivi d'un identifiant réseau d'un utilisateur qui a les droits pour ajouter une station de travail à l'AD (l'admin. du réseau conviendrait, mais là il nous a donné ces droits pour éviter d'avoir à le solliciter à chaque fois). Le second script est à lancer (sans paramètre) avant de capturer l'image du PC.

  • Pour la récupération des partages réseau et autres initialisations : copier les scripts (en annexe) partages.sh et initialisations.sh dans /usr/share/jeanmo, leur donner les droits en exécution et lecture pour tous (chmod a+rx /usr/share/jeanmo/*.sh). Le premier monte les partages réseau et comme il permet de détecter si l'utilisateur est prof, il copie si c'est le cas sur le Bureau des fichiers spécifiques (cf. script en annexe). Le second assure le reste des paramétrages initiaux. Centraliser ainsi permet une mise à jour pour tout utilisateur plus facile et automatisable par la suite, si besoin.
    Créer un lanceur Partages.desktop (fichier texte, voir annexes), puis le placer dans /etc/skel/.config/autostart/. On peut aussi le créer en créant un lanceur vers la commande en mode graphique, via le Menu et Applications au démarrage, ou simplement récupérer celui qu'on a sauvegardé, puis le récupérer dans ~/.config/autostart.

  • Placer un fichier .conkyrc (cf. en annexes pour le nôtre, qui utilisera le logo NIRD a stocker au même niveau), dans /usr/share/jeanmo. Cela assurera l'affichage d'informations en surimpression sur le fond d'écran, grâce au lancement de conky dans initialisations.sh.

  • Pour démonter explicitement les partages à la fermeture (nécessaire ??), dans /etc/lightdm/lightdm.conf ajouter la règle session-cleanup-script=/usr/share/jeanmo/demontages.sh en déposant le fichier correspondant (voir annexe) au bon endroit, avec les droits d'exécution et de lecture pour tous.

  • Pour l'identification (sûrement en doublon avec les réglages fait via l'interface graphique, laissé là au cas où par sécurité), éditer /etc/lightdm/lightdm.conf.d/70-linumint.conf :
    greeter-show-manual-login=true
    user-session=cinnamon
    greeter-setup-script=/usr/bin/numlockx on
    Cette dernière commande active le pavé numérique dès la connexion.

  • Pour la création automatique du répertoire perso local personnalisé à la première connexion, éditer /etc/pam.d/common-session et ajouter, entre session required pam_unix.so et session optional pam_sss.so : session required pam_mkhomedir.so skel=/etc/skel umask=0077. Ce masque assure les permissions en 700, soit rwx------, pour le répertoire personnel home/utilisateur/.
    Pour la création du répertoire modèle /etc/skel : penser à purger les historiques de navigation et autres fichiers temporaires ou inutiles avant la copie dans /etc/skel. Puis y copier notamment ~/Bureau, .config/chromium, .config/dconf, .config/gtk-*, .config/cinnamon, .config/Thonny... Réaffecter à tous comme propriétaire et groupe root : chown -R root:root /etc/skel/.

Important

Effacer .config/gtk-3.0/bookmarks dans /etc/skel/(car sinon les raccourcis pour Nemo (Images...) sont nommés en dur avec le nom de l'utilisateur adminlinux et ne fonctionnent pas ; alors qu'en l'absence de ce fichier, il est recréé automatiquement pour l'utilisateur).

Et les répertoires Bureau, Téléchargements, Modèles, Public, Documents, Musique (sans s), Images et Vidéos doivent être présents, même vides, sinon (voir paramètres dans ~/.config/user-dirs.dirs), l'utilitaire xdg-user-dirs-update chargé de franciser les noms de ces espaces ne les crée pas et le contenu du répertoire personnel s'affiche directement sur le Bureau !

  • Mises à jour et extinction automatiques, via cron :

    • créer (en tant qu'adminlinux, avec sudo) des fichiers textes dans /etc/cron.d pour chaque tâche à automatiser (voir en annexes). On s'appuie sur un autre script, notify-send-all (pas de notre cru mais sous licence libre), pour envoyer le message à tout utilisateur connecté avant une extinction automatique. Il doit être dans le path, pour nous dans /usr/local/bin/.

    • Ici, on se contente d'un flag de bon ou mauvais fonctionnement lors des mises à jour, sans vrai log, c'est donc largement perfectible...

    • Il est important de paramétrer notre distribution pour que l'heure de l'horloge interne soit celle de l'OS, ce qui n'est pas le cas par défaut sous Linux (ou alors, régler le BIOS en conséquence pour le réveil automatique, mais c'est pénible avec les changements d'heure) :
      timedatectl set-local-rtc 1 (avec timedatectl on peut vérifier que RTC in local TZ passe à yes ; et le paramètre 0 inverse ce choix).

  • Pour pouvoir se connecter comme adminlinux depuis un autre PC en ssh, (on pourra ainsi utiliser au besoin mssh pour regrouper des manipulations, voire Ansible mais vu notre utilisation il est sans doute un peu complexe pour pas grand chose), on va créer une paire de clé pour ssh, puis copier la clé publique dans le répertoire personnel de ce compte adminlinux et copier la clé privée sur les PC d'où l'on veut accéder à nos stations de travail (ou ne se connecter que depuis le PC où l'on crée la paire de clé, avec le même compte utilisateur) :

    • depuis le PC depuis lequel on pourra se connecter à distance, exécuter
      ssh-keygen -t ed25519 -f ~/.ssh/linuxA208 si linuxA208 est le nom de la clé, puis.
      ssh-copy-id -i ~/.ssh/linuxA208.pub NomDUtilisateur@A208-L00 pour transférer la clé publique, où A208-L00 est le nom du PC qu'on est en train de configurer, remplaçable par son adresse IP comme 192.168.2.59.
      Si besoin, visiter https://www.reddit.com/r/linuxmint/comments/1fr4s26/how_to_generate_a_ssh_key_on_linux_mint/?tl=fr ou https://www.hostinger.com/fr/tutoriels/comment-configurer-ssh-sans-mot-de-passe méthode 3, si le mot de passe est toujours demandé.
    • Ensuite, pour copier la clé privée depuis ce PC distant sur un autre compte du même PC ou un autre PC, copier le contenu du dossier .ssh/ dans le répertoire perso de adminlinux, vers le compte sur l'autre PC dans le répertoire .ssh/ à créer si besoin. Les droits doivent être à 700 en octal pour le dossier .ssh, 600 pour la clé privée linuxA208 et 644 pour la clé publique linuxA208.pub (les autres fichiers n'ont pas besoin d'être copiés).
    • Vérifier éventuellement sur le PC qu'on installe que le port 22 est bien ouvert, avec ss -tuln| grep 22.
  • Avant de cloner l'image du disque, effacer les répertoires temporaires, désinstaller ce qu'on est sûr de ne plus utiliser (Thunderbird...). Et faire les mises à jour (rebooter pour vérifier que tout est OK si c'est demandé, à savoir si le noyau a été mis à jour).
    Purger les comptes, sauf adminlinux : Menu / Utilisateurs et Groupes permet de le faire, mais on n'a réussi qu'à les supprimer un par un (et ils restent visibles dans la liste, sur le moment ; et il semble qu'il faut aussi supprimer leur répertoire dans /home, par exemple depuis le gestionnaire de fichiers, en tant qu'administrateur avec un clic droit, pour « exécuter en tant qu'administrateur », en faisant attention de préserver adminlinux).
    Pas très satisfaisant, mais on n'a pas trouvé mieux ni cherché beaucoup. Exécuter sudo userdel --remove-home nom.p pour chacun ne semble pas fonctionner dans un script...

  • Finalement, exécuter en tant qu'adminlinux le scriptprepare_pour_image en sudo pour que le PC soit prêt à être clôné (mais il n'est alors plus utilisable par un utilisateur non local). Puis le réintégrer au domaine avec un nom correct, via renomme (cf. rubriques ci-dessous).

Capture d'une image-disque⚓︎

Remarques
  • Pour utiliser une distribution live comme RescueZilla à la place de FOG, ce qui est pratique si l'on a peu de PC à cloner, voire les notes de notre ancienne installation...

  • Si au contraire on souhaite utiliser FOG mais qu'on n'en dispose pas sur son réseau, on peut l'installer sur un PC portable et connecter provisoirement plusieurs stations à cloner via un switch (en se déconnectant du réseau du lycée, pour ne pas introduire de serveur DHCP bis), voir par exemple la doc. de PrimTux à ce sujet.

  • Dans notre lycée, le boot PXE est normalement configuré pour booter sur le menu de FOG, avec un choix par défaut consistant à booter sur le disque principal après 1 seconde, sans action particulière de l'utilisateur, donc de manière quasi invisible, sauf s'il active immédiatement les touches « flèches » pour rester au niveau du menu)

  • Depuis l'interface web de FOG (chez nous 192.168.0.92/fog),

    • Créer une image (ex. Linux_A208) si elle n'existe pas encore (si vous n'avez pas l'habitude, on crée en fait la fiche descriptive de l'image, même si elle n'existe pas encore). Nous avons choisi une taille d'image variable, c'est un peu plus long mais ça permet de se déployer sur des PC variés plus facilement ensuite.

    • Nommer correctement les hôtes (nos stations de travail), qu'il faut inscrire auparavant si ça n'a pas encore été fait, voir sur https://fogproject.org/ si besoin. Leur associer l'image précédemment créée, puis décocher l'inscription auto. à l'AD et le renommage auto.

    • En sélectionnant l'hôte contenant l'installation à cloner qu'on vient de préparer, lancer la capture (pour refaire une image après une mise à jour, en écrasant l'ancienne, il suffit de relancer cette capture, sans refaire les étapes précédentes). Dans une installation plus standard, puls foncitonnelle que la notre, cocher wake on lan permettrait d'allumer le PC et de lancer la capture à distance.

  • Dans notre cas en A208, il faudra (après avoir repris les réglages BIOS/UEFI via la copie sur une clé USB, ou rétabli le démarrage propriétaire), booter en PXE via des appuis répétés sur F12 au boot, pour le PC modèle. La capture devrait se lancer automatiquement.

  • Toujours dans notre cas, il faut parfois désactiver le démarrage propriétaire pour que tout fonctionne ensuite (même version de BIOS, a priori même configuration... Mystère). De manière générale, le PC reboote sous Linux Mint.

  • Pour pouvoir réutiliser le PC modèle, exécuter le script renomme pour lui redonner son nom et l'intégrer à l'AD.

Déploiement d'une image-disque sur les PC⚓︎

  • Depuis l'interface web de FOG, les PC doivent avoir été enregistrées, associées à la bonne image (voir « capture » ci-dessus). Les sélectionner, puis lancer le déploiement de l'image. (S'ils ont été enregistré avant, il est possible de lancer ce déploiement depuis le PC via le menu FOG au boot, mais attention à la saisie du mot de passe, car le clavier en en QWERTY).

  • Chez nous en A208, comme pour la capture, on boote en PXE via F12 répété au démarrage du PC, après avoir si besoin reconfiguré le BIOS/UEFI pour que ce soit possible. Le déploiement de l'image sur le PC devrait se lancer.

  • Au reboot (remodifier le BIOS/UEFI à nouveau si ça coince), se connecter comme adminlinux, ouvrir un terminal au niveau du Bureau (clic droit...), puis lancer une commande du type sudo ./renomme A208-L01 gervais.j en adaptant le nom du PC et celui d'un utilisateur réseau autorisé à ajouter une station à l'AD.

  • Il semble qu'il faille rebooter pour que le nom de l'hôte soit pris en compte. Il est prudent de tester une connexion avec un compte utilisateur du réseau (inscrit à l'AD).

Annexes (scripts...)⚓︎

Remarque

Histoire de ne pas alourdir encore cette longue page, nous n'avons pas conservé les anciennes versions des scripts et fichiers de configuration, (quasi-)identiques aux plus récents, fournis ci-dessous.

À noter que l'ancien partage.sh est maintenant scindé en partage.sh pour ce qui concerne presque exclusivement le montage des partages réseau et initialisations.sh pour le reste.

Script partages.sh⚓︎

Text Only
#!/bin/bash

###### Code de /usr/share/jeanmo/partages.sh #####

# Montage des partages réseau,erreurs ignorées (si droits insuffisant)

# Répertoire perso sur le réseau
gio mount "smb://monnet-data/${USER}$"


# Pour les profs
# Démonter d'abord, pour que juste après, "erreur" signifie bien "non prof"
gio mount -u "smb://monnet-data/echange professeurs$" 2> /dev/null
gio mount "smb://monnet-data/echange professeurs$" 2> /dev/null
# Pas d'erreur <=> utilisateur prof ===========================================
if [ $? -eq 0 ]
  then
  cp "/usr/share/jeanmo/Consultation des Tickets d'Incident.desktop"  "/home/${USER}/Bureau/PROBLÈMES TECHNIQUES/"
  cp "/usr/share/jeanmo/Signalement de Panne ou Problème.desktop"  "/home/${USER}/Bureau/PROBLÈMES TECHNIQUES/"
  cp "/usr/share/jeanmo/Fiche_Memo_Linux_Lycee.pdf"  "/home/${USER}/Bureau/PROBLÈMES TECHNIQUES/"
  cp "/usr/share/jeanmo/Pronote Web PROF.desktop"  "/home/${USER}/Bureau/"
  # Partages de toutes les classes (dans les sous-répertoires)
  gio mount smb://monnet-data/divisions$ 2> /dev/null
  # Partage spécifique à la discipline
  for discipline in Allemand Anglais Espagnol "Hist geo" Italien \
                    "Lettres Modernes" Mathematiques Philosophie S2I \
                    SC.ECO.SOC SC.PHY.APP SC.PHY.CHIMIE  "SC.VIE TERRE"
  do
      gio mount "smb://monnet-data/${discipline}$" 2> /dev/null
      # Retour == 0, soit "Discipline trouvée" => sortie de boucle
      if [ $? -eq 0 ]
      then
          break
      fi
  done

# Utilisateur non prof ========================================================
else  
  cp "/usr/share/jeanmo/Pronote Web.desktop"  "/home/${USER}/Bureau/"

# Ajouter sa classe, pour un élève (erreurs ignorées)
for classe in 1G1 1G2 1G3 1G4 1G5 1G6 1G7 1G8 \
              TG1 TG2 TG3 TG4 TG5 TG6 TG7 \
              2D01 2D02 2D03 2D04 2D05 2D06 2D07 \
              2D08 2D09 2D10 2D11 2D12 PREPA2ND \
              1STI2D1 1STI2D2 1STI2D3 1STL TSTI2D1 TSTI2D2 TSTI2D3 \
              TSTL STS1 STS2   STS1\ UFA
do
    gio mount "smb://monnet-data/${classe}$" 2> /dev/null
    # Retour == 0, soit "Classe trouvée" => sortie de boucle
    if [ $? -eq 0 ]
    then
        break
    fi
done
fi
# Pour tous ===================================================================
# Échange élèves, Ressources
gio mount "smb://monnet-data/echange eleves$" 2> /dev/null
gio mount smb://monnet-data/ressources$ 2> /dev/null

# Pour les comptes examen NSI
gio mount smb://monnet-data/NSI$ 2> /dev/null
# Retour à 0 signifie "Partage NSI trouvé"
if [ $? -eq 0 ]
then  # Retirer un partage avec des informations potentielles...
    gio mount -u smb://monnet-data/ressources$ 2> /dev/null
fi

Script initialisations.sh⚓︎

Text Only
#!/bin/bash

###### Code de /usr/share/jeanmo/initialisations.sh #####

# Autres / config.
# . Activation pavé numérique
numlockx on
# . Informations en fond d'écran
conky --quiet --config=/usr/share/jeanmo/.conkyrc
# . Paramétrages Xed et Xreader (svg avec dump au lieu de load), etc.
dconf load /org/x/editor/preferences/ < /usr/share/jeanmo/config_xed
dconf load /org/x/editor/preferences/ < /usr/share/jeanmo/config_xreader
dconf load /org/nemo/preferences/ < /usr/share/jeanmo/config_nemo
dconf load /org/cinnamon/app-menu-label/ < /usr/share/jeanmo/config_cinnamon_menu

Lanceur vers le script de montage des partages réseau⚓︎

Text Only
[Desktop Entry]
Name=Récupération des partages
Exec=/usr/share/jeanmo/partages.sh
Type=Application
Icon=document-properties
Terminal=false

Script demontages.sh⚓︎

Text Only
!/bin/bash
gio mount -u "smb://monnet-data/${USER}$" 2> /dev/null
gio mount -u "smb://monnet-data/echange eleves$" 2> /dev/null
gio mount -u "smb://monnet-data/ressources$" 2> /dev/null
gio mount -u "smb://monnet-data/echange professeurs$" 2> /dev/null
gio mount -u "smb://monnet-data/divisions$" 2> /dev/null

Fichier de configuration .conkyrc⚓︎

Text Only
conky.config = {
  background = true,
    own_window = true,
    own_window_class = 'Conky',
    own_window_transparent = false,
    own_window_type = 'desktop',
    own_window_hints = 'undecorated,below,sticky,skip_taskbar,skip_pager',
    own_window_argb_visual = true,
    own_window_argb_value = 0,
    double_buffer = true,
    no_buffers = true,
    use_spacer = 'none',
    use_xft = true,
    xftalpha = 1,
    font = 'Sans:size=28',
    update_interval = 5,
    uppercase = false,
    override_utf8_locale = true,
    stippled_borders = 1,
    draw_borders = false,
    draw_graph_borders = true,
    draw_outline = false,
    draw_shades = true,
    show_graph_scale = true,
    show_graph_range = true,
    alignment = 'top_right',
    gap_x = 20,
    gap_y = 20,
    net_avg_samples = 1,
    cpu_avg_samples = 6,
    short_units = true,
    pad_percents = 2,
    text_buffer_size = 2048,
    out_to_console = false,
    out_to_stderr = false,
    extra_newline = false,
}
conky.text = [[
${hr}
$nodename
$USER
${font Sans:size=14} 
${exec hostname -I}
${hr} 
# "o" ajoutés pour avoir Go et pas G
#RAM $alignr${mem}o / ${memmax}o
# / $alignr${fs_used /}o / ${fs_size /}o
#CPU $alignr${cpu cpu0}%
#Uptime $alignr $alignr$uptime 
Les "partages" accessibles depuis
le Bureau sont l'équivalent des lecteurs
réseau utilisés d'habitude sous Windows.
Utilisez-les pour enregistrer vos
documents, plutôt que "localement" sur
le PC (dans Documents, Images, etc.)
${hr}
Souci technique ?
=> Dossier PROBLÈMES TECHNIQUES
      sur le Bureau
${hr}

${image /usr/share/jeanmo/Logo_NIRD.png -s 163x69 -p 190,130}
]]

Script prepare_pour_image⚓︎

Text Only
#!/usr/bin/bash

# À exécuter en sudo
if [[ "$EUID" != "0" ]]
then
   echo "Script à lancer avec sudo" 
   echo "Usage : $0    # Sans paramètre"
   exit 1
fi

# Renommer en -L00
echo ". Nom initial du PC : $(cat /etc/hostname)"
sudo sed -i "s/-L[[:digit:]][[:digit:]]\ */-L00/g" /etc/hosts
sudo sed -i "s/-L[[:digit:]][[:digit:]]\ */-L00/g" /etc/hostname
echo ". PC renommé en $(cat /etc/hostname)"

# Sortir de l'AD
sudo realm leave jean-monnet.local
echo -e ". PC sorti de l'AD\n"

# Pense-bête !
echo -e "(Purger /tmp/, répertoires perso. et historiques de navigateurs avant de capturer l'image du PC)\n"
echo ">>> Penser à renommer le PC et le réintégrer à l'AD après la capture ! <<<"

Script renomme⚓︎

Text Only
#!/usr/bin/bash

## À exécuter en sudo
if [[ "$EUID" != "0" ]]
then
   echo "Script à lancer avec sudo" 
   echo "Usage : $0 <nouveau_nom_du_PC> <utilisateur_pouvant_inscrire_a_l_AD>"
   exit 1
fi

## À appeler avec deux paramètres
if [ "$#" -ne 2 ]; then
    echo -e "À lancer avec\n   * un 1er paramètre = nom du PC, ex. A208-L00"
    echo "   * un second = compte réseau autorisé à inscrire un PC à l'AD"
fi

## Modifier le nom du PC
sudo echo $1 > /etc/hostname
sudo sed -i "s/A208-L00/$1/g" /etc/hosts
echo "PC renommé en $(cat /etc/hostname)"


## Inscrire à l'AD
# Reconstruction d'une nouvelle identité
sudo rm /etc/machine-id && sudo systemd-machine-id-setup
# Inscription
echo -e "Pour la suite :\n   * premier mot de passe / compte réseau qui inscrit à l'AD,"
echo "   * Second mot de passe éventuel / compte admin local Linux"
sudo realm join -U $2 jean-monnet.local
# Mise à jour des paramètres sssd modifiés par la précédente instruction
sudo sed -i "s/home\/%u@%d/home\/%u/" /etc/sssd/sssd.conf
sudo sed -i "s/use_fully_qualified_names = True/use_fully_qualified_names = False/" /etc/sssd/sssd.conf
# Redémarrage du service
sudo service sssd restart
echo "PC inscrit à l'AD. Vérification (l'utilisateur doit être reconnu => uid, etc. listés:"

## Test facultatif avec un ID d'utilisateur du réseau
id gervais.j

Fichiers pour s'inscrire sur le serveur DNS⚓︎

  • /usr/share/jeanmo/update_dns_data.sh

    Text Only
    #!/bin/bash
    echo server 192.168.0.97
    echo zone jean-monnet.local
    echo update delete `hostname`.jean-monnet.local A
    echo update add `hostname`.jean-monnet.local 3600 A `hostname -I`
    echo send
    

  • /etc/rc.local (propriétaire et groupe root, droits 700)

    Text Only
    #!/bin/bash
    (/usr/share/jeanmo/update_dns_data.sh | nsupdate) &
    

Script notify-send-all⚓︎

Par Tony Walker, sous licence MIT.

Text Only
#!/usr/bin/env sh

display_help() {
    echo "Send a notification to all logged-in GUI users."
    echo ""
    echo "Usage: notify-send-all [options] <summary> [body]"
    echo ""
    echo "Options:"
    echo "  -? | --help    This text."
    echo ""
    echo "All options from notify-send are supported, see below..."
    echo
    notify-send --help
    exit 1
}

while [ $# -gt 0 ]; do
    case $1 in
        -h | --help)
            display_help
            exit 1
            ;;
        *)
            break
            ;;
    esac
done

for SOME_USER in /run/user/*; do
    SOME_USER=$(basename "$SOME_USER")
    if [ "$SOME_USER" = 0 ]; then
#        echo "* Skipping root user."
        :
    else
        sudo -u $(id -u -n "$SOME_USER") \
            DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/"$SOME_USER"/bus notify-send ${@+"$@"}
    fi
done

exit 0

Script ticket.sh pour préparer un message de dysfonctionnement⚓︎

Text Only
#!/bin/bash

from="${USER} sur $(hostname -I) = $(hostname) ($(date +"%a %d/%m/%Y %X"))"
file="/home/${USER}/Bureau/Ticket_Incident_${USER}_$(date +"%F").txt"

echo "=========================================" > ${file}
echo "  Ticket incident (PC Linux uniquement)  " >> ${file}
echo "=========================================" >> ${file}
echo "Réf. : $from" >> ${file}
echo "Descriptif :" >> ${file}
echo " " >> ${file}
echo "   . . ." >> ${file}
echo " " >> ${file}
echo "=========================================" >> ${file}
echo "Une fois le descriptif complété avec le plus de précision possible :" >> ${file}
echo "  * Fichier / Enregistrer => récupérer ce fichier sur votre Bureau (sur ce PC), sans le renommer"  >> ${file}
echo "  * Le copier si besoin sur une clé USB, ou votre partage réseau personnel"  >> ${file}
echo "  * L'envoyer à Jean-Marc GERVAIS via Pronote ou par email SVP" >> ${file}
echo "MERCI pour votre retour, désolé pour le désagrément !" >> ${file}

xed ${file}

Script fix_firefox (encore utile ??)⚓︎

Text Only
#!/usr/bin/env sh

# Ancienne version
rm -rf /home/$USER/.mozilla 2&> /dev/null
# À partir de v.147 ??
rm -rf /home/$USER/.config/mozilla

notify-send "Tentative de réparation effectuée (Fermez & Relancez Firefox)..."&

firefox &

Fichier /etc/firefox/policies/policies.json pour paramétrer Firefox⚓︎

Text Only
{
  "policies": {
    "Locale": {
      "Default": "fr"
    },

    "Cookies": {
      "AcceptThirdParty": "never",
      "Behavior": "reject-tracker-and-partition-foreign",
      "ExpireAtSessionEnd": true,
      "Locked": false
    },
    "DisablePocket": true,
    "DisableTelemetry": true,
    "DisableFirefoxStudies": true,
    "DisableFirefoxAccounts": true,
    "OfferToSaveLogins": false,
    "OverrideFirstRunPage": "",
    "EnableTrackingProtection": {
      "Value": true,
      "Locked": true,
      "Cryptomining": true,
      "Fingerprinting": true
    },
    "Permissions": {
      "Location": {
        "BlockNewRequests": true
      }
    },

    "DisableProfileImport": true,
    "ManagedBookmarks": [
      {
        "toplevel_name": "Lycée"
      },
      {
        "url": "https://jean-monnet-annemasse.ent.auvergnerhonealpes.fr/",
        "name": "Site du lycée"
      },
      {
        "url": "https://0741476c.index-education.net/pronote/?fd=1",
        "name": "Pronote"
      },
      {
        "url": "https://gervais.forge.apps.education.fr/nird/URL_Lycee/",
        "name": "Ressources utiles diverses"
      }
    ],
    "DisplayBookmarksToolbar": "always",

    "Extensions": {
      "Install": [
        "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"
      ],
      "Uninstall": [
        "amazon@search.mozilla.org",
        "bing@search.mozilla.org",
        "google@search.mozilla.org"
      ]
    },
    "ExtensionSettings": {
      "uBlock0@raymondhill.net": {
        "installation_mode": "force_installed",
        "install_url": "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"
      }
    },
    "3rdparty": {
      "Extensions": {
        "uBlock0@raymondhill.net": {
          "adminSettings": {
            "advancedSettings": [
              [
                "disableWebAssembly",
                "true"
              ],
              [
                "uiTheme",
                "dark"
              ]
            ],
            "advancedUserEnabled": "true",
            "externalLists": [
              "https://raw.githubusercontent.com/AdguardTeam/FiltersRegistry/master/filters/filter_17_TrackParam/filter.txt",
              "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/LegitimateURLShortener.txt"
            ],
            "importedLists": [
              "https://raw.githubusercontent.com/AdguardTeam/FiltersRegistry/master/filters/filter_17_TrackParam/filter.txt",
              "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/LegitimateURLShortener.txt"
            ],
            "dynamicFilteringEnabled": "true",
            "dynamicFilteringString": "* google-analytics.com * block\n* googletagmanager.com * block\n* * 3p-script block*\n* * 3p-frame block",
            "popupPanelSections": "31",
            "hostnameSwitchesString": "no-large-media: behind-the-scene false\nno-csp-reports: * true",
            "userFilters": "! fonts\n!*$font,third-party\n!*$font,third-party,domain=~example.com|~example2.net\n\n! all stackoverflow annoying consent banners\n##.js-consent-banner\n\n! some annoying banners\n##.banner > [href]\n",
            "selectedFilterLists": [
              "ublock-quick-fixes",
              "user-filters",
              "ublock-filters",
              "ublock-badware",
              "ublock-privacy",
              "ublock-abuse",
              "ublock-unbreak",
              "adguard-generic",
              "adguard-mobile",
              "easylist",
              "easyprivacy",
              "urlhaus-1",
              "adguard-annoyance",
              "fanboy-annoyance",
              "ublock-annoyances",
              "plowe-0",
              "https://raw.githubusercontent.com/AdguardTeam/FiltersRegistry/master/filters/filter_17_TrackParam/filter.txt",
              "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/LegitimateURLShortener.txt"
            ]
          }
        }
      }
    },

    "FirefoxHome": {
      "Search": false,
      "TopSites": false,
      "SponsoredTopSites": false,
      "Highlights": false,
      "Pocket": false,
      "SponsoredPocket": false,
      "Snippets": false,
      "Locked": false
    },

    "HardwareAcceleration": false,

    "SearchEngines": {
      "Add": [
        { "Name": "StartPage",
          "URLTemplate": "https://startpage.com/do/search?q={searchTerms}",
          "IconURL": "https://www.startpage.com/sp/cdn/favicons/favicon--light.ico",
          "Description": "StartPage",
          "Alias": "StarPage"
        },
        {
          "Name": "DuckDuckGo",
          "URLTemplate": "https://duckduckg.com/q={searchTerms}",
          "Method": "GET",
          "IconURL": "https://duckduckgo.com.org/favicon.ico",
          "Alias": "duckduckgo",
          "Description": "Duck Duck Go",
          "SuggestURLTemplate": "https://duckduckg.com/q={searchTerms}"
        }
      ],
      "Remove": [
        "Amazon",
        "Twitter"
      ],
      "Default": "StartPage"
    }
  }
}

Fichiers pour dconf⚓︎

  • config_xreader

    Text Only
    [/]
    continuous=true
    show-sidebar=true
    window-ratio=(3.2252432423852828, 1.1973063973063967)
    

  • config_xed

    Text Only
    [editor]
    auto-indent=true
    display-line-numbers=true
    display-right-margin=true
    highlight-current-line=false
    right-margin-position=uint32 79
    scheme='xed'
    
    [ui]
    minimap-visible=true
    statusbar-visible=true
    

  • config_nemo

    Text Only
    [/]
    show-hidden-files=false
    default-folder-viewer='list-view'
    

  • config_cinnamon_menu pour le panneau
    Text Only
    [/]
    app-menu-label='Menu '
    enabled-applets=['panel1:left:0:menu@cinnamon.org:0', 'panel1:left:1:separator@cinnamon.org:1', 'panel1:left:2:grouped-window-list@cinnamon.org:2', 'panel1:right:0:systray@cinnamon.org:3', 'panel1:right:1:xapp-status@cinnamon.org:4', 'panel1:right:2:notifications@cinnamon.org:5', 'panel1:right:3:printers@cinnamon.org:6', 'panel1:right:4:removable-drives@cinnamon.org:7', 'panel1:right:5:keyboard@cinnamon.org:8', 'panel1:right:6:favorites@cinnamon.org:9', 'panel1:right:7:network@cinnamon.org:10', 'panel1:right:8:sound@cinnamon.org:11', 'panel1:right:9:power@cinnamon.org:12', 'panel1:right:10:calendar@cinnamon.org:13', 'panel1:right:11:cornerbar@cinnamon.org:14']
    
    [settings-daemon/peripherals/keyboard]
    numlock-state='on'
    

Lanceurs⚓︎

  • Signalement des dysfonctionnements Signalement de Panne ou Problème.desktop

    Text Only
    [Desktop Entry]
    Name=Signalement de Dysfonctionnement
    Name[fr_FR]=Signalement de Panne ou Problème
    Exec=/usr/share/jeanmo/ticket.sh
    Exec[fr_FR]=/usr/share/jeanmo/ticket.sh
    Comment=
    Comment[fr_FR]=
    Terminal=false
    PrefersNonDefaultGPU=false
    Icon=bug-buddy
    Icon[fr_FR]=bug-buddy
    Type=Application
    Type[fr_FR]=Application
    

  • Consultation / suivi des résolutions Consultation des Tickets d'Incident.desktop

    Text Only
    [Desktop Entry]
    Name=Maintenance PC Linux
    Exec=browse https://s.42l.fr/A208
    Comment=
    Terminal=false
    PrefersNonDefaultGPU=false
    Icon=computer-fail-symbolic
    Type=Application
    Name[fr_FR]=Consultation des Tickets d'Incident
    

  • Pronote web pour les profs Pronote Web PROF.desktop (sinon ôter professeurs.html de l'URL, pour Pronote Web.desktop)

    Text Only
    [Desktop Entry]
    Name=Pronote Web PROF
    Exec=browse https://0741476c.index-education.net/pronote/professeur.html
    Terminal=false
    Icon=mintinstall-education-symbolic
    Type=Application
    Comment[fr_FR]=Ouvre le site web Pronote dans le navigateur par défaut
    Name[fr_FR]=Pronote Web PROF
    

  • Pour faciliter la déconnexion avec une icône directement sur le Bureau, SE DÉCONNECTER.desktop

    Text Only
    [Desktop Entry]
    Name=SE DÉCONNECTER
    Exec=cinnamon-session-quit --logout --no-prompt
    Comment=
    Terminal=false
    PrefersNonDefaultGPU=false
    Icon=xfsm-logout
    Type=Application
    

    Les suivants sont dans le dossier PROBLÈMES TECHNIQUES sur le Bureau

  • Pour accéder à la page de liens externe URL Ressources Web.desktop

    Text Only
    [Desktop Entry]
    Name=URLs Utiles
    Name[fr_FR]=URL Ressources Web
    Exec=browse https://gervais.forge.apps.education.fr/nird/URL_Lycee/
    Terminal=false
    PrefersNonDefaultGPU=false
    Icon=emoji-flags-symbolic
    Icon[fr_FR]=emoji-flags-symbolic
    Type=Application
    Type[fr_FR]=Application
    

  • Pour récupérer ses partages Récupération des partages.desktop, si l'on en a démonté involontairement

    Text Only
    [Desktop Entry]
    Name=Récupération des partages
    Exec=/usr/share/jeanmo/partages.sh
    Comment=
    Terminal=false
    PrefersNonDefaultGPU=false
    Icon=document-properties
    Type=Application
    

  • Réparer Firefox.desktop pas forcément encore utile...

    Text Only
    [Desktop Entry]
    Name=Réparer Firefox
    Exec=/usr/share/jeanmo/fix_firefox.sh
    Comment=Remet à zéro les paramètres de Firefox en cas de problème
    Terminal=false
    PrefersNonDefaultGPU=false
    Icon=face-devilish-symbolic
    Type=Application
    Name[fr_FR]=Réparer Firefox
    

Ancienne installation⚓︎

Archive de l'installation précédente

Il s'agit des notes sur l'intallation précédente, conservées pour mémoire. Elles datent du 24 juin 2024 (salle A208) + mise à jour décembre 2024 (salle des profs essentiellement), puis d'avril 2025.

  • Si installer une distribution GNU/Linux ne pose le plus souvent aucun souci, les contraintes supplémentaires nous ont bien compliqué la tâche ici (utilisateurs inscrits sur l'AD Windows local, qui doivent récupérer leurs partages réseau avec les bons droits, etc.), d'où ces notes !

  • Installation double-boot en salle A208, globalement validée après quelques ajustements par notre utilisation pendant une année en spé NSI. L'image de la partition est déployée PC par PC, avant de les renommer et de les intégrer à l'AD. Windows sur le SSD Nvme intégré d'origine + Linux Mint 20.3 sur le SSD SATA ajouté (/dev/sda1). Pour booter sous Linux, appuyer de manière répétée sur [↑] au démarrage jusqu'à accéder au menu GRUB, puis valider la première entrée. Alternative : appuyer de manière répétitive sur [F9], puis choisir directement si c'est proposé, ou via « À partir du fichier / Système... / EFI / ubuntu / grubx64.efi ».

  • Installation en mono-boot, en salle des profs et C208. Il s'agit de PC anciennement en salle 28 destiné(s) à la déchetterie, des HP 6200, i5 Gen. 2 à 4 cœurs. On a doublé la RAM (portée à 8 Go) en utilisant celle de 2 PC et remplacé le disque dur par un SSD SATA.

  • Pour ces installations Linux :

    • Distribution Mint 20.3 Cinnamon en A208. Démarrage par défaut sans délai (1 sec.) sous Windows, sinon répéter l'appui sur [↑] au démarrage pour accéder au menu GRUB et choisir (première entrée en haut) Linux Mint. Des affichettes expliquent cela ainsi que la manière de revenir à Windows si besoin (+ rappel en fond d'écran sous Mint)...
      Version plus récentes en mono-boot, Mint 22 Cinnamon (mise à jour sans souci vers 22.1). Pas de modification majeure observée.
      À noter que le double-boot avec Windows par défaut interdit la mise à jour automatique avec réveil programmé à une heure donnée (et éventuelle extinction derrière).

    • Un unique utilisateur local adminlinux peut utiliser sudo, les autres sont identifiés sur l'AD du lycée, avec leurs identifiants habituels (ils retrouvent leurs partages réseau, sur le Bureau). Possibilité de créer un compte local lambda en secours sur quelques PC en cas de panne réseau, pour les examens type Épreuves Pratiques NSI.

    • Les PC sont nommés SALLE-L01, SALLE-L02, etc. ainsi que SALLE-LPROF pour le bureau du prof (en remplaçant SALLE par A208, 33 ou autre), avec L pour Linux. Et en salle des profs, SPROF-L01, etc. Le tout reste ainsi cohérent avec le reste du réseau.

    • Un utilisateur de base a suffisamment de droits pour installer une autre disposition de clavier, utilisable s'il la connaît par cœur (ou s'il connecte son clavier physique en USB), il aura alors un drapeau dans la partie droite du panneau en bas d'écran, pour switcher entre les configurations installées.

    • On peut faire les mises à jour manuelles en étant connecté comme utilisateur de base, même en mode « non automatique », à condition de saisir le mot de passe d'adminlinux.

  • À revoir ?

    • Les mises à jour n'étaient pas faisables par un utilisateur lambda, elles prennent systématiquement du retard et c'est mal. Pour l'installation en salle des profs, on est passé à la mise à jour automatique. Avec le risque de tout casser si l'une d'elles pause problème. Pas de souci en pratique, au bout de plusieurs mois...

    • Petit souci de clé obsolète signalé lors des mises à jour (?) Ne semble plus d'actualité sur les versions récentes, comme Mint 22.

    • Il faudrait sécuriser le GRUB, dans l'absolu.

    • Chromium demande un mot de passe (annuler 3 fois suffit, mais c'est pénible).

    • Firefox semble perdre ses paramétrages suite à des changements de version parfois, voire ne plus se lancer correctement (dans ce cas, effacer ~/.mozilla). Du coup, on préférera laisser le profil vierge en attendant mieux, mais on se retrouvera avec Google comme moteur par défaut et autres trucs pas terribles.

    • Le port 80 reste bloqué pour les utilisateur non sudoers et les autres ports semblent bloqués par le pare-feu, donc c'est gênant pour réaliser des serveurs web locaux (toujours d'actualité ? À vérifier... Souci pour les programmations de serveur web en NSI uniquement.)

    • Il serait bien de rationnaliser la remontée et le suivi des bugs et demandes, surtout si l'on élargit le public utilisateur (ex. en salle des profs), sans que Pascal Fayan ne soit dérangé à tort (service en ligne ? simple fichier tableur comme Pascal utilise ? autre ? En salle des profs, on tente un document partagé en ligne, avec pointeur sur le Bureau + lien affiché avec son QRcode, pour pouvoir y accéder depuis chez soi ou si le PC est HS...) En même temps, si l'on n'a du Linux qu'en A208 plus quelques PC isolés et que ça dure 1-2 ans max. encore, ça n'est pas forcément crucial...

    • Maintenant que les PC peuvent déclarer leur nom auprès du serveur DNS de l'AD, on devrait pouvoir scripter une installation de logiciel, ou des modifications de fichiers, depuis un PC unique (via ssh, voire Ansible par exemple). À explorer ?

    • Installer VS Codium en A208 ? Avec quels add-ons ? Attention à ne pas trop alourdir les répertoires perso. locaux et vérifier que le profil déposé dans /etc/skel/ est bien transféré aux utilisateurs... Idem pour LaTeX (TeXlive + TexStudio par exemple), notamment en salle des profs ?

Installation complète de l'OS⚓︎

Contexte

On a opté en A208 (contraints et forcés) pour un double-boot, avec un choix par défaut sous Windows (paramétré quasi instantané, pour ne pas perturber les utilisateurs de base). Du coup, on a des soucis pénibles, les mises à jour de Windows viennent parfois tout casser... Sinon, la contrainte était d'identifier les utilisateurs via leur compte réseau habituel validé par l'AD (Active Directory, service réseau Windows) et chacun devait retrouver automatiquement ses partages (« lecteurs ») habituels (personnel, de la classe, échange-élèves ou échange-profs, etc.). On a ajouté un utilisateur local privilégié (adminlinux), qui seul a la possibilité d'administrer le PC. On a choisi d'installer Linux Mint sous Cinnamon, pour faciliter la transition depuis Windows.

  • Lancer l'installation depuis le lanceur sur le Bureau de la version live de Mint.

  • Clavier French (alt), codecs multimedia à installer. Ne pas démonter le lecteur si c'est proposé, c'est notre clé d'installation. Compte local adminlinux créé avec le mot de passe de-la-mort-qui-tue.

  • Au reboot, ajout des dépôts locaux, update. On peut poursuivre d'autres opérations pendant la mise à jour (et les installations qui suivent).

  • Installation via la logiteque en évitant au maximum les Flatpack trop lourds (ou avec apt install ...), dont numlockx, traceroute, ssh, chromium, pdfarranger, xournal, loook, pinta, gimp, inkscape, vlc, geogebra, idle, thonny, pyzo, sqlitebrowser, logisim, meld, diffpdf, codeblocks, audacity, geany, libreoffice-dmaths (pas pour Mint 22, pose des soucis sur les versions récentes de LibreOffice, à installer à la main en version plus récente, ou en v5.4 puis en choisissant d'activer le Dispatcher), ttf-mscorefonts-installer (?), conky (remplacé par conky-std pour Mint 22). Puis, en récupérant le .deb depuis son site au lieu du Flatpack, filius (avec sudo dpkg -i filius-etc.deb).
    Puis pour l'AD (peut être fait plus tard) adcli, krb5-user, libnss-sss, libpam-sss, ntp, realmd, samba, sssd, sssd-tools. Pour krbd5-user, en mode interactif lors de l'installation, saisir le nom de royaume en majuscules JEAN-MONNET.LOCAL.

Et si l'on a un PC similaire dont on souhaite s'inspirer ?

On peut aussi récupérer une liste des paquets installés depuis un autre PC pour gagner du temps (avec dpkg --get-selections ou apt list), voire des dossiers de configuration de logiciels.

  • Installer VSCodium ? Avec quelles extensions ?... Test de VSCodium Insiders, gros Flatpak, en salle des profs. À suivre...

  • Ajouter dans le panneau en bas d'écran l'applet de capture d'écran, à télécharger d'abord.

  • Sur le Bureau, raccourcis vers le site Pronote (browse https://0741476c.index-education.net/pronote/professeur.html en salle des profs ou sans /professeurs.html ailleurs ; le client Pronote fonctionne-t-il sous Wine ?) et en salle des profs vers un fichier partagé en ligne pour gérer de manière simple les bugs et autres soucis.

  • Via le menu, Applications au démarrage, enlever Blueman, Welcome, voire NVidia.

  • Paramètres système / Économiseurs d'écran ou Gestion de l'alimentation, pour éviter le verrouillage à la mise en veille.

  • Menu / Écran de connexion, pour activer le verrouillage du pavé numérique (si ça n'apparaît pas, vérifier que numlockx est installé), permettre une connexion manuelle, cacher la liste des utilisateurs, interdire l'utilisateur invité.

  • Relevés système (en bas à droite), ajouter les paquets de langue, pilotes de périphériques (dont propriétaires NVidia suivant le matériel), codecs multimédia, si besoin. Ignorer Timeshift.

  • Pages d'accueil des navigateurs (Pronote, site du lycée), moteurs de recherches par défaut (ex. Qwant, StartPage), vider l'historique, cocher « demander où télécharger ». Ajouter l'extension uBlock Origin. Sauf que vu les soucis sous Firefox, on a opté en attendant mieux pour ne pas utiliser de paramétrage « maison » pour l'instant...

  • Ajout d'icônes sur le panneau en bas d'écran (Menu Mint pour trouver chaque application, puis clic-droit / Ajouter au panneau) : LibreOffice Writer (voire Calc, Impress), Navigateurs, Thonny...

  • Installer si besoin l'imprimante de la salle, ex. en salle des profs socket://172.16.10.244:9100 (il semble y avoir des soucis pour imprimer à partir des PC Linux ces derniers temps, ça ne passe pas ou c'est très très lent : à investiguer... Au cas où, le masque est 255.255.255.0 et la passerelle 172.16.10.254, le serveur est monnet-dc1...

  • En double-boot, éditer /etc/default/grub, par exemple GRUB_DEFAULT=2 pour lancer Windows par défaut si c'est l'entrée n°2, GRUB_TIMEOUT = 1 après 1 seconde. Puis sudo update-grub. En mono-boot, ça semble OK avec un délai nul, par défaut.

  • Dans /etc/systemd/resolved.conf, DNS=192.168.0.97 (sans espace autour du =) et Domains=jean-monnet.local. Puis sudo systemctl restart systemd-resolved. Tester host jean-monnet.local (qui renvoie 192.168.0.140 et0.97).

  • Pour que les noms des PC soient résolus par le serveur DNS local (AD) :

    • Déposer le script update_dns_data.sh (voir annexe), rendu exécutable et lisible par tous, dans /usr/share/jeanmo/ (répertoire à créer).
    • Créer un fichier /etc/rc.local et lui donner les bons droits et propriétaire (chown root:root /etc/rc.local et chmod 700 /etc/rc.local), qui exécute nsupdate avec en entrée le retour du script précédent (là aussi, voir en annexe).
  • Installer les paquets spécifiques à l'AD si ça n'est pas fait (voir plus haut), puis intégrer le PC à l'AD : realm join -v --user=adminjm --client-software=sssd jean-monnet.local, voir les détails dans la partie Restaurer une partition (mot de passe de l'admin réseau AD, puis celui d'adminlinux). En cas de souci (non rencontré dans notre cas), sudo systemctl stop avahi-daemon.

  • Pour ne pas avoir à préciser @jean-monnet.local derrière les identifiants, éditer /etc/sssd/sssd.conf et modifier, à la fin dans la partie [domain/jean-monnet.local] : case_sensitive = preserving, fallback homedir = /home/%u _et pas %u@%d à la fin__, ainsi que use-fully-qualified-name = False au lieu de True. Puis redémarrer le service, sudo systemctl restart sssd. Vérifier avec id gervais.j (ou sur un autre compte) qu'un utilisateur AD est bien reconnu, ce qui est le cas si ses informations sont listées.

  • Pour les partages réseau : copier le script (voir annexe) partages.sh dans /usr/share/jeanmo, lui donner les droits en exécution et lecture pour tous (chmod a+rx /usr/share/jeanmo/partages.sh). Le centraliser ainsi permet une mise à jour pour tout utilisateur plus facile, si besoin.
    Créer un lanceur Partages.desktop (fichier texte, voir annexes), puis le placer dans /etc/skel/.config/autostart/. On peut aussi le créer en créant un lanceur vers la commande en mode graphique, via le Menu et Applications au démarrage, puis le récupérer dans ~/.config/autostart. Penser à placer .conkyrc dans /usr/share/jeanmo.

  • Pour démonter explicitement les partages à la fermeture (nécessaire ??), dans /etc/lightdm/lightdm.conf ajouter la règle session-cleanup-script=/usr/share/jeanmo/demontages.sh en déposant le fichier correspondant (voir annexe) au bon endroit, avec les droits d'exécution et de lecture pour tous.

  • Pour la création automatique du répertoire perso local, éditer /etc/pam.d/common-session et ajouter, entre session required pam_unix.so et session optional pam_sss.so : session required pam_mkhomedir.so skel=/etc/skel umask=0077. Ce masque assure les permissions en 700, soit rwx------.
    Copier ce qu'on veut dans /etc/skel comme modèle pour les nouveaux répertoires personnels locaux, notamment ~/.mozilla (sauf si l'on préfère un profil vierge pour Firefox à cause des problèmes rencontrés après une mise à jour), ~/Bureau où l'on aura déposé un lanceur pour récupérer les partages à nouveau au cas où, .config/chromium, .config/dconf, .config/gtk-*, .config/cinnamon, .config/Thonny... Réaffecter à tous comme propriétaire et groupe root : chown -R root:root /etc/skel/.
    Effacer .config/gtk-3.0/bookmarks (car sinon les raccourcis pour Nemo (Images...) sont nommés en dur avec adminlinux et ne fonctionnent pas ; alors qu'en l'absence de ce fichier, il est recréé automatiquement pour l'utilisateur).

  • On peut tester la connexion d'un utilisateur de l'AD, par exemple dans un terminal avec su - gervais.j (déconnexion avec [CTRL]+[D]).

  • Pour l'authentification, éditer /etc/lightdm/lightdm.conf.d/70-linumint.conf greeter-show-manual-login=true
    user-session=cinnamon
    greeter-setup-script=/usr/bin/numlockx on
    Cette dernière commande active le pavé numérique dès la connexion.
    Si l'on n'a pas d'installation de paquets ou autre en cours d'exécution, sachant que cela nous déconnecte, redémarrer le service avec sudo systemctl restart lightdm, puis tester la connexion en mode graphique.

  • Pour l'affichage du nom du PC, etc. en fond d'écran, placer le fichier de configuration (voir annexe) .conkyrc dans le dossier /usr/share/jeanmo/. Le lancement de conky avec ce fichier de paramètres est intégré au script partages.sh lancé automatiquement au démarrage. Du coup, il est un peu mal nommé, on fera mieux la prochaine fois.

  • Mises à jour et extinction automatiques, via cron : créer (comme adminlinux avec sudo) des fichiers textes dans /etc/cron.d pour chaque tâche à automatiser. Par exemple, pour arrêter le PC tous les jours à 18h, et 7h, le mettre à jour tous les jours à 17h40 et 6h40 (du coup, paramétrer dans le BIOS/UEFI le démarrage auto les jours ouvrables à 6h30 pour être sûr que les mises à jour sont bien effectuées) :

    • /etc/cron.d/shutdown avec dedans la ligne suivante :
      0 20 * * * root /usr/sbin/shutdown -h +5 "Extinction dans 5 min. () shutdown -c dans un terminal pour annuler)" && notify-send-all "Extinction dans 5 min. (shutdown -c dans un terminal pour annuler)" + idem avec 0 7 * * *...
    • /etc/cron.d/update avec dedans :
      40 17 * * * root apt update && apt upgrade -y && apt clean && apt autoremove -y && flatpack update -y && touch /UPDATE_OK || touch /UPDATE_EN_ECHEC + idem à 40 6 * * *...
      Remarque : notify-send-all est un script fourni en annexe, pour envoyer le message à tout utilisateur connecté.
  • TODO Utiliser un serveur cache proxy pour apt. _Attention à bien utiliser un serveur distinct pour chaque distribution, si l'on devait en utiliser plusieurs (Debian \(\ne\) Ubuntu...). Source : https://doc.ubuntu-fr.org/apt-cacher

    • Sur le serveur

      • Installer les paquets apt-cacher (choisir le mode démon) et apache2.
      • Éditer en sudo le /etc/apt-cacher/apt-cacher.conf, pour modifier en allowed_hosts = *.
      • Relancer le service sudo service apt-cacher start
      • Tester, dans un navigateur, à http://adresse_du_serveur:3142
      • Mettre en cache les paquets déjà présents sur le serveur
        sudo /usr/share/apt-cacher/apt-cacher-import.pl /var/cache/apt/archives
        ou en cas de souci
        sudo /usr/share/apt-cacher/apt-cacher-import.pl -r -R /var/cache/apt/archives
      • Si la connexion internet nécessite un proxy, éditer /etc/apt-cacher/apt-cacher.conf avec
        http_proxy=hostname:port
        use_proxy=1
        http_proxy_auth=username:password
        use_proxy_auth=1
      • Faire démarrer automatiquement ce PC pour qu'il fasse ses mises à jour un peu plus tôt que les autres, ex. 1/4h.
    • Sur les clients

      • Méthode conseillée, fonctionne même si le serveur apt-cacher n'est pas disponible (ordis portables, serveur arrêté...)
        Éditer /etc/apt/apt.conf.d/01proxy avec dedans
        Acquire::http::Proxy "http://adresse_du_serveur_apt-cacher:3142"; puis recharger la liste des paquets sudo apt update.

      • Méthode bof
        Éditer /etc/apt/sources.list et insérer l'adresse du serveur, par exemple
        deb http://archive.ubuntu.com/ubuntu/ hardy main restricted devient
        deb http://adresse_du_serveur_apt-cacher:3142/archive.ubuntu.com/ubuntu/ hardy main restricted

Scripts

Les annexes pour le code des différents scripts et fichiers de paramétrage utilisés sont quasi-identiques à ceux de la nouvelle installation et n'ont pas été conservés dans leur version d'origine.

Restaurer/ajouter un PC⚓︎

Un PC, voire juste une partition, à partir d'une image disque.

Outils utilisés

En juin 2024, les images ont été réalisées avec REDORescue 4.0.0 (cette distribution utilise partclone pour gérer les images disques) et son évolution RescueZilla. Elles sont stockées sur une clé bootable, différente de celle de cette distribution dédiée aux sauvegardes et à la maintenance de base des PC. L'image est celle d'un PC nommé Lnn et pas L06 par exemple, qui n'est pas inscrit à l'AD. Il faut donc renommer les PC après redéploiement.

Pas d'utilisation de FOG testée, pour l'instant.
Cela faciliterait sans doute le déploiement des images sur de nombreux PC. Mais l'automatisation semble moins poussée pour des stations Linux que Windows (un peu tristre pour un outil en Linux ; à vérifier, est-ce encore vrai ?)

  • Booter sur la clé REDORescue ou RescueZilla (en A208 et salle des profs, [Esc] ou directement [F10] pour changer l'ordre de démarrage), seule branchée sur le PC.

  • Juste après le menu de REDORescue / RescueZilla, brancher la seconde clé USB contenant l'image.

  • Choisir Restore, sélectionner la clé puis l'image, puis la partition à restaurer (ex. /dev/sda1 pour la partition Linux en A208) en vérifiant bien que c'est la bonne, avant de lancer la restauration.
    Sur REDORescue, le clavier est en QWERTY, mais setxkbmap fr dans le terminal permet de repasser en AZERTY.

  • Rebooter (3è icône sur le panneau / barre en bas d'écran sur REDORescue). Retirer les clés USB, choisir Linux au démarrage si l'on est en double-boot (appuis répétés sur [↑]). Se connecter comme adminlinux.

  • Renommer le PC :

    • sudo hostnamectl set-hostname A208-L06 (ou autre), qui met à jour /etc/hostname.

    • Éditer (ex. sudo nano ...) /etc/hosts pour mettre à jour le nom du PC (2 modifications).

    • Pour avoir un numéro d'identification unique (important pour l'enregistrement à l'AD, apparemment), sudo rm /etc/machine-id suivi de sudo systemd-machine-id-setup.

  • Inscrire le PC à l'AD :

    • sudo realm join -U adminjm jean-monnet.local, avec le mot de passe de l'utilisateur admin du réseau (adminjm, voir Pascal F. [admin AD et réseau] si besoin, ou notre compte réseau habituel comme gervais.j si Pascal nous a donné les droits pour inscrire un PC à l'AD), puis celui d'adminlinux.

    • Cette commande modifie certains fichiers de paramètres qu'il faut adapter. Éditer /etc/sssd/sssd.conf pour ne pas avoir à spécifier le domaine avec le nom des utilisateurs @jean-monnet.local :

      • fallback homedir = /home/%u (et pas %u@%d à la fin),
      • use-fully-qualified-name = False (au lieu de True).
    • sudo service sssd restart (ou sudo systemctl restart sssd, qui doit être équivalent).

    • On peut vérifier que tout est fonctionnel avec id gervais.j par exemple, cette commande listant les informations de l'utilisateur s'il est reconnu.

Créer une image d'un PC⚓︎

Créer une image disque de sauvegarde d'une partition Linux ou de tout le disque, à partir d'un PC déjà installé.

Outils

On travaille avec REDORescue / RescueZilla, là aussi, voir dans la partie précédente.

Penser à prévoir une clé USB assez grande (> 6 Go libres, à adapter au cas par cas) et avec un système de fichiers supportant les gros fichiers, comme extfat plutôt que fat32 limité à 4 Go par fichier.

  • Avant la copie d'éléments d'un compte utilisateur dans /etc/skel qui sert de modèle aux répertoires utilisateurs qui seront créés, penser à purger les historiques de navigation et autres fichiers temporaires ou inutiles avant.

  • Effacer les répertoires temporaires, désinstaller ce qu'on est sûr de ne plus utiliser.

  • Faire les mises à jour (rebooter pour vérifier que tout est OK si c'est demandé, à savoir si le noyau a été mis à jour).

  • Purger les comptes, sauf adminlinux : Menu / Utilisateurs et Groupes permet de le faire, mais on n'a réussi qu'à les supprimer un par un (et ils restent visibles dans la liste, sur le moment). Est-il possible de faire ça plus rapidement ? L'étape suivante de suppression des dossiers semble laisser des traces sans cette manip, car si l'on re-connecte l'utilisateur, certains paramètres subsistent (impression infondée due à une erreur ??). Ou plutôt exécuter sudo userdel --remove-home nom.p pour chacun (mais cela ne semble pas fonctionner dans un script) ?
    Il faut encore effacer les répertoires personnels des utilisateurs du réseau, on passe par l'explorateur de fichiers, en allant dans /home/ (clic droit / ouvrir comme administrateur), pour le faire, en prenant garde à ne pas sélectionner le répertoire adminlinux ou tout autre dossier que l'on souhaite épargner (ex. celui des collègues sur le PC LPROF).

  • Sortir le PC de l'AD : sudo realm leave jean-monnet.local.

  • Renommer le PC en SALLE-Lnn (où SALLE vaut A208 par exemple) :

    • sudo hostnamectl set-hostname A208-L06 (ou autre nom, dont A208-LPROF), ce qui met à jour /etc/hostname.

    • Éditer (ex. sudo nano ...) /etc/hosts pour mettre à jour le nom du PC (2 modifications).

  • Éteindre le PC. Booter sous REDOBackup / RescueZilla (voir partie « Restaurer une partition »), choisir Backup, puis la partition à sauvegarder et la cible (sur la seconde clé USB par exemple). Il est prudent de conserver l'image de la version précédente au cas où.

  • Attention, si l'on souhaite continuer à utiliser le PC utilisé pour créer l'image dans la foulée, ne pas oublier de renommer correctement le PC et de le ré-intégrer à l'AD (comme après la restauration d'une image disque, voir dans la partie dédiée).

Mémo / problèmes et solutions⚓︎

  • Impossible de se connecter au réseau ? (ou si l'on ne voit aucun partage réseau sur le Bureau, en utilisateur du réseau et pas adminlinux)
    Vérifier d'abord l'heure affichée par le PC. Si elle est incorrecte, c'est sûrement la cause. Sur des PC anciens, la pile CMOS peut-être à changer. En double-boot, le paramétrage par défaut de Linux est différent de celui de Windows (qui cale l'heure de la machine RTC sur l'heure local au lieu de la laisser à l'heure UTC). Du coup, quand on utilise Windows, ce dernier modifie l'heure de l'horloge interne pour se recaler et au boot suivant sous Linux, elle n'est plus correcte. Il suffit d'adopter la même convention sous Linux avec timedatectl set-local-rtc 1 (en principe sans --adjust-system-clock ; du coup, en sortie de timedatectl, RTC in local TZ passe à yes ; on inverse la situation avec la valeur 0).

  • En A208 (double-boot), impossible de booter sous Linux Mint, même via [F9] et le choix de grubx64.efi par exemple.
    C'est le cas quand l'image de Windows a été redéployée via FOG, notamment. Il faut alors restaurer la petite partition nvme0n1p1 du disque Windows.
    Autre piste : sous Windows, comme administrateur (ex. A208-X12\adminpc), après avoir branché sa clé contenant le bon fichier (ex. nommée F:), rechercher cmd, puis clic-droit / « exécuter comme administrateur » et enfin saisir bcdedit /import F:\a208-double-boot. La version a208-windows-seul devrait permettre de revenir au disque avec seulement Windows, par exemple si l'on ôtait le second disque (Linux). Ces fichiers avaient été créé avec bcdedit /export...
    Au départ, il a peut-être été nécessaire d'exécuter depuis Windows, dans cmd comme admin, bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi (en cas de souci, idem avec /deletevalue, puis bcdedit /set {bootmgr} path \EFI\Microsoft\Boot\bootmgfw.efi) ?

  • En A208 (double-boot), on peut lancer Linux Mint via [F9] et le choix de grubx64 par exemple, mais le menu GRUB qui devrait apparaître en appuyant de manière répétitive sur la touche [↑] au boot n'apparaît pas.
    Depuis Linux, efibootmgr -v indique une suite de code à 4 chiffres hexa. associés aux diverses entrées, le système les essayant dans l'ordre indiqué au démarrage. Ensuite, sudo efibootmgr -o xxxx,yyyy,zzzz permet de choisir l'ordre voulu, en remplaçant les x, etc. par les bonnes valeurs. On choisit celle(s) associée(s) à ubuntu ou EFI\ubuntu\grubx64.efi au départ, puis on peut conserver l'ordre existant pour les suivante. Au cas où, on peut désactiver une entrée avec sudo efibootmgr --bootnum xxx --inactive.

  • Toujours en A208, certaines mises à jour de Windows semblent tout mettre en vrac (plus de boot, sous aucun des deux OS). Pas de solution satisfaisante trouvée, on retire le disque SATA (Linux), on redéploie l'image Windows via FOG et on fait notre deuil de Linux sur ce PC. Vivement qu'on bascule au mono-boot...

  • On veut mettre à jour le dossier modèle pour les comptes utilisateurs à venir, /etc/skel.
    Penser à purger les comptes utilisateurs existants (autres que adminlinux bien sûr), si l'on veut que ces modifications soient appliquées à ces utilisateurs. Attention, cela efface aussi leurs répertoires perso. locaux (sur le PC, pas le partage perso. réseau nommé P: sous Windows), donc à utiliser en connaissance de cause. Sinon, un script Bash a déjà été écrit pour mettre certaines choses à jour, plutôt que d'effacer ces répertoires, il suffit de l'adapter.
    En supposant qu'on a déposé dans le répertoire local le tag.gz du contenu du dossier /etc/skel/ pris comme modèle, il suffit d'exécuter sudo tar -xf skel.tar.gz -C /etc/ qui écrasera la version existante.
    Remarque : même si l'on ne les remplit pas, les répertoires Bureau, Téléchargements, Modèles, Public, Documents, Musique (sans s), Images et Vidéos doivent être présents, même vides, sinon (voir paramètres dans ~/.config/user-dirs.dirs), l'utilitaire xdg-user-dirs-update chargé de franciser les noms de ces espaces ne les crée pas et le contenu du répertoire personnel s'affiche directement sur le Bureau.

  • Firefox se bloque au lancement. Semble se produire après une mise à jour, qui serait intervenue avant que l'utilisateur ne se connecte pour la première fois. Serait-ce évitable en mettant à jour /etc/skel/.mozilla à chaque nouvelle version de Firefox ??
    En supprimante le dossier ~/.mozilla de l'utilisateur, il perd ses raccourcis et réglages perso. mais le problème est réglé, sur ce PC et pour cet utilisateur.