Bonsoir,
sur la base d'une MINT (légèrement) modifiée pour le projet NIRD j'essaye de bricoler un mécanisme d'installation le plus automatique possible. Testé sur machines réelles et en machine virtuelle, ça semble commencer à tomber en marche.
principe : un script bash permet, après un minimum d'interactivité, le lancement de l'insatll par ubiquity
Reste un point sur lequel je bloque : la fenêtre de sélection du disque d'installation apparait quoi que je fasse.
Est-ce que quelqu'un sait comment la contourner ?
Le script :
#/bin/bash
# Fichier et répertoire
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SEED_FILE="$SCRIPT_DIR/test2.seed"
if [ ! -f "$SEED_FILE" ]; then
echo "ERREUR : fichier $SEED_FILE introuvable (doit être dans le même répertoire)."
exit 1
fi
# détection du disque interne en exluant les clés USB etc.
DISK=$(lsblk -d -o NAME,TYPE,RM | grep "disk" | grep " 0$" | head -1 | awk '{print "/dev/"$1}')
if [ -z "$DISK" ]; then
echo "ERREUR : aucun disque interne détecté. Abandon."
exit 1
fi
DISK_INFO=$(lsblk -d -o NAME,SIZE,MODEL | grep "$(basename $DISK)" | awk '{print $2, $3, $4, $5}')
# Nom unique (précaution utile ?)
ALEA=$(head -c 3 /dev/urandom | xxd -p | tr '[:lower:]' '[:upper:]')
HOSTNAME="NIRD-$ALEA"
# Avertissement avec sauve qui peut
echo "Installation automatique de linux NIRD"
echo ""
echo " Disque cible : $DISK"
echo " ($DISK_INFO)"
echo " Nom provisoire du poste : $HOSTNAME"
echo ""
echo "ATTENTION : TOUTES LES DONNÉES SERONT EFFACÉES (mode bourrin)"
for i in 10 9 8 7 6 5 4 3 2; do
echo -ne " Démarrage dans $i secondes... [Ctrl+C pour annuler] \r"
sleep 1
done
echo -ne " Démarrage dans 1 seconde... [Ctrl+C pour annuler] \r"
sleep 1
echo ""
echo " Trop tard, c'est parti..."
echo ""
# nettoyage du disque
sudo swapoff -a 2>/dev/null
sudo umount ${DISK}* 2>/dev/null || true
sudo wipefs -a $DISK
sudo sgdisk --zap-all $DISK
sudo dd if=/dev/zero of=$DISK bs=1M count=100 2>/dev/null
sudo partprobe $DISK 2>/dev/null || true
sleep 2
# copie du preseed et edition du fichier pour le disque détecté + hostname
cp "$SEED_FILE" /tmp/preseed-auto.seed
sed -i "s|/dev/DISK|$DISK|g" /tmp/preseed-auto.seed
sed -i "s|HOSTNAME|$HOSTNAME|g" /tmp/preseed-auto.seed
# Chargement et lancement
sudo debconf-set-selections /tmp/preseed-auto.seed
sudo ubiquity --automatic gtk_ui
et le fichier test2.seed :
# L10n
d-i debian-installer/locale string fr_FR
d-i time/zone string Europe/Paris
d-i console-setup/layoutcode string fr
# Codec non free
ubiquity ubiquity/use_nonfree boolean true
# passw demandé sur les postes réels
# à tester avec une vraie machine
# Clavier Fr
d-i console-setup/ask_detect boolean false
d-i keyboard-configuration/layoutcode string fr
# Disque d'nstallation : la chaine /dev/DISK sera remplacée à la volée
partman-auto partman-auto/method string regular
partman-auto partman-auto/init_automatically_partition select Guided - use entire disk
partman-auto partman-auto/disk string /dev/DISK
partman-lvm partman-lvm/device_remove_lvm boolean true
partman-lvm partman-lvm/confirm boolean true
partman-lvm partman-lvm/confirm_nooverwrite boolean true
partman-md partman-md/device_remove_md boolean true
partman-md partman-md/confirm_nooverwrite boolean true
partman partman/confirm boolean true
partman partman/confirm_nooverwrite boolean true
partman-partitioning partman-partitioning/confirm_new_label boolean true
partman-partitioning partman-partitioning/confirm_write_new_label boolean true
grub-installer grub-installer/bootdev string /dev/DISK
# compte utilisateur
d-i passwd/user-fullname string prn
d-i passwd/username string prn
d-i passwd/user-password password censuré
d-i passwd/user-password-again password censuré
# non ce n'est pas le vrai mot de passe et il y a moyen de faire ça propre en l'encodant
d-i passwd/auto-login boolean false
# nom provisoire du poste
d-i netcfg/get_hostname string HOSTNAME
ubiquity est lancé correctement et les différentes étapes se déroulent de façon automatique sauf la fenêtre de sélection du disque
Edit : c'est cette fenêtre que je veux rendre silencieuse

# markdown
Posté par BAud (site web personnel) . Évalué à 4 (+2/-0). Dernière modification le 28 mai 2026 à 01:13.
utilise déjà Markdown avec la balise de code ```bash en passant une ligne, ça t'évitera le {mathjax} sur la ligne :
tu peux éditer ton entrée de forum pour corriger (il y a une autre ligne qui en bénéficiera)
ensuite : à quelle commande apparaît
[^] # Re: markdown
Posté par cévhé . Évalué à 2 (+0/-0).
C'est fait, merci pour le conseil.
La fenêtre apparait à la toute fin du script : c'est pendant le déroulement d'
ubiquity[^] # Re: markdown
Posté par BAud (site web personnel) . Évalué à 3 (+1/-0).
merci, c'est déjà plus lisible ;-)
plutôt qu'utiliser ubiquity qui est par nature une interface graphique, peut-être utiliser subiquity https://github.com/canonical/subiquity (la version pour serveur) ?
je n'ai pas trouvé de doc' très prolixe sur le fonctionnement de ubiquity…
hormis
https://wiki.ubuntu.com/Ubiquity qui correspond plutôt à des spécifications
https://canonical-subiquity.readthedocs-hosted.com/en/latest/ pour subiquity…
ubiquity étant remplacé par flutter depuis ubuntu 23.04 ? (ou avant ?) ya cette doc' apparemment traduite (imparfaitement sans doute par IA) https://fr.ubunlog.com/subiquity-ubuntu-pr%C3%A9pare-un-nouvel-installeur-que-nous-pouvons-voir-dans-ubuntu-21-10/
c'est peu clair sur wikipedia https://en.wikipedia.org/wiki/Ubiquity_(software) => c'est subiquity qui a été réécrit pour remplacer ubiquity ?
bref, une page
mance serait pratique tout de même ;-) il y a sans doute un mode "silencieux" permettant d'automatiser l'intégralité sans fenêtre inopinée.[^] # Re: markdown
Posté par cévhé . Évalué à 2 (+0/-0).
Merci pour ton retour, je vais regarder ça.
quelques remarques et réponses :
Je voulais essayer de m'éloigner le moins possible de l'existant. Le projet NIRD (lien plus haut) est tout petit et mon idée était d'apporter un plus sans surcharger le travail des autres contributeurs. D'où la démarche mais peut-être que subiquity est préférable et pas forcément plus compliqué à mettre en œuvre
C'est le paramètre
--automaticqui est prévu pour ça sauf que si le contenu du fichier preseed est incomplet (ce que je suppose dans le cas présent) ubiquity repasse en mode interactif.[^] # Re: markdown
Posté par BAud (site web personnel) . Évalué à 2 (+0/-0).
bin, de ce que j'en ai compris : ton paramètre de disque choisi n'est pas le bon, donc il est demandé en interactif => si tu fiabilises cela, la fenêtre n'apparaîtra plus…
t'as où la doc' pour constituer ce fichier pre-seed ?
[^] # Re: markdown
Posté par cévhé . Évalué à 2 (+0/-0).
Justement, pas trouvé de doc synthétique, claire et complète sur le sujet. D'où un fichier constitué par des bribes pêchées ça et là et des beaucoup d'essais erreurs
J'ai essayé chatgpt et claude.ai mais sans succès : au deuxième ou troisième prompt les propositions deviennent tellement complexes (et sans aucune trace sur le web quand j'ai essayé de verifier) que c'en est pas crédible.
(ps : pour les lignes complexes (enfin trop pour moi) du bash du type :
j'ai demandé à claude.ai. Tout seul il me faut deux heures pour y arriver :-(
[^] # Re: markdown
Posté par MicP . Évalué à 3 (+2/-0). Dernière modification le 29 mai 2026 à 09:41.
Bonjour
Tu obtiendrais le même résultat
en remplaçant la ligne de commande ci-dessous :
… par celle là :
Tu peux aussi remplacer la ligne de commande suivante :
… par celle là :
… et dans ce royaume, ceux qui y voient un peu plus clair sont parfois très mal vus.
[^] # Re: markdown
Posté par MicP . Évalué à 2 (+1/-0). Dernière modification le 29 mai 2026 à 09:54.
Pas eu le temps de corriger un oubli dans mon message précédent.
J'aurais aimé remplacer la ligne suivante :
… par la suivante :
… et dans ce royaume, ceux qui y voient un peu plus clair sont parfois très mal vus.
[^] # Re: markdown
Posté par cévhé . Évalué à 3 (+1/-0).
Merci…
Toute la différence entre l'intelligence artificielle et humaine en deux lignes de code !
[^] # Re: markdown
Posté par BAud (site web personnel) . Évalué à 6 (+4/-0).
je me demandais ce à quoi correspondait la colonne
RMet lemanest peu prolixe sur cette partie (pour moi les exemples d'utilisations sont généralement plus parlant, comme correspondant à des cas d'usage classique) :/ La commandelsblk --list-columnsfournit une réponse :pour le
-Qcomme query (ou--filter), cette fonction de sélection est indiquée comme expérimentale, ça me semble pérenne.Le
RM==0enlève bien les clés USB qui sont à 1 (logique).Le
TYPE='disk'enlève le lecteur/graveur DVD (TYPE rom) et les partitions (TYPE part).S'il y a deux disques non amovibles (sda et sdb), je ne sais pas trop quel critère permettra de les distinguer et lequel il faudrait retenir : j'aurais tendance à conserver le
| head -1pour s'en remettre au hasard ('fin l'ordre de la liste) et n'en garder qu'un :pdans les deux cas, il vaut mieux relire et comprendre (puis documenter) pour obtenir le résultat souhaité.
Bon, ce n'est pas ça qui nous donne une bonne doc' pour le pre-seed pour autant :/
[^] # Re: markdown
Posté par cévhé . Évalué à 3 (+1/-0).
Sur mon portable debian 12.13 et sur une mint en MV, ni -Q ni --filter ne sont reconnus :-(
[^] # Re: markdown
Posté par BAud (site web personnel) . Évalué à 2 (+0/-0).
pérenne c'est pour la suite, pas le passé :D
avec util-linux en 2.42 sur Mageia 10 (à venir) pas de souci
en Bookworm forcément, en 2.38 ça ne le fait pas t'encore (bon, il m'en reste… mais, tout le monde est passé à Trixie /o\)… tu comptes le lancer sur une Mint récente de toute façon, non ? skoi MV ? (Mega Vintage ?)
[^] # Re: markdown
Posté par cévhé . Évalué à 2 (+0/-0).
Oui faut que je mette à jour mon portable ;-)
MV pour « machine virtuelle » pas si vintage : 22.3 LTS
[^] # Re: markdown
Posté par MicP . Évalué à 1 (+0/-0). Dernière modification le 29 mai 2026 à 21:01.
J'utilise la version stable (version 13) de debian
… et dans ce royaume, ceux qui y voient un peu plus clair sont parfois très mal vus.
[^] # Re: markdown
Posté par MicP . Évalué à 2 (+1/-0).
Un autre oubli de ma part, merci de l'avoir signalé. :)
… et dans ce royaume, ceux qui y voient un peu plus clair sont parfois très mal vus.
[^] # Re: markdown
Posté par BAud (site web personnel) . Évalué à 2 (+0/-0).
eh oh einh bon, faudrait pas te prendre pour une IA non plus
l'oubli est tant le fait de l'un comme de l'autre !
la compréhension en revanche…
# et sinon, y a les unattended install ?
Posté par NeoX . Évalué à 3 (+0/-0).
plutot que de "reinventer", tu passes juste un fichier de configuration à l'installeur par defaut, ca repond aux questions qu'il aurait normalement du te poser, et il fait l'installation pour toi
[^] # Re: et sinon, y a les unattended install ?
Posté par cévhé . Évalué à 3 (+1/-0).
Que'est-ce que tu entends par unattended install ? C'est bien ce que fait ubiquity et le fichier de preseed, non ?
Est-ce qu'il y a une autre technique pour le même résultat ?
[^] # Re: et sinon, y a les unattended install ?
Posté par NeoX . Évalué à 4 (+1/-0).
oui voila le fichier "preseed"
mais du coup pourquoi tu fais un script, plutot que d'utiliser simplement le preseed ?
[^] # Re: et sinon, y a les unattended install ?
Posté par cévhé . Évalué à 3 (+1/-0). Dernière modification le 31 mai 2026 à 22:08.
Plusieurs raisons, peut-être pas toutes pertinentes, donc je les expose ici à vos critiques.
Le but de tout ça est de faciliter le déploiement de cette distri linux prévue pour des établissements scolaires. Si j'ai la chance d'avoir un parc assez homogène, ce n'est pas le cas de tous les bahuts.
Or dans le fichier preseed il y a le nom du disque qui peut changer : /dev/sda ou /dev/nvme0, etc.
Il y a aussi l'hostname qu'il faut définir dans le preseed. Comme de toute façon je vais les renommer lors de l'intégration au domaine, ce n'est peut-être pas critique mais que se passe-t-il si j'en installe plusieurs en même temps ? Est-ce gênant d'en avoir plusieurs, hors domaine, avec le même nom ? Dans le doute je préfère avoir un nom un peu aléatoire.
Le script va donc, avant de lancer l'installation avec le preseed, repérer le nom du disque et choisir un hostname. Deux lignes de sed adaptent le fichier preseed.
Autre bidouille : ubiquity pose des questions différentes suivant que le disque est déjà utilisé (par windows ou par une installation linux précédente) ou vide et je ne suis pas arrivé à trouver les directives qui conviennent dans tous les cas alors j'ai fait au plus simple : le script efface le disque et il n'y a alors plus qu'une seule configuration pré-installation. C'est complètement bourrin, mais ça semble fonctionner.
J'espère avoir répondu à tes interrogations mais mes « solutions » sont peut-être complètement à côté de la plaque et il y a peut-être plus efficace ou plus propre.
Dans tous les cas, merci à tous !
[^] # Re: et sinon, y a les unattended install ?
Posté par NeoX . Évalué à 4 (+1/-0).
ah ok, le script c'est pour achever de remplir un preseed… OK
utilise un dmidecode pour choper le numero de serie de la machine,
normalement il ne devrait pas y avoir 2 n° de serie identique :D
il ne fournit pas une option install en effacant le disque ?
etrange cela vu qu'en graphique il y a l'option.
[^] # Re: et sinon, y a les unattended install ?
Posté par cévhé . Évalué à 2 (+0/-0).
Pas trouvé… ou peut-être que j'ai eu un moment la bonne commande mais avec la toute dernière trouvée hier je ne suis pas arrivé à faire la différence entre la fenêtre qui s'affiche parce que le preseed ne la valide pas et la fenêtre qui s'affiche parce que les commandes sont incomplètes ou pas les bonnes :-(
Les tâtonnements ce n'est pas très efficace pour comprendre ce que l'on fait :-(
# Je pense que j'ai trouvé
Posté par cévhé . Évalué à 4 (+2/-0).
ici : https://askubuntu.com/questions/1100876/how-do-i-get-past-the-finish-partitioning-and-write-changes-to-disk-during-aut
en ajoutant la ligne
ça semble OK, du moins en machine virtuelle.
Reste à tester sur un vrai poste, ce sera pour lundi au collège.
[^] # Re: Je pense que j'ai trouvé
Posté par BAud (site web personnel) . Évalué à 3 (+1/-0).
En espérant que tu puisses rajouter
[Résolu]dans le titre de ton entrée de forum \o/(et répond à NeoX< ci-dessus tout de même :p)
[^] # Re: Je pense que j'ai trouvé
Posté par NeoX . Évalué à 3 (+0/-0). Dernière modification le 31 mai 2026 à 23:05.
je vais dire une betise, mais tu as verifié que tes commandes sont encore valable
tous les tutos qui parle de partman, preseed et ubuntu sont de 2010 à 2018, depuis y a des trucs surement plus efficaces ?
exemple 'autoinstall' ou 'cloud-init'
https://canonical-subiquity.readthedocs-hosted.com/en/latest/intro-to-autoinstall.html
[^] # Re: Je pense que j'ai trouvé
Posté par cévhé . Évalué à 2 (+0/-0).
Je suis parti sur l'utilisation de ubiquity parce que c'est l'installeur prévu sur le l'image live utilisée.
Ce n'est peut-être pas la solution la meilleure, comme peut-être d'autres choix techniques, mais initialement ce projet a été lancé en catastrophe pour que les établissements scolaires des hauts de France touchés par la cyberattaque du début d'année puissent quand même un peu fonctionner.
Mais merci quand même, je vais garder un œil sur le lien proposé
Envoyer un commentaire
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.