<!doctype linuxdoc system>
<linuxdoc>
<article>
<titlepag>
<title>Linux ADSM Mini-Howto</title>
<author>
<name>Thomas K&ouml;nig,
<tt>Thomas.Koenig@ciw.uni-karlsruhe.de</tt><newline>
Vertaald door: Ellen Bokhorst, <tt>bokkie@nl.linux.org</tt></name>
</author>
<date>v, 15 jan 1997</date>
<abstract> In dit document wordt beschreven hoe een client te installeren
en gebruiken voor het commerci&euml;le ADSM backupsysteem onder Linux/i386.
</abstract>
</TITLEPAG>
<toc>
<sect>
<heading>Introductie</heading>
<p>ADSM is een op het netwerk gebaseerd backupsysteem, het wordt verkocht door IBM,
en is door veel organisaties in gebruik. Er zijn clients voor een grote
diversiteit aan systemen (verschillende UNIX merken, Windows, Novell, Mac,
Windows NT). Helaas is er tijdens dit schrijven geen versie voor Linux.</p>
<p>Je zal gebruik moeten maken van de SCO binary, en de
iBCS2-emulator moeten installeren voor het draaien van ADSM.
Deze beschrijving is voor ADSM v2r1.</p>
<p>Tijdens dit schrijven, ben ik me alleen bewust van een versie die met
de i386 versie van Linux werkt.</p>
</sect>
<sect>
<heading>Installeren van de iBCS module</heading>
<p>De iBCS2 module is beschikbaar vanaf
<htmlurl URL="ftp://tsx-11.mit.edu/pub/linux/BETA/ibcs2" NAME="ftp://tsx-11.mit.edu/pub/linux/BETA/ibcs2">. 
Gebruik voor kernelversie 1.2.13 <tt>ibcs-1.2-950721.tar.gz</tt>, pak het uit 
en pas de patches <tt>ibcs-1.2-950808.patch1</tt> en 
<tt>ibcs-1.2-950828.patch2</tt> toe.
Je kunt dan &dquot;<tt>make</tt>&dquot; intikken en de iBCS modules
installeren met &dquot;<tt>insmod</tt>&dquot;.
Haal voor een 2.0 kernelversie <tt>ibcs-2.0-960610.tar.gz</tt> op, pak
het uit naar een geschikte plaats, chdir naar die directory, en pas de
volgende patch toe:
<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-&#62;esp) + (5));
 			is_p = (struct ibcs_semid_ds *)get_fs_long(arg4-&#62;buf);
 #ifdef IBCS_TRACE
 			if ((ibcs_trace &#38; TRACE_API) || ibcs_func_p-&#62;trace)</verb>
Kopieer vervolgens <tt>CONFIG.i386</tt> naar <tt>CONFIG</tt>, en typ <tt>make</tt>.
Maak de benodigde apparaatbestanden aan als je die nog niet hebt door het
uitvoeren van
<verb># cd /dev
# ln -s null XOR
# ln -s null X0R
# mknod socksys c 30 0
# mknod spx c 30 1</verb></p>
</sect>
<sect>
<heading>Installeren van de ADSM client</heading>
<p>De SCO-binary wordt in drie tar-bestanden, of op disks geleverd. Ga naar
de root-directory, stel je umask in overeenkomstig je beleid, en pak
ze vanuit daar (als root) uit.
In de Directory /tmp, vind je een installatie-script; voer dat uit.</p>
<p>Je zal met de hand <tt>/usr/adsm/dsm.sys</tt> en
<tt>/usr/adsm/dsm.opt</tt> moeten wijzigen.
In <tt>dsm.sys</tt>, zijn de van belang zijnde op te geven regels:

<descrip>
<tag>Servername</tag><p>De naam van de server</p>
</descrip>

<descrip>
<tag>TCPServeraddress</tag><p>De fully qualified hostnaam van de server</p>
</descrip>

<descrip>
<tag>NODename</tag><p>Je eigen hostnaam</p>
</descrip>

In <tt>dsm.opt</tt>, moet je opgeven

<descrip>
<tag>Server</tag><p>Als hiervoor</p>
</descrip>

<descrip>
<tag>Followsymbolic</tag>
<p>Of je wel of niet symbolische links wilt volgen (in het algemeen niet 
verstandig)</p></descrip>

<descrip>
<tag>SUbdir</tag><p>Of je een backup wilt maken van subdirectory's 
(meestal wil je dat wel)</p>
</descrip>

<descrip>
<tag>domain</tag><p>De bestandssystemen waarvan je een backup wilt</p>
</descrip>

Je zal dan een SCO-compatibel <tt>/etc/mnttab</tt> aan moeten maken vanuit
je <tt>/etc/fstab</tt>. Je kunt hiervoor het volgende Perl-script
<tt>fstab2mnttab</tt> gebruiken.
<tscreen><code>#!/usr/bin/perl

$mnttab_struct = "a32 a32 I L";

open(MTAB, "/etc/mtab") || die "Kan /etc/mtab niet openen: $!\n";
open(MNTTAB, "&#62;/etc/mnttab") || die "Kan /etc/mnttab niet openen: $!\n";

while(&#60;MTAB&#62;) {
    next if /pid/;
    chop;
    /^(\S*)\s(\S*)\s(\S*)\s.*$/;
    $device = $1;
    $mountpt = $2;
    $fstype = $3;
    if($fstype ne "nfs" &#38;&#38; $fstype ne "proc") {
        $mnttab_rec =
            pack($mnttab_struct, $device, $mountpt, 0x9d2f, time());
        syswrite(MNTTAB, $mnttab_rec, 72);
        print "Entry gemaakt voor: $device $mountpt $fstype\n";
    }
}

close(MNTTAB);
exit 0;</code></tscreen>
Je hoeft voor deze clients geen shared library's te installeren, alles is
statisch gelinkt.</p>
</sect>

<sect>
<heading>Uitvoeren van de client</heading>
<p>Er zijn twee clients, <tt>dsm</tt>, een X11-interface, en
<tt>dsmc</tt>, een opdrachtregel interface. De werknemers in het 
computercentrum zullen je aangeven hoe het te activeren.
Waarschijnlijk zal een opstartscript dat tijdens het booten wordt uitgevoerd
nodig zijn:</p>
<p><verb>dsmc schedule -quiet 2&#62;&amp;1 &#62;/dev/null &amp;</verb>
</p>
</sect>

<sect>
<heading>Bekende problemen</heading>
<p>Helaas kan SCO alleen omgaan met hostnamen die uit niet meer dan acht
tekens bestaan. Als je hostnaam langer is, of fully qualified, dan kan
het zijn dat je de hostnaam in de <tt>NODename</tt> regel in
<tt>/usr/adsm/dsm.sys</tt> op moet geven.</p>
<p>Als je gebruik maakt van de variabele DISPLAY , zan zal je de qualified
hostnaam aan moeten leveren (d.w.z. <tt>DISPLAY=host.full.do.main:0</tt> 
in plaats van <tt>DISPLAY=host:0</tt>).</p>
</sect>
</article>
</LINUXDOC>
