Ce package installe un pilote.
Cette étude de cas illustre les techniques suivantes :
Installation et chargement d'un pilote à l'aide d'un script postinstall
Déchargement d'un pilote à l'aide d'un script preremove
Pour plus d'informations sur ces scripts, reportez-vous à Rédaction de scripts de procédure.
Créer un script request.
Le script request détermine l'emplacement d'installation des objets du pilote en interrogeant l'administrateur et en appliquant la réponse obtenue au paramètre $KERNDIR.
Le script se termine par une routine permettant de mettre les deux paramètres CLASSES et KERNDIR à disposition de l'environnement d'installation et du script postinstall.
Créez un script postinstall.
Le script postinstall effectue l'installation du pilote. Il est exécuté une fois que les deux fichiers buffer et buffer.conf sont installés. Le fichier postinstall illustré dans cet exemple effectue les opérations suivantes :
Il utilise la commande add_drv pour charger le pilote sur le système.
Il crée un lien vers le périphérique à l'aide de la commande installf.
Il termine l'installation à l'aide de la commande installf -f.
Il crée un script preremove.
Le script preremove utilise la commande rem_drv pour décharger le pilote du système, puis supprime le lien /dev/buffer0 .
PKG=bufdev NAME=Buffer Device CATEGORY=system BASEDIR=/ ARCH=INTEL VERSION=Software Issue #19 CLASSES=none |
Pour installer un pilote lors de l'installation, vous devez inclure les fichiers d'objets et de configuration du pilote dans le fichier prototype.
Dans cet exemple, le module exécutable du pilote est nommé buffer ; la commande add_drv opère sur ce fichier. Le noyau utilise le fichier de configuration, buffer.conf pour aider à configurer le pilote.
i pkginfo i request i postinstall i preremove f none $KERNDIR/buffer 444 root root f none $KERNDIR/buffer.conf 444 root root |
Remarquez les points suivants dans le fichier prototype de cet exemple :
Les objets du package ne nécessitant aucun traitement particulier, vous pouvez les placer dans la classe standard none. Le paramètre CLASSES est défini sur none dans le fichier pkginfo.
Les noms de chemin de buffer et buffer.conf commencent par la variable $KERNDIR. Cette variable est définie dans le script request et permet à l'administrateur de choisir l'emplacement d'installation des pilotes. Le répertoire par défaut est /kernel/drv.
Le script postinstall (script effectuant l'installation du pilote) dispose d'une entrée.
trap 'exit 3' 15 # determine where driver object should be placed; location # must be an absolute path name that is an existing directory KERNDIR=`ckpath -aoy -d /kernel/drv -p \ “Where do you want the driver object installed”` || exit $? # make parameters available to installation service, and # so to any other packaging scripts cat >$1 <<! CLASSES='$CLASSES' KERNDIR='$KERNDIR' ! exit 0 |
# KERNDIR parameter provided by `request' script err_code=1 # an error is considered fatal # Load the module into the system cd $KERNDIR add_drv -m '* 0666 root sys' buffer || exit $err_code # Create a /dev entry for the character node installf $PKGINST /dev/buffer0=/devices/eisa/buffer*:0 s installf -f $PKGINST |
err_code=1 # an error is considered fatal # Unload the driver rem_drv buffer || exit $err_code # remove /dev file removef $PKGINST /dev/buffer0 ; rm /dev/buffer0 removef -f $PKGINST |