Linux ADSM Mini-Howto <author>par Thomas König, <tt/Thomas.Koenig@ciw.uni-karlsruhe.de/ <date>v, 15 Janvier 1997 <abstract> Ce document décrit l'installation et l'utilisation sur un poste de travail Linux d'un client pour le système de sauvegarde commercial ADSM. <toc> <sect>Introduction <p> ADSM est un système de sauvegarde en réseau vendu par IBM que l'on retrouve dans de nombreuses organisations. Les programmes clients existent pour une large palette de systèmes : différents Unix, Windows, Novell, Mac, Windows NT. Malheureusement, à la date de rédaction de ce document, aucune version spécifique à Linux n'existe. <p> L'utilisation d'ADSM implique donc le recours au binaire SCO et à l'émulateur iBCS2. Il est ici question d'ADSM v2r1. <p> A ce jour, je ne connais qu'une version fonctionnant sous Linux, et uniquement sur plate-forme i386. <sect>Installation du module iBCS <p> Le module iBCS est disponible à l'adresse suivante : <htmlurl name="ftp://tsx-11.mit.edu/pub/linux/BETA/ibcs2" url="ftp://tsx-11.mit.edu/pub/linux/BETA/ibcs2">. [NdT : un miroir français <htmlurl name="ftp://ftp.lip6.fr/pub/linux/tsx-11/BETA/ibcs2" url="ftp://ftp.lip6.fr/pub/linux/tsx-11/BETA/ibcs2"> ] Si vous employez une version 1.2.13 du noyau, récupérez <tt/ibcs-1.2-950721.tar.gz/, décompactez-le et appliquez les patches <tt/ibcs-1.2-950808.patch1/ et <tt/ibcs-1.2-950828.patch2/. Vous pouvez alors invoquer &dquot;<tt/make/&dquot; et insérer le module iBCS via &dquot;<tt/insmod/&dquot;. <p> Pour un noyau 2.0, récupérez <tt/ibcs-2.0-960610.tar.gz/, décompressez-le dans un répertoire adéquat, allez dans ce répertoire et appliquez le patch ci-dessous : <verb> --- iBCSemul/ipc.c.orig Wed Jan 15 21:32:15 1997 +++ iBCSemul/ipc.c Wed Jan 15 21:32:31 1997 @@ -212,7 +212,7 @@ switch (command) { case U_SEMCTL: cmd = ibcs_sem_trans(arg3); - arg4 = (union semun *)get_syscall_parameter (regs, 4); + arg4 = (union semun *)(((unsigned long *) regs->esp) + (5)); is_p = (struct ibcs_semid_ds *)get_fs_long(arg4->buf); #ifdef IBCS_TRACE if ((ibcs_trace & TRACE_API) || ibcs_func_p->trace) </verb> Copiez ensuite <tt/CONFIG.i386/ en <tt/CONFIG/ et invoquez <tt/make/. <p> S'ils ne sont pas déjà présents, créez les périphériques requis en exécutant : <verb> # cd /dev # ln -s null XOR # ln -s null X0R # mknod socksys c 30 0 # mknod spx c 30 1 </verb> <sect>Installation du client ADSM <p> Le binaire SCO est divisé en trois fichiers <tt/tar/. Positionnez-vous à la racine de votre système de fichiers, vérifiez la valeur de umask et décompactez-les en tant qu'utilisateur <tt/root/. Un script d'installation apparaîtra dans votre répertoire <tt>/tmp</tt>. Invoquez-le. <p> Éditez ensuite <tt>/usr/adsm/dsm.sys</tt> et <tt>/usr/adsm/dsm.opt</tt>. Certaines lignes du fichier <tt/dsm.sys/ requièrent une attention particulière : <descrip> <tag/Servername/le nom du serveur <tag/TCPServeraddress/le nom complet du serveur (FQDN) <tag/NODename/le nom de votre station </descrip> Vous préciserez dans le fichier <tt/dsm.opt/ : <descrip> <tag/Server/comme précédemment <tag/Followsymbolic/s'il faut suivre les liens symboliques (c'est rarement une bonne idée) <tag/SUbdir/faut-il sauvegarder les sous-répertoires ? (généralement oui) <tag/domain/le système de fichiers à archiver </descrip> <p> Créez ensuite un fichier <tt>/etc/mnttab</tt> à la mode SCO à partir de votre <tt>/etc/fstab</tt>. Le script Perl suivant, <tt/fstab2mnttab/, le fera pour vous. <tscreen> <code> #!/usr/bin/perl $mnttab_struct = "a32 a32 I L"; open(MTAB, "/etc/mtab") || die "Impossible d'ouvrir /etc/mtab: $!\n"; open(MNTTAB, ">/etc/mnttab") || die "Impossible d'ouvrir /etc/mnttab: $!\n"; while(<MTAB>) { next if /pid/; chop; /^(\S*)\s(\S*)\s(\S*)\s.*$/; $device = $1; $mountpt = $2; $fstype = $3; if($fstype ne "nfs" && $fstype ne "proc") { $mnttab_rec = pack($mnttab_struct, $device, $mountpt, 0x9d2f, time()); syswrite(MNTTAB, $mnttab_rec, 72); print "Entrée créée pour : $device $mountpt $fstype\n"; } } close(MNTTAB); exit 0; </code> </tscreen> Le client ne réclame aucune bibliothèque dynamique : il est lié statiquement. <sect>Fonctionnement du client <p> Il existe deux clients. <tt/dsm/ propose une interface X11 tandis que <tt/dsmc/ reste en ligne de commande. Votre service informatique vous en dira davantage à leur sujet. Un script de démarrage du style : <verb> dsmc schedule -quiet 2>&1 >/dev/null & </verb> s'avèrera vraisemblablement nécessaire. <sect>Problèmes identifiés <p> SCO se révèle malheureusement incapable de supporter les noms de machines dépassant les 8 caractères. Si le nom de votre machine dépasse cette limite ou qu'il inclut le nom de domaine, vous devrez le préciser dans la ligne <tt/NODename/ du <tt>/usr/adsm/dsm.sys</tt>. <p> Le recours à la variable DISPLAY requiert de la part de celle-ci qu'elle comprenne le nom complet de votre machine, c'est à dire <tt/DISPLAY=maMachine.monDomaine:0/ au lieu de <tt/DISPLAY=maMachine:0/. </article>