# linuxinstaller Le but de ce projet est de fournir : * une image iso amorçable, permettant d'installer rapidement des ordinateurs basés sur Linux Mint * un outil de configuration de ces ordinateurs qui se lance au premier démarrage * la possibilité de relancer manuellement cet outil de configuration ultérieurement de manière à relancer la configuration initiale ou d'autres options ## Création de l'image iso * Sur un poste linux-mint, installer le logiciel [Cubic](https://github.com/PJ-Singh-001/Cubic) : ```bash sudo apt-add-repository universe sudo apt-add-repository ppa:cubic-wizard/release sudo apt update sudo apt install --no-install-recommends cubic ``` * Télécharger l'image linux mint officielle (édition cinnamon) * Cloner ce pojet ```bash git clone https://git.libretic.fr/libretic/linuxinstaller.git ``` * Adapter le projet selon ses besoins, notamment : * `cubic/vars/main.yml` * `ansible/vars/main.yml` * les templates pour cubic dans `cubic/templates` * Se placer dans le dossier `cubic` de ce projet et exécuter la génération des fichiers preseed qui seront utiles plus tard, et qui se trouveront dans le dossier `generated` après exécution de la commande : ```bash cd linuxinstaller/cubic python3 -m venv preseed-venv . preseed-venv/bin/activate pip install ansible passlib ansible-playbook configure-preseed.yml ``` * Lancer cubic et créer un nouveau dossier projet ![Dossier de projet Cubic](doc/cubic-folder.png) * Paramétrage de la personnalisation de l'image ; choisir l'image linux mint téléchargée et personnalisé comme suit : ![Écran de personnalisation de l'image](doc/original_disk_customization.png) * On arrive sur un shell qui permet de taper des commandes de personnalisation ![Shell](doc/shell.png) * Dans ce shell, taper les commandes suivantes : ```bash apt update apt install -y git python3-poetry ``` * S'il est nécessaire d'ajouter un (ou plusieurs) certificat d'autorité de certification pour utiliser un repo git, l'ajouter dans, par exemple `/usr/local/share/ca-certificates/nom_de_mon_autorite.crt` puis faire : ```bash apt install -y ca-certificates /usr/sbin/update-ca-certificates ``` * Installer l'outil linuxinstaller dans /opt ```bash cd /opt git clone https://git.libretic.fr/libretic/linuxinstaller.git cd linuxinstaller cp config.yml.example config.yml ``` * Adapter le contenu du config.yml pour ses besoins. * S'il est souhaité qu'au premier démarrage de la machine, après installation, des playbooks se lancent automatiquement, leur donner le tag `firstboot` puis lancer : ```bash ./linuxinstaller.sh --firstboot ``` * Une fois exécutées les commandes ci-dessus, passer à l'écran qui suit, qui propose de modifier la liste des packages qui doivent être supprimés dans l'image. Ne rien changer. * L'écran suivant propose de modifier les options de démarrage. Dans l'onglet preseed de cet écran, créer plusieurs fichiers et y copier/coller les contenus des mêmes fichiers générés par ansible : * `autoinstall-nvme.ks` * `autoinstall-sda.ks` * `autoinstall-vda.ks` ![L'onglet preseed une fois renseigné](doc/preseed.png) * Dans l'onglet Boot, remplacer les contenus des fichiers grub.cfg et live.cfg par les contenus des fichiers générés par ansible : ![L'onglet boot une fois renseignée la zone grub.cfg](doc/boot-grub.png) ![L'onglet boot une fois renseignée la zone live.cfg](doc/boot-live.png) * Les écrans suivant permettent de valider le taux de compression puis de générer l'image. * Une fois générée, on obtient un écran de synthèse : ![Synthèse de l'image construite](doc/last.png) * Le bouton "test" permet de tester l'image obtenue, mais il est préférable de tester avec virt-manager pour une meilleure simulation de ce qu'on obtiendra après sur un ordinateur. * Une fois obtenu le résultat souhaité, il ne reste plus qu'à déposer l'image dans une clé usb (conseil : utiliser [Ventoy](https://www.ventoy.net)), puis amorcer un PC avec cette image. ## Installation d'un ordinateur avec l'image iso obtenue ## Utilisation du menu linuxinstaller * Pour lancer linuxinstaller sans pull depuis le repo (développement) ```bash NOPULL=0 ./linuxinstaller.sh ```