QIC02 micro HOWTO

di Alessandro Pastore alexp@biella.alpcom.it

28/09/2000


Configurazione di una unità a nastro QIC02 con Linux

Ringraziamenti:
Al
Biella Linux User Group e, in particolar modo, a Claudio Maffioletti ed Andrea Ferraris.

Fonti
L'unica, ma fondamentale, documentazione che ho trovato, è su:
http://www.fh-zwickau.de/~linux/info/tips_und_tricks/qic02_controler.html

Premessa:
Ho testato il sistema prima di scrivere questa traccia; in nessun caso posso essere ritenuto responsabile per gli eventuali danni che potreste causare a voi o a terzi.

È gradito ogni suggerimento utile.

Questo documento è stato scritto per aiutare a configurare, con Linux, una unità di backup a nastro Archive 2150L da 150MB con scheda proprietaria SC402; dovrebbero esistere altri modelli e tagli: non ho, attualmente, dati a proposito.
Tutti i test sono stati effettuati con distribuzione Mandrake 6.1, kernel 2.2.14 su hardware Pentium 100 con 16Mb di ram; il kernel è sempre stato compilato monoliticamente.

Per configurare questa unità non contate sugli HOWTO relativi ai nastri SCSI o su controller floppy (ftape): serve consultarli per conoscere meglio le problematiche dei backup.



Identificare i componenti:
Il drive in questione, etichettato Archive 2150L, occupa interamente uno slot da 5.25" e si riconosce dal fatto di avere l'apertura di introduzione senza sportellino: la cassetta, dopo essere stata inserita a fondo, viene tenuta in sede da un blocco manuale a slitta. La scheda di interfaccia è la SC402.


Il cavo di collegamento tra scheda e drive, ha 50 conduttori e somiglia ad un cavo SCSI con una estremità, quella del drive, avente un connettore tipo floppone da 5.25".

Settare l'hardware:
Per il settaggio dei ponticelli fare riferimento al'
immagine.
Nel mio caso ho impostato su 220h il jumper "A", (tutti chiusi tranne il 5 ed il 9), l'IRQ su 5 ed il DMA su 1: corrispondono, partendo da sinistra, ai ponticelli 5,8,11 chiusi nel jumper "B".
Questi, sono valori sono generalmente liberi in un PC 80x86 senza scheda audio.

Compilare il kernel:
Prima di passare a 'make' è necessario modificare il file "/usr/src/linux/include/linux/tpqic02.h" in base al tipo di drive, scheda e valori di I/O, IRQ, DMA impostati precedentemente.
Riporto la sezione modificabile del file: è abbastanza intuitiva anche per chi non sguazza nel C.
In grassetto le opzioni specifiche.


*********** START OF USER CONFIGURABLE SECTION ************/

/* Tape configuration: Select DRIVE, IFC, PORT, IRQ and DMA below.
 * Runtime (re)configuration is not supported yet.
 *
 * Tape drive configuration:	(MT_IS* constants are defined in mtio.h)
 *
 * QIC02_TAPE_DRIVE = MT_ISWT5150
 *	- Wangtek 5150, format: up to QIC-150.
 * QIC02_TAPE_DRIVE = MT_ISQIC02_ALL_FEATURES
 *	- Enables some optional QIC02 commands that some drives may lack.
 *	  It is provided so you can check which are supported by your drive.
 *	  Refer to tpqic02.h for others.
 *
 * Supported interface cards: QIC02_TAPE_IFC =
 *	WANGTEK,
 *	ARCHIVE_SC402, ARCHIVE_SC499.	(both same programming interface)
 *
 * Make sure you have the I/O ports/DMA channels 
 * and IRQ stuff configured properly!
 * NOTE: There may be other device drivers using the same major
 *       number. This must be avoided. Check for timer.h conflicts too.
 *
 * If you have an EVEREX EV-831 card and you are using DMA channel 3,
 * you will probably have to ``#define QIC02_TAPE_DMA3_FIX'' below.
 */

/* CONFIG_QIC02_DYNCONF can be defined in autoconf.h, by `make config' */

/*** #undef CONFIG_QIC02_DYNCONF ***/

#ifndef CONFIG_QIC02_DYNCONF

#define QIC02_TAPE_DRIVE	MT_ISQIC02_ALL_FEATURES	 /* drive type */
/* #define QIC02_TAPE_DRIVE	MT_ISWT5150 */
/* #define QIC02_TAPE_DRIVE	MT_ISARCHIVE_5945L2 */
/* #define QIC02_TAPE_DRIVE	MT_ISTEAC_MT2ST */
#define QIC02_TAPE_DRIVE	MT_ISARCHIVE_2150L
/* #define QIC02_TAPE_DRIVE	MT_ISARCHIVESC499 */

/* Either WANGTEK, ARCHIVE or MOUNTAIN. Not EVEREX. 
 * If you have an EVEREX, use WANGTEK and try the DMA3_FIX below.
 */
/* #define QIC02_TAPE_IFC		WANGTEK	/* interface card type */
#define QIC02_TAPE_IFC			ARCHIVE
/* #define QIC02_TAPE_IFC		MOUNTAIN */

#define QIC02_TAPE_PORT 		0x220	/* controller port address */
#define QIC02_TAPE_IRQ			5	/* For IRQ2, use 9 here, others normal. */
#define QIC02_TAPE_DMA			1	/* either 1 or 3, because 2 is used by the floppy */

