linuxinstaller/README.md
2024-10-28 14:10:51 +01:00

121 lines
4.1 KiB
Markdown

# 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
```