<!doctype linuxdoc system>

<article>

<title>Linux ADSM Mini-Howto
<author>di Thomas K&ouml;nig, <tt/Thomas.Koenig@ciw.uni-karlsruhe.de/
<date> $Date: 1997/01/15 20:36:34 $

<abstract> Questo documento descrive l'installazione e l'uso di un client
per il sistema di backup commerciale ADSM per Linux/i386.

<toc>

<sect>Introduzione
<p>
ADSM è un sistema di baskup basato sulla rete, venduto dalla IBM ed usato
in molte organizzazioni. Esistono client per una grande varietà di sistemi
(vari tipi di UNIX, Windows, Novell, Mac, Windows NT). Sofrtunatamente, 
nel momento in cui sto scrivendo, non esiste una versione nativa per
Linux.
<p>
Per usare ADSM dovrete usare il binario SCO, ed installare l'emulatore
iBCS2. La descrizione che segue è valida per ADSM v2r1.
<p>
Nel momento in cui sto scrivendo, che io sappia esiste solo una versione
che funziona con la versione i386 di Linux. 
<sect>Installazione del modulo iBCS2
<p>
Il modulo iBCS2 è disponibile su
<htmlurl name="ftp://tsx-11.mit.edu/pub/linux/BETA/ibcs2"
url="ftp://tsx-11.mit.edu/pub/linux/BETA/ibcs2">.  Se usate il kernel
1.2.13, scaricate 
<tt/ibcs-1.2-950721.tar.gz/, spacchettatelo ed applicate le patch 
<tt/ibcs-1.2-950808.patch1/ e <tt/ibcs-1.2-950828.patch2/.
Potete poi digitare &dquot;<tt/make/&dquot; ed installare il modulo iBCS2
con &dquot;<tt/insmod/&dquot;.
<p>
Per i kernel 2.0, scaricate <tt/ibcs-2.0-960610.tar.gz/, spacchettatelo in
una directory adatta, fate chdir in quella directory ed applicate questa
patch:
<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>
Poi, copiate <tt/CONFIG.i386/ in <tt/CONFIG/, e digitate <tt/make/.
<p>
Se non li avete ancora, create i file di device necessari eseguendo
<verb>
# cd /dev
# ln -s null XOR
# ln -s null X0R
# mknod socksys c 30 0
# mknod spx c 30 1
</verb>
<sect>Installazione del client ADSM
<p>
Il file binario SCO è distribuito sotto forma di tre file tar o tre
dischi. Spostatevi nella directory di root, impostate gli umask a seconda
delle vostre preferenze e spacchettatele da lì (come root). Nella
directory /tmp troverete uno script di installazione; eseguitelo.
<p>
Dovrete quindi modificare a mano <tt>/usr/adsm/dsm.sys</tt> and
<tt>/usr/adsm/dsm.opt</tt>.
In <tt/dsm.sys/, le linee importanti da specificare sono:
<descrip>
<tag/Servername/Il nome del server
<tag/TCPServeraddress/L'hostname del server completo di dominio
<tag/NODename/Il vostro hostname
</descrip>
In <tt/dsm.opt/, dovrete specificare
<descrip>
<tag/Server/Come sopra
<tag/Followsymbolic/Se seguire o no i link simbolici (in generale non è
una buona idea)
<tag/SUbdir/Se fare o no il backup delle sottodirectory (in genere
vorrete farlo)
<tag/domain/I filesystem di cui fare il backup
</descrip>
<p>
Dovrete poi creare un <tt>/etc/mnttab</tt> SCO-compatibile. Per farlo
potete usare il seguente script Perl, <tt/fstab2mntab/.
<tscreen>
<code>
#!/usr/bin/perl

$mnttab_struct = "a32 a32 I L";

open(MTAB, "/etc/mtab") || die "Non posso aprire /etc/mtab: $!\n";
open(MNTTAB, ">/etc/mnttab") || die "Non posso aprire /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 "Made entry for: $device $mountpt $fstype\n";
    }
}

close(MNTTAB);
exit 0;
</code>
</tscreen>
Per usare questi client non avete bisogno di installare librerie
condivise; sono linkate tutte staticamente.
<sect>Far girare il client
<p>
Esistono due client, <tt/dsm/, che ha un'interfaccia X11, e 
<tt/dsmc/, che lavora da linea di comando. Il vostro centro di computer vi
dirà come farlo girare. Ci sarà probabilmente bisogno di qualche script
all'avvio, come ad esempio
<verb>
dsmc schedule -quiet 2>&amp;1 >/dev/null &amp;
</verb>
<sect>Problemi noti
<p>
Sfortunatamente, SCO può trattare solo hostname non più lunghi di otto
caratteri. Se il vostro hostname è più lungo, o se specificate il dominio 
completo,
dovrete specificare l'hostname nella linea 
<tt/NODename/ line in <tt>/usr/adsm/dsm.sys</tt>.
<p>
Se usate la variabile DISPLAY, dovrete dare l'hostname completo
(ad esempio <tt/DISPLAY=host.full.do.main:0/ invece di 
<tt/DISPLAY=host:0/).
</article>