/* If DMA3 doesn't work, but DMA1 does, and you have a 
 * Wangtek/Everex card, you can try #define-ing the flag
 * below. Note that you should also change the DACK jumper
 * for Wangtek/Everex cards when changing the DMA channel.
 */
/* #undef QIC02_TAPE_DMA3_FIX

/************ END OF USER CONFIGURABLE SECTION *************/


Dopo esserci posti nella directory giusta cominciamo a compilare:

"cd /usr/src/linux"
"make config"

QIC-02 tape support (CONFIG_QIC02_TAPE) [Nym?] Y
Do you want runtime configuratio for QIC-02 (CONFIG_QIC02_DYNCONF) [Ny] N

"make dep; make clean; make bzImage"

L'operazione, sull'hardware in questione, impiega circa un'ora. Quando ha terminato ci spostiamo nella directory dove 'make' ha creato il file di immagine del kernel:

"cd   arch/i386/boot"" o, per capirci "cd   /usr/src/linux/arch/i386/boot"

e lo spostiamo su un floppy (senza averlo montato):

"dd   if=./bzImage   of=/dev/fd0"


Creare il device in /dev
Verifichiamo se esiste il file "/dev/tape" ed eventualmente rimuoviamolo:

"ls   /dev/tape"
"rm   /dev/tape" (se esiste)

"mknod   /dev/tape c 12 8" oppure
"mknod   /dev/tape c 12 9"

Dei due, il primo, non riavvolge al termine di una operazione, il secondo si'. Sarebbe consigliabile crearli con nomi diversi per averli entrambi a disposizione.
Più avanti, riferendomi a "/dev/tape", intenderò il secondo.
I due numeri detti 'major e minor' sono una caratteristica di tutti i device UNIX, ne trovate un elenco nel file "/usr/src/linux/Documentation/devices.txt".


Test
Riavviamo con il floppy inserito e, controlliamo i messaggi del kernel tramite il comando:

"dmesg|more"

Riporto la parte interessante dell'output:

tpqic02: IRQ 5, DMA 1, IO 0x220, IFC Archive, $Revision: 1.10 &, $Date: 1997/01/
26 07:13:20 $
tpqic02: Settings: IRQ 5, DMA 1, IO 0x220, IFC Archive
tpqic02: tp_sense: status: 81d0, error count: 0, underruns: 0
tpqic02: DMA buffers: 20blocks
tpqic02: tp_sense: status: 81d0, error count: 0, underruns: 0


Se non lo abbiamo già fatto, ora dobbiamo documentarci sui programmi "mt" e "tar" e, volendo, anche "dump" e "restore".
Riporto ora alcuni comandi fondamentali:

mt
"mt   -f   /dev/tape   rewind"   riavvolge
"mt   -f   /dev/tape   retension"   svolge e riavvolge
"mt   -f   /dev/tape   erase"   cancella il nastro

tar
"tar   -cvf /dev/tape   ./*"   crea un archivio di tutti i file della directory corrente
"tar   -cvzf /dev/tape   ./*"   crea un archivio, compresso con gunzip, di tutti i file della directory corrente
"tar   -tvf /dev/tape"   elenca il contenuto di un archivio
"tar   -xvf /dev/tape"   ripristina il contenuto dell'archivio nella directory corrente
"tar   -xvzf /dev/tape"   ripristina il contenuto dell'archivio, precedentemente compresso con 'gunzip', nella directory corrente

Le opzioni importanti di "tar" sono:
	-c	crea un archivio
	-A	aggiunge i file ad un archivio
	-r	append, aggiunge i file alla fine dell'archivio
	-t	elenca il contenuto dell'archivio
	-u	aggiorna solo i file modificati
	-x	estrae i file
	-f	dispositivo
	-M	multivolume
	-p	estrae tutti i permessi
	-W	verifica dopo ogni scrittura
	-Z	passa i dati a "compress" per la compressione
	-z	passa i dati a "gunzip" per la compressione

Abilitare il nuovo sistema al boot
Se tutto è andato a buon fine potremo copiare il kernel nella directory "/boot" dandogli un nome a piacere. Attenzione però, stiamo per modificare un file di sistema, conviene farne una copia prima di intervenire.

"cp /usr/src/linux/arch/i386/boot/bzImage  /boot/nome_kernel_a_vostra_scelta"

"cp /etc/lilo.conf  /etc/lilo.conf.old"

"vi   lilo.conf"

e modificarlo da così:

	boot=/dev/hda
	map=/boot/map
	install=/boot/boot.b
	prompt
	timeout=60
	default=linux
	image=/boot/vmlinuz-2.2.14-5.0
		label=linux
		read-only
		root=/dev/hda7

	other=/dev/hda1
		label=dos


a così:
	boot=/dev/hda
	map=/boot/map
	install=/boot/boot.b
	prompt
	timeout=60
	default=qic02
	image=/boot/vmlinuz-2.2.14-5.0
		label=linux
		read-only
		root=/dev/hda7
	image=/boot/nome_kernel_a_vostra_scelta
		label=qic02
		read-only
		root=/dev/hda7

	other=/dev/hda1
		label=dos


Per rendere valida la nuova configurazione utilizziamo il comando:

"lilo"
e riavviare.
Resta da dire che, prima di fidarsi ciecamente, è meglio effettuare dei test che verifichino l'integrità dei file ripristinati; ha molta importanza anche la corretta conservazione delle cassette magnetiche.




Torna all'inizio