Automatiser une post-installation sur une base Debian minimale

Bonjour,

Ça fait plusieurs jours que je travaille sur un projet parfaitement inutile mais qui me procure tout de même une certaine satisfaction. Je m’explique… J’ai pris l’habitude de toujours installer des images iso minimales, c’est-à dire dénuées de couche graphique et ne proposant que le strict nécessaire. C’est le cas par exemple de debian-9.5.0-amd64-netinst.iso qui installe juste ce qu’il faut. Il n’y a même pas la commande sudo.

Sur cette base austère, j’installe la couche graphique, en général openbox. J’avais déjà expliqué la procédure dans cet article.  

Ça fonctionne. C’est rôdé mais il faut se coltiner tout un tas de commandes afin de post-installer les paquets nécessaires à l’obtention d’un système d’exploitation agréable et accueillant pour l’utilisateur lambda. C’est pénible.

Il m’est donc venu l’idée d’automatiser cette tâche en créant plusieurs scripts. Attention! Il s’agit d’une modeste post-installation et absolument pas d’une tentative de pondre une nouvelle distribution. Lorsqu’on s’égare sur distrowatch, on constate bien vite que Linux est malade de cette pléthore de distributions toutes plus saugrenues les unes que les autres et qui n’ont rien d’autre à proposer qu’un fond d’écran low-cost pour se démarquer des autres. Ma distribution est une Debian, point barre! Et sur ma planète Linux idéale, il n’y aurait que quatre ou cinq distributions, pas plus! Par conséquent, cet article n’a pas d’autre prétention que de SE DÉTENDRE!!!!! MERDE À LA FIN!!!!! Hein? Jean-Luc! J’ai pas raison?

Bon… Alors, comme je l’ai dit, j’ai commencé par installer debian-9.5.0-amd64-netinst.isotéléchargeable ici même. Au départ, je me suis dit, « je vais installer mes fichiers de post-installation sur une clé USB ». C’est nul! C’est une vraie usine à gaz! J’ai donc changé mon fusil d’épaule et j’ai créé un dépôt git avec un README.md qui détaille pas à pas la procédure utilisée et qui permet de télécharger en toutes circonstances, les fichiers nécessaires. 

README.md

 En partant d’une base debian minimale, ce dépôt a pour objectif d’automatiser la post-installation d’une couche graphique avec tous les paquets nécessaires pour obtenir, au final, un système d’exploitation fonctionnel.

Prérequis

  • Créez une clé USB bootable contenant l’image iso de debian-9.5.0-amd64-netinst.iso.
  • Assurez vous de disposer d’une connexion internet filaire.
  • Installez Debian minimal sur votre ordinateur. Durant l’installation, vous allez vous retrouver devant cet écran :

Selection_133

  • S’il y a des astérisques entre les crochets, supprimez ces derniers en pressant la touche « espace ».
  • Lorsque l’installation sera terminée, vous allez vous retrouver devant une simple console tty qui va vous demander votre identifiant et votre mot de passe. Obéissez.
  • Ensuite, pour Debian-Minimal prière d’entrer cette commande qui permet de mettre à jour les paquets et de compresser/décompresser un dossier : 

su root -c « apt update && apt install zip »

  • Renseignez le mot de passe du compte root.
  • Contrairement à su sans argument, cette commande ne vous laisse pas en « root ». Lorsqu’elle est exécutée, vous redevenez utilisateur. C’est très important!
  • Entrez, sur une seule ligne, cette commande qui va télécharger un dossier compressé de mon dépôt git:

wget – -no-check-certificate https://framagit.org/Ordinosor/post-installation/-/archive/master/post-installation-master.zip.

  • Elle est un peu longue, je vous l’accorde, mais elle fonctionne en toute circonstance. Je précise que normalement, il y a devant le « no » deux petits tirets sans espace. J’ai été obligé de rajouter un espace sinon cela donnait l’impression qu’il n’y avait qu’un seul tiret, d’où risque d’erreur.
  • Décompressez le dossier et déplacez les fichiers dans votre répertoire courant grâce à cette commande double :

unzip post-installation-master.zip && mv post-installation-master/* ~

  • Prenez garde de ne pas omettre l’astérisque et le tilde! L’astérisque permet de copier le contenu du répertoire post-installation-master dans votre répertoire /home/utilisateur représenté ici par un simple tilde (~). Il y a un espace entre ces deux symboles.

Post-installation

  • Entrez dans votre console, la commande double ci-après : 

             chmod +x ./post_install.sh && ./post_install.sh

  • Elle confère les droits d’exécution au fichier post_install.sh avant de lancer ce dernier.
  • Le script est lancé. La procédure de post-installation démarre… Il ne vous reste plus qu’à patienter avec un café ou un thé.
  • Après avoir entré en tout et pour tout, quatre malheureuses lignes de commande, voici à quoi ressemble l’ébauche du produit semi-fini :

bureau 1_001

To-do list

  • Commenter le code. (Edit du 27.10.2018 : Fait)
  • Simplifier le code. (Edit du 29.10.2018 : en cours)
  • Rajouter une fenêtre de déconnexion.
  • Remplacer nitrogen par feh qui offre des possibilités de configuration beaucoup plus intéressantes. (Edit du 27.10.2018 : Fait)

30 commentaires sur “Automatiser une post-installation sur une base Debian minimale

Ajouter un commentaire

    1. Bonjour Eliot,
      Merci pour votre commentaire. J’aime bien ces installations minimales car elles permettent ensuite de construire une distribution très personnalisée et légère. Et puis, il y a aussi un côté ludique. Mon prochain test sera avec une raspberry Pi.
      Cordialement.

      J'aime

  1. Bonjour,
    merci pour ce tuto, je vais surement me servir de ce script pour me refaire un petit pc tout propre et tout léger…
    Mais pouvez-vous m’éclairer sur ce que fait exactement le script « plank_tint2_install.py » ?
    Est-ce obligatoire de le lancer ?

    J'aime

    1. Bonjour Vincent,

      Il s’occupe de l’installation de plank et tint2. Pourquoi ce script et pourquoi en python? Parce que j’avais besoin de modifier des fichiers pour configurer plank et tint2. En Python, je maitrise le travail dans les fichiers (lire, écrire) alors qu’en bash, je suis incapable de me servir de la commande « sed » pourtant bien utile!

      Logiquement, j’aurais du écrire un seul script en bash. Mélanger python et bash n’est pas l’idéal. Je modifierai les scripts lorsque je maitriserai la commande sed.

      J'aime

      1. Oui, c’est juste pour la configuration, pour ne pas que les icones de plank chevauchent la barre tint2. j’ai donc positionné la barre tint2 en haut.
        Pour ce qui est de plank, je n’arrive pas à trouver le fichier de configuration qui permet de disposer la barre d’icones à gauche ou en haut ou à droite, et de sélectionner le thème. J’ai cherché partout. je ne l’ai pas trouvé. C’est incroyable.

        J'aime

  2. Bonsoir intéressant cependant les directives fourni par preseed font cela nativement.

    Il serait plutôt intéressant de convertir tout le script en preseed. Et de le loader via le boot.

    /Richard

    Linux user/admin depuis plus de 20 ans

    J'aime

    1. Bonsoir Richard,

      Et merci pour le conseil. Mon but serait en effet de l’inclure dans le boot mais j’avance pas à pas avec mes connaissances acquises ici et là. Je bricole un peu. Je suis donc très heureux lorsque quelqu’un me donne de bons conseils pour progresser. Je vais de ce pas regarder de plus près à quoi ressemble preseed.
      Benoît

      J'aime

  3. Preseed est la méthode pour faire le setting des distrib a base debian.

    Quand tu boot en net, tu as le menu de paramétrage, et a la 3 ème ou 4emem ligne ( je fais de mémoire, donc pas certain) il te dit charger un fichier preseed.

    C est ça et tu peux le envoyer via séquence de boot, pxe, ou même http

    J'aime

  4. La configuration de Plank se trouve dans le fichier net.launchpad.plank.gschema.xml, qui se trouve dans le répertoire /usr/share/glib-2.0/schemas/ ou https://git.launchpad.net/plank/tree/data/net.launchpad.plank.gschema.xml.in.in?h=0.11&id=0.11.4

    Tu peux configurer Plank à partir de l’utilitaire dconf / gsettings(dans le cas d’un configuration à l’aide d’un script).

    gsettings list-schemas | grep plank (par exemple pour vérifier si ce fichier existe)

    gsettings list-recursively net.launchpad.plank (pour connaître la liste des différentes options, tu verras celles que tu as besoin de modifier).

    Par exemple pour pour modifier une valeur :

    gsettings set net.launchpad.plank theme ‘Transparent’

    Quelque fois les distributions apportent déjà des pré-réglages, on retrouve les paramètres dans le (ou les fichiers) .gschema.override.

    dconf / gsettings créent une « base de données » binaires dans le dossier .config/dconf/ donc il vaut mieux éviter de copier ce fichier pour conserver les réglages.

    Tu peux alors soit créer un fichier .gschema.override (il devra être placé dans le dossier /usr/share/glib-2.0/schemas/), soit créer un profile dconf (c’est ce que je préfère utiliser, car si tu as plusieurs utilisateurs tu peux dans ce cas empêcher qu’un utilisateur modifie les préférences d’un logiciel), et ce fichier est lu en tout premier.

    J'aime

    1. Bonjour Olivier,
      Merci beaucoup, ça fonctionne très bien et ça va être un jeu d’enfant de l’inclure dans le script car je voulais absolument que plank soit directement lancé avec le thème ‘Transparent’ et le positionnement à gauche. Très pratique cette commande gsettings.

      Je me permets juste de préciser que cette commande ne fonctionnait pas :

      gsettings set net.launchpad.plank theme ‘Transparent’

      J’ai cherché un peu sur internet et je pense que la commande exacte est :

      gsettings set net.launchpad.plank.dock.settings:/net/launchpad/plank/docks/dock1/ theme Transparent

      En tout cas, chez moi ça fonctionne.

      J'aime

  5. Dans le code, je lis :

    su -l root -c « reboot » # On redémarre l’ordinateur.
    # C’est obligatoire pour prendre en compte l’ajout de l’utilisateur au groupe sudo

    Donc une fois l’ordinateur rebooté il faut relancer le sript pour finir la post install ?

    J'aime

    1. Oui, il faut relancer ./post_install.sh
      Ce soir ou demain, je mettrai en ligne, la procédure pour post-installer sur une base Ubuntu Server. C’est plus simple. Il n’y a pas besoin de relancer car sudo est installé nativement. J’ai fait le test. Ça fonctionne.

      J'aime

    2. Autre chose. Plank ne charge qu’une seule icône : « applications ».
      C’est volontaire de ma part. Il suffit de choisir les applications qu’on veut ouvrir et de les épingler au dock en cliquant droit sur l’icône de l’application ouverte.

      Par la Suite, je vais créer une fenêtre de lancement en python pour expliquer tout ça. Je vais essayer d’apporter des améliorations Petit à Petit.

      J'aime

  6. Bon je sais que tu n’as pas terminé tes tests mais j’ai fais une install d’une Debian avec ton script,
    tout le début c’est bien passé mais j’arrive sur un écran sans fond d’écran ni Plank ni Tint2 de lancé.
    En fait j’ai l’impression qu’il n’a pas réussit cette partie :

    sudo apt autoremove # Nettoyage

    sudo sed -i « s/bottom center horizontal/top center horizontal/g » /etc/xdg/tint2/tint2rc
    sed -i « s/bottom center horizontal/top center horizontal/g » /home/$user/.config/tint2/tint2rc

    # Choix des programmes lancés au démarrage d’Openbox
    {
    echo « plank & »
    echo « compton & »
    echo « feh –bg-scale /home/$user/fedora_wallpaper.jpg & »
    echo « tint2 & »
    echo « redshift & »
    } > /home/$user/.config/openbox/autostart # Écriture dans le fichier texte

    J'aime

    1. Essaye de refaire l’installation mais sans désinstalller ce que tu as déjà fait. C’est à dire tu télécharges à nouveau le fichier (wget …). Tu le décompresses (unzip…) et tu relances le script (chmod +x ./post_install.sh && ./post_install.sh). Ça ne va pas durer longtemps car tout est déjà presque installé. Les commandes sont déjà dans le terminal. Tu les retrouves en utilisant les flèches de ton clavier (flèche vers le haut ou vers le bas)

      Est-ce que tu as un menu openbox quand tu cliques droit sur ton fond d’écran vide?

      J'aime

      1. « Essaye de refaire l’installation mais sans désinstalller ce que tu as déjà fait. »

        – Oui c’est ce que j’ai fais mais même résultat :/

        « Est-ce que tu as un menu openbox quand tu cliques droit sur ton fond d’écran vide? »

        – Oui j’ai bien un menu avec « Terminal emulator » et « web browser ».

        – J’ai essayé de créer moi même le fichier autostart.sh dans .config/openbox/ mais rien ne se lance au démarrage…

        J'aime

      2. Donc, hier soir j’ai déplacé quelque Chose qu’il ne fallait pas… Je vais regarder ça ce soir. Ce n’est pas « autostart.sh » mais « autostart ». Je crois que c’est un fichier texte, pas un fichier bash, ce qui explique que rien ne se lance. Renomme le fichier en « autostart » et redémarre.

        J'aime

    2. Bonsoir Vincent,

      Pour info, j’ai finalisé le script qui est beaucoup plus simple maintenant, et j’ai rajouté un autre script pour installer sur une base Ubuntu Server. Tout est dans l’article que je viens de modifier.
      Prochaine étape, utiliser des fenêtres « dialog » et rajouter des fenêtres popup au démarrage pour expliquer à l’utilisateur comment enrichir le dock plank etc…

      J'aime

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.

Créez un site ou un blog sur WordPress.com

Retour en haut ↑

%d blogueurs aiment cette page :