Exécutez vos propres scripts au démarrage avec autorun


Aperçu du système d’autorun

La fonctionnalité autorun permet de lancer automatiquement des scripts au démarrage du système. Chaque script d’autorun peut s’occuper d’une tâche. Par exemple, vous pouvez créer un script de sauvegarde qui fait une sauvegarde d’une base de données ou autre pour nettoyer le système, …

Par défaut, le script autorun doit être copié dans le root du cédérom, hors de l’image sysrcd.dat compressée, mais d’autres sources sont possibles: disquette, partition, partage réseau. Le script peut être nommé autorun si il est seul. Sinon vous pouvez les nommer autorun0, autorun1… Dans ce cas, l’option autoruns= peut être précisée au démarrage pour ne pas exécuter tous les scripts numérotés. Par exemple l’option rescuecd autoruns=3,4,9 demander l’exécution des scripts suivants uniquement: autorun, autorun3, autorun4, autorun9.

Si vous voulez utiliser une disquette ou une source réseau pour le fichier autorun, vous devrez l’option ar_source pour la préciser.

La fonctionnalité d’autorun permet d’exécuter des taches de façon automatique avec SystemRescueCd. Un chapitre du manuel explique comment utiliser autorun pour exécuter des scripts automatiquement pour gerer des serveurs distants qui sont dans un datacenter.

Liste des options proposées par autorun

Les options autorun suivantes doivent être données au démarrage dans la ligne de commande de démarrage.

  • ar_source=xxx: définit l’endroit ou les scripts autorun a exécuter sont stockés. Cela peut être le dossier racine d’une partition (ex: /dev/sda1), un dossier nfs (ex: nfs://192.168.1.1:/path/to/scripts), un dossier samba (ex: smb://192.168.1.1/path/to/scripts), ou un dossier sur un serveur web (ex: http://192.168.1.1/path/to/scripts).
  • autoruns=[0-9]: liste des numéros des scripts autorun a exécuter séparés par des virgules. Par exemple, l’option autoruns=0,2,7 entraînera l’exécution des scripts suivants: autorun0, autorun2, autorun7. L’o[tion autoruns=no désactive tous les scripts autorun ayant un numéro.
  • ar_nowait: ne pas attendre que l’utilisateur appuie sur Entrée a la fin de l’exécution des scripts.

Les options suivantes sont supportées depuis SystemRescueCd-1.0.0:

  • ar_ignorefail: continue l’exécution des scripts même si un script autorun a échoué (retourne un code différent de zéro)
  • ar_nodel: ne pas effacer la copie locale du script autorun située dans /var/autorun/tmp après l’exécution.
  • ar_disable: désactiver complètement l’exécution des scripts autorun y compris le script autorun qui ne porte pas de numéro.

Règles d’exécution des scripts

Au démarrage, une liste des emplacements sont vérifiées pour détecter la présence de scripts autorun.

  • Si l’option ar_source= a été utilisée au démarrage, les scripts seront charges a partir de l’emplacement indique en paramètre de cette option. Voici les types de valeurs possibles pour ar_source:
    • rescuecd ar_source=/dev/fd0 pour charger le script depuis une disquette
    • rescuecd ar_source=/dev/sda2 pour charger le script depuis une partition du disque dur (ici /dev/sda2)
    • rescuecd ar_source=nfs-server:/nfs/exported/directory pour charger le script depuis un serveur nfs
    • rescuecd ar_source=//samba-server/sharepour charger le script depuis un serveur smb (il est recommandé qu’il soit anonyme)
    • rescuecd ar_source=http://web-server/adminscript/pour un script sur un serveur web. (nécessite SystemRescueCd-1.0.0 ou plus récent)
  • Si l’option ar_source= n’a pas été utilisée, les dossiers suivants seront examiner afin d’y chercher des scripts autorun a exécuter:
    • La racine du cédérom (/mnt/cdrom/).
    • Le répertoire du superutilisateur (/root/).
    • Le répertoire /usr/share/sys.autorun

Si les fichiers autorun sont trouvés dans un des emplacements, alors il seront exécutes et la recherche de scripts s’arrête.

Dans chaque emplacement, il y a deux possibilités de mode opératoire:

  • Simple: si un script nommé autorun est trouvé, il est lancé.
  • Plus flexible: si des scripts autorun# sont trouvés (# est un chiffre entre 0 et 9).
    • Le paramètre autoruns= boot n’était pas indiqué, ou
    • le paramètre autoruns= boot contient les valeurs #

(exemple: rescuecd autoruns=0,1,4 - Dans cet exemple, seulement les scripts autorun0, autorun1 ou autorun4 doivent être lancés si ils sont présent. les autres scripts autorun2, autorun3 et autorun5 seront ignorés)

Puis les scripts autorisés sont lancés par ordre alphabétiques. Si a script ne se termine pas, le processus est stoppé et le prochain script n’est pas lancé. Vous pouvez empêcher l’exécution des scripts flexibles avec l’option de démarrage autorun=no. Ceci n’empêche pas l’exécution du script autorun simple (sans numéro sans le nom).

Bien qu’il soit possible d’utiliser les deux types de scripts en même temps (autorun et autorun#), ceci est à éviter.

Tous les scripts supportés par le système peuvent être exécutés. Vous pouvez donc utiliser des scripts shell (bash, ksh, tcsh), perl ou python.

Exemples de script autorun

#!/bin/bash
(
  ifconfig eth0 | head -n 3
  fdisk -l /dev/hda
) | tee -a /mnt/autorun/report
sync
exit 0

Ce script va cumuler des informations sur l’interface réseau eth0 et les partitions du disque dur dans un fichier nommé “report” sur le premier lecteur disquette. Pour qu’il se lance, la séquence de boot doit être spécifiée sur cédérom en premier dans le BIOS, le paramètre ar_source doit être correctement indiqué, la disquette doit être accessible en écriture, et le cédérom et la disquette doivent être insérés au démarrage.

Si le réseau est automatiquement configuré au démarrage (avec DHCP), vous pouvez envoyer les informations vers un serveur de partage NFS ou Samba par exemple.

N’oubliez pas de donner la localisation de l’autorun au démarrage. Pour indiquer que vous partager un répertoire accessible en écriture nommé /nfs/sauvegarde sur un serveur NFS, vous devez taper:

  • rescuecd ar_source=monerveur:/nfs/sauvegarde

à l’invite de démarrage de SystemRescueCD. Pour mettre dans le répertoire partagé un script autorun, vous pouvez procéder comme cela:

#!/bin/bash
date=$(date +%Y%m%d)
cat /dev/hda | gzip > /mnt/autorun/$date.hda.gz && exit 0
echo $date hda erreur de sauvegarde 
exit 1

Si l’espace fourni par le NFS est suffisant, cela va copier ici une image compressée de votre premier disque dur IDE. Attention, il peut aussi y avoir une taille maximale de 2Go pour les fichiers lorsque vous copiez par le réseau, ou vers les partitions formatées en FAT.

Vous devez vous assurer que la résolution des noms (DNS) fonctionne si vous voulez accéder au serveur NFS par son nom et non par son adresse IP.


Documentation
Manual (EN)
LVM Guide
Disk partitioning
Networking
Manual (FR)

Related
Sourceforge
FSArchiver