Questo documento è perennemente in lavorazione, per cui scaricate sempre l'ultima versione disponibile.
0.6 - inserita una spiegazione più dettagliata di come spostare nella giusta posizione il nuovo kernel ed un ulteriore modello di controller AVA1505
0.5 - inserito il suggerimento di modifica dei sorgenti del kernel
0.4 - altre correzioni di ortografia, aggiornamento ai kernel 2.2
0.3 - corretti altri errori di ortografia, inserito il paragrafo per l'installazione da lettore CD collegato al controller AVA1505, modificato l'url dove trovare questo documento
0.2a - corretti alcuni errori di ortografia
0.2 - inserito il passo riguardante la configurazione del BIOS della scheda madre qualora non si avvii il programma del dischetto Adaptec SCSI SELECT
0.1 - versione iniziale :-)
Ho scritto questo documento con tutta l'accuratezza possibile ma se usate le informazioni in esso contenute lo fate a vostro rischio e pericolo. In nessun caso potrò essere ritenuto responsabile di eventuali danni causati dall'utilizzo del presente mini-HOWTO.
I marchi citati si intendono dei rispettivi proprietari.
L'ultima versione di questo documento è reperibile presso il seguente indirizzo:
http://www.pluto.linux.it/ildp/ nella sezione intitolata ALTRI DOCUMENTI
oppure
http://ellepi.hypermart.net/documenti/ava1505.html
Critiche, correzioni, consigli e suggerimenti per migliorare questo testo sono ben accetti. Contattatemi pure tramite posta elettronica.
Questo documento si basa, oltre che sulle mie esperienze, anche sui consigli apparsi sui newsgroup it.comp.linux e it.comp.linux.setup ora it.comp.os.linux.sys e it.comp.os.linux.iniziare). Un grazie infinite a tutti coloro che frequentano i newsgroup!
Un grazie a Bruno Taglienti Bruno.Taglienti@roma1.infn.it per avermi descritto la configurazione del BIOS qualora il dischetto SCSI SELECT non veda il controller.
Grazie anche a Mardy amardegan@iol.it per aver suggerito la modifica diretta dei parametri della scheda nel sorgente del driver aha152x.c
Grazie anche a Murray Gibbins murray@scotweb.ltd.uk per avermi integrato alcuni dati
Un grazie anche a voi per avere letto fino a qui questo documento :-)
Questo controller SCSI, installabile su bus ISA, è un prodotto economico, anche se per il fatto di sfruttare proprio questo tipo di bus non permette di sfruttare appieno le peculiarità delle interfacce SCSI e SCSI-2. Tuttavia è un'ottima alternativa per esempio per installare prodotti SCSI (ad esempio masterizzatori o lettori CD-ROM) ed ottenere migliori prestazioni rispetto ai corrispondenti modelli EIDE, col vantaggio di non sovraccaricare la cpu. Il controller AVA 1505 supporta fino a 7 periferiche SCSI. Inoltre ha i suoi terminatori (quelli per il controller, per i terminatori delle periferiche dovete far riferimento alle periferiche stesse!) già preinstallati. Attenzione che se installate periferiche sia esterne che interne il controller a questo punto si troverà nel mezzo della catena SCSI, per cui i tre terminatori fissi vanno rimossi. Comunque per la terminazione di controller e periferiche è consigliabile approfondire un po' il tema: a tale proposito in fondo al documento troverete un elenco di siti web da consultare.
C'è da puntualizzare una cosa, a scanso di equivoci: questo controller non può fare il boot, quindi non è possibile installarvi l'hard disk principale. Comunque è a parer mio una buona soluzione se non si hanno molti soldi da spendere.
Personalmente l'ho installato sia a casa (per pilotare il masterizzatore) sia in ufficio (per lo scanner) e ne sono soddisfatto.
Di questo controller ne esistono almeno due versioni:
Ci sono anche alcune versioni che permettono il collegamento di sole unità interne.
Il controller AVA 1505 va montato in uno slot ISA libero. Per questo procedimento non c'è molto da dire, solo di armarsi di pazienza e di un cacciavite, e fare attenzione a non toccare con le dita i contatti della scheda.
Intanto procuratevi anche i cavi necessari per il collegamento delle periferiche SCSI e gli eventuali terminatori.
Se il controller è del tipo normale, ossia non plug and play (anche se mi sa che ne sono rimasti pochi in giro...), prima di montarlo dovete assegnarli interrupt e indirizzo I/O di base. Per fare ciò è sufficiente spostare alcuni ponticelli sulla scheda, contrassegnati con J1:
PONTICELLO IRQ
I09 9
I10 10
I11 11
I12 12
Di default viene assegnato l'11, il 9 viene sconsigliato per l'uso con
Windows (tenetene conto se sul vostro pc convivono sia Linux che il
pseudo OS di casa Microsoft). Per assegnare l'interrupt voluto
è sufficiente mettere il ponticello nella posizione relativa.
Passiamo poi ad assegnare alla scheda l'indirizzo base: qui sono solo due le scelte, relative al solo ponticello ALT. A ponticello che cortocircuita i due pin corrisponde l'indirizzo esadecimale 0x140, se lo levate invece viene assegnato l'indirizzo 0x340. Ok, adesso si può inserire la scheda nello slot prescelto e collegare poi i vari cavi alle periferiche.
Memorizzate (meglio ancora, scriveteli su un foglio di carta) i valori di I/O, IRQ e IDin quanto serviranno per l'ultimo passo, quello della configurazione di lilo.
Secondo le intenzioni del produttore, dovrebbe essere sufficiente inserire la scheda nel pc, accenderlo e vederlo funzionare... invece non è così (e nemmeno proprio sotto Windows...).
In parte è così, nel senso che sulla scheda non c'è assolutamente nulla da fare, va inserita nello slot e basta. Il lavoro viene dopo.
Per configurare il controller AVA 1505 plug and play ci sono due vie possibili:
A computer spento, inserite nel drive a (ooops... /dev/fd0!) il floppy SCSI SELECT fornito a corredo della scheda. È un floppy avviabile, e una volta acceso il PC dovreste trovarvi nel menu di configurazione.
Nel caso il dischetto SCSI SELECT non vi trovi il controller,
riavviate il computer ed entrate nella configurazione del BIOS (di
solito premendo il tasto DEL
) e modificate il setup in modo
che l'IRQ prescelto venga allocato al bus ISA. Non entro nel dettaglio
perché la procedura può essere diversa da BIOS a BIOS:
consultate il manuale della vostra scheda madre.
Da questo menu provvedete
Con la scelta dell'interrupt bisogna andare un po' per tentativi: escluso il 9 (tra l'altro, non fidatevi delle indicazioni di Windows, spesso sono errate, gli IRQ se li gira lui a piacimento!) per il conflitto con la scheda audio, ho tentato prima col 10 e poi con l'11, ma in fase di inizializzazione della scheda durante l'avvio di Linux mi dava il messaggio "IRQ possibly wrong". Il 12 invece è andato bene. Questo sul computer di casa, mentre quello dell'ufficio ha la scheda impostata sull'IRQ 11. Quindi l'unico metodo valido è quello sperimentale, del resto le più grandi scoperte scientifiche le hanno fatte così ;-)
Anche in questo caso memorizzate (meglio ancora, scriveteli su un foglio di carta) i valori di I/O, IRQ e ID in quanto serviranno per l'ultimo passo, quello della configurazione di lilo.
Di per sè esiste un howto apposito, e la tentazione di rimandarvi alla sua lettura è molto forte... comunque in breve riassumo qui i passi salienti da compiere per ottenere il supporto SCSI inserito nel kernel. Per la procedura dettagliata di compilazione del kernel fate riferimento al Kernel-HOWTO, idem per la compilazione come modulo del supporto SCSI.
Innanzitutto entrate come root, indi portatevi nella directory dove si
trova il kernel. Chiaramente dovete averne installato i
sorgenti.
# cd /usr/src/linux
Personalmente preferisco usare l'interfaccia a caratteri make
menuconfig
, che trovo più intuitiva di make
config
e che soprattutto mi permette di tornare indietro senza
dover ricominciare tutto daccapo se faccio qualche errore oppure ho
qualche dubbio.
Per cui al prompt digitate
# make menuconfig
Dopo un po' di smacchinamento vi apparirà una schemata più o meno così
Linux Kernel v2.0.36 Configuration
-------------------------------- Main Menu --------------------------------
x Arrow keys navigate the menu. <Enter> selects submenus --->. x
x Highlighted letters are hotkeys. Pressing <Y> includes, <N> excludes, x
x <M> modularizes features. Press <Esc><Esc> to exit, <?> for Help. x
x Legend: [*] built-in [ ] excluded <M> module < > module capable x
x ----------------------------------------------------------------------- x
x x Code maturity level options ---> x x
x x Loadable module support ---> x x
x x General setup ---> x x
x x Floppy, IDE, and other block devices ---> x x
x x Networking options ---> x x
x x SCSI support ---> x x
x x Network device support ---> x x
x x ISDN subsystem ---> x x
x x CD-ROM drivers (not for SCSI or IDE/ATAPI drives) ---> x x
x x Filesystems ---> x x
x --------(+)------------------------------------------------------------ x
---------------------------------------------------------------------------
x <Select> < Exit > < Help > x
---------------------------------------------------------------------------
Entrate nel menu SCSI Support e abilitate le seguenti voci:
L'ultima voce sarebbe anche superflua, ma è meglio includerla almeno per gli esperimenti, dato che può fornire informazioni utili per capire se e dove c'è un errore di inizializzazione. Una volta collaudato il sistema si può anche eliminare ricompilando il kernel senza, visto che si risparmiano ben 12 Kb.
ATTENZIONE: con i kernel 2.2.x se avete un lettore CD EIDE e state installando il controller SCSI per un masterizzatore, consiglio di abilitare il supporto per CDROM SCSI e di togliere quello per le unità EIDE/ATAPI. Solo così facendo potrete fare delle copie al volo di CD.
Dovreste quindi avere una schermata come questa:
Linux Kernel v2.0.36 Configuration
------------------------------ SCSI support -------------------------------
x Arrow keys navigate the menu. <Enter> selects submenus --->. x
x Highlighted letters are hotkeys. Pressing <Y> includes, <N> excludes, x
x <M> modularizes features. Press <Esc><Esc> to exit, <?> for Help. x
x Legend: [*] built-in [ ] excluded <M> module < > module capable x
x ----------------------------------------------------------------------- x
x x [*] SCSI support x x
x x --- SCSI support type (disk, tape, CD-ROM) x x
x x [ ] SCSI disk support x x
x x [ ] SCSI tape support x x
x x [ ] SCSI CD-ROM support x x
x x [*] SCSI generic support x x
x x --- Some SCSI devices (e.g. CD jukebox) support multiple LUNs x x
x x [ ] Probe all LUNs on each SCSI device x x
x x [*] Verbose SCSI error reporting (kernel size +=12K) x x
x x SCSI low-level drivers ---> x x
x ----------------------------------------------------------------------- x
---------------------------------------------------------------------------
x <Select> < Exit > < Help > x
---------------------------------------------------------------------------
Ed eccoci all'ultimo passo, quello di scegliere il driver a basso livello per la nostra scheda AVA 1505. Entrate nella sezione SCSI low-level drivers e selezionate il supporto per Adaptec AHA152X/2825.
Linux Kernel v2.0.36 Configuration
------------------------- SCSI low-level drivers --------------------------
x Arrow keys navigate the menu. <Enter> selects submenus --->. x
x Highlighted letters are hotkeys. Pressing <Y> includes, <N> excludes, x
x <M> modularizes features. Press <Esc><Esc> to exit, <?> for Help. x
x Legend: [*] built-in [ ] excluded <M> module < > module capable x
x ----------------------------------------------------------------------- x
x x[ ] 7000FASST SCSI support x x
x x[*] Adaptec AHA152X/2825 support x x
x x[ ] Adaptec AHA1542 support x x
x x[ ] Adaptec AHA1740 support x x
x x[ ] Adaptec AIC7xxx support x x
x x[ ] AdvanSys SCSI support x x
x x[ ] Always IN2000 SCSI support x x
x x[ ] AM53/79C974 PCI SCSI support x x
x x[ ] AMI MegaRAIDsupport x x
x x[ ] BusLogic SCSI support x x
x --(+)------------------------------------------------------------------ x
---------------------------------------------------------------------------
x <Select> < Exit > < Help > x
---------------------------------------------------------------------------
Se non avete altri controller SCSI assicuratevi che non siano inseriti i loro driver nel kernel. Non danno fastidio, ma vi fanno sprecare memoria inutilmente, dato che carichereste drivers inutili :-)
Dopodiché uscite dal menu e salvate la configurazione, indi
iniziate la compilazione del kernel come al solito:
# make dep ; make clean ; make Zimage
Diversi driver del kernel per controller SCSI prevedono il passaggio di indirizzo I/O, IRQ e ID in fase di compilazione del kernel. Abbiamo già visto che però non è il caso per l'Adaptec AVA 1505. Allora come fare?
All'apparire del prompt del boot digitare il comando
append
seguito dai parametri nell'ordine
iobase,IRQ,id[,reconnect]
. Esempio pratico:
append=0x340,11,7
Se avviate il PC con lilo (quindi avete più di un sistema
operativo sul vostro pc, oppure vi diverte avere più kernel sul
vostro disco in modo da partire con differenti configurazioni) i
parametri di inizalizzazione della scheda vanno inseriti in
/etc/lilo.conf
.
Vi do un esempio tratto dal mio /etc/lilo.conf
:
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
vga=9
timeout=50
image=/vmlinuz
label=linux
append="aha152x=0x340,11,7"
root=/dev/hdb1
read-only
image=/boot/vmlinuz-2.2.5
label=new
append="aha152x=0x340,11,7"
root=/dev/hdb1
read-only
Come vedete i parametri sono stati inseriti nella riga che comincia
con append
nello stesso ordine del caso precedente, l'unica
differenza è che sono stati posti tra virgolette.
Una volta salvato il file dovete fare in modo che lilo sappia della
modifica, perciò date il comando
# /sbin/lilo
Naturalmmente il kernel già compilato dovrà essere
spostato nel punto giusto (nel mio caso nella directory root del
sistema, su RedHat nella directory /boot
), ed essere rinominato
vmlinuz.
Per fare ciò è sufficiente digitare:
# cp /usr/src/linux/arch/i386/boot/zImage /vmlinuz
Naturalmente se in fase di compilazione del kernel avete dato il comando
make bzImage
dovrete scrivere bzImage al posto di zImage. Date
poi un /sbin/lilo -v
per informare lilo delle vostre modifiche.
Questa operazione è per soli esperti: si declina qualsiasi responsabilità per eventuali danni al vostro sistema.
È possibile andare a modificare direttamente i makefile del
kernel, nello specifico il file
/usr/src/linux/drivers/scsi/Makefile
, ovvero il makefile che
sovrintende alla compilazione dei driver SCSI. Seguendo queste
istruzioni non sarà necessario passare opzioni né a LILO né a insmod.
Dovete andare a cercare la riga (nel mio 2.2.13 è la sedicesima) che recita
CFLAGS_aha152x.o = -DDEBUG_AHA152X -DAUTOCONF
e modificarla come segue:
CFLAGS_aha152x.o = -DDEBUG_AHA152X -DSETUP0="{0x340, 11, 7, 1, 1, 0, 100, 0}"
se il vostro controller AVA 1505 è sull'indirizzo di I/O 0x340, ha un
IRQ pari a 11 e uno SCSI ID di 7 (gli altri potete lasciarli come
nell'esempio). L'esatta sintassi la trovate indicata nel file
/usr/src/linux/drivers/scsi/aha152x.c
.
Una cosa fondamentale da fare è comunque accertarsi della correttezza dei parametri rilevandoli col dischetto Adaptec SCSI SELECT, altrimenti la scheda non sarà riconosciuta.
Ovvero: chissà se ho scritto un sacco di fesserie oppure funziona tutto :-))
Siamo arrivati al dunque. Con un bel saluto a tre dita (ovvero premendo CTRL+ALT+DEL) riavviate il computer in modo da fargli leggere il nuovo kernel.
Durante la fase di avvio dovreste riuscire a leggere un messaggio di questo tenore:
aha152x: processing commandline: ok
aha152x: BIOS test: passed, detected 1 controller(s)
aha152x0: vital data: PORTBASE=0x340, IRQ=11, SCSI ID=7,
reconnect=enabled, parity=enabled, synchronous=disabled, delay=100,
extended translation=disabled
aha152x: trying software interrupt, ok.
scsi0 : Adaptec 152x SCSI driver; $Revision: 1.18 $
scsi : 1 host.
Vendor: HP Model: C5110A Rev: 3638
Type: Processor ANSI SCSI revision: 02
Detected scsi generic sga at scsi0, channel 0, ID2, lun 0
scsi : detected total.
Se i messaggi si susseguono troppo velocemente, una volta loggati
nel sistema potete rileggerli col comando
# dmesg | less
In questo caso il kernel ha trovato un controller SCSI
all'indirizzo 0x340, con IRQ 11 e IDSCSI 7. Inoltre mi dice che a
quel controller è connessa una periferica identificabile come
HP C5110A, alla quale ha assegnato il device /dev/sga
e si
trova sul bus SCSI 0 con ID2. Chiaramente la vostra situazione
sarà diversa...
Se per disgrazia non dovesse trovarvi il controller, il kernel vi
farà partecipi del suo dolore con il messaggio
scsi : 0 detected total.
In questo caso, prima di iniziare a mandarmi improperi di vario genere vi chiedo di ricontrollare tutti i passi che avete fatto. Nel caso malaugurato che non ci sia proprio nulla da fare allora contattatemi, magari sono io che ho scritto qualche fesseria. A me comunque questo metodo ha funzionato alla perfezione (in due casi, dato che sono due le macchine che posso usare...).
Un metodo alternativo potrebbe essere quello di utilizzare le
utility del pacchetto isapnptools, pnpdump
e
isapnp
. Questo pacchetto consente di riconoscere le schede
plug and play connesse al bus ISA (quindi nulla da fare per le PCI) e
di assegnare i corretti valori per indirizzo base di I/O, IRQ, DMA,
eccetera.
L'uso è relativamente semplice: innanzitutto è sempre
meglio leggere la pagina man relativa alle due utility, in modo da
rendersi conto con che cosa si ha a che fare e soprattutto delle
opzioni possibili. Le pagine sono: isapnp(8)
,
pnpdump(8)
e isapnp.conf(5)
.
In seguito è possibile far interrogare il sistema da
pnpdump
, che provvederà a generare il file di
configurazione. Una volta generato si andrà a leggere i
parametri della scheda e ad utilizzarli per il passaggio dei valori
corretti al kernel con isapnp
.
Ecco il dettaglio delle operazioni:
pnpdump
pnpdump > /etc/isapnp.conf
/etc/isapnp.conf
così generato
in modo da selezionare le scelte opportune di configurazione e
desumere i dati necessari per il kernelisapnp
verrà avviato dopo il caricamento
del kernel: se il supporto aha152x è direttamente inglobato nel
kernel lo stesso non troverà alcuna scheda, mentre se caricato
come modulo la scheda verrà prima riconosciuta da
isapnp
, poi quando si inserirà il modulo relativo,
manualmente o automaticamente, la scheda verrà finalmente
riconosciuta e resa disponibile a Linux. Naturalmente dovrete
ricordarvi di abilitare il caricamento automatico dei moduli,
altrimenti dovrete darvi da fare con insmod
alla bisogna. /etc/conf.modules
i parametri del
controller nel formatooptions aha152x=iobase,IRQ,ID[,reconnect]
/etc/init.d
, se non vi è di
già (Debian lo fa di default se si installa il pacchetto
.deb
e crea automaticamente i symlink per i runlevel) uno
script di avvio di isapnp
che punti al giusto file di
configurazioneQuando tenterete di usare una periferica connessa al controller e
se avrete abilitato il caricamento automatico dei moduli in fase di
compilazione del kernel, vi apparirà sullo schermo qualcosa di
molto simile:
aha152x: processing commandline: ok
aha152x: BIOS test: passed, detected 1 controller(s)
aha152x0: vital data: PORTBASE=0x340, IRQ=11, SCSI ID=7,
reconnect=enabled, parity=enabled, synchronous=disabled, delay=100,
extended translation=disabled
aha152x: trying software interrupt, ok.
scsi0 : Adaptec 152x SCSI driver; $Revision: 1.18 $
scsi : 1 host.
Vendor: HP Model: C5110A Rev: 3638
Type: Processor ANSI SCSI revision: 02
Detected scsi generic sga at scsi0, channel 0, ID2, lun 0
scsi : detected total.
Ciò significa che tutto è andato per il verso giusto. Altrimenti riguardate passo passo tutte le fasi dell'operazione, probabilmente qualcosa non è andato per il verso giusto, oppure ho scritto cavolate... :-) Comunque tra i due metodi a mio parere il migliore è il primo, ossia la disabilitazione del plug and play.
Tutto quanto sopra descritto è poco utile se il vostro lettore CD è collegato al controller in oggetto e dovete ancora installare Linux. Tenete conto che questo controller non supporta il boot in quanto sprovvisto di BIOS, per cui per l'installazione di Linux è giocoforza crearsi i dischetti di boot con l'utility rawrite presente sul CD di installazione, così come le immagini dei floppy.
La procedura descritta qui sotto funziona unicamente per le distribuzioni più aggiornate che hanno modularizzato tutti i driver disponibili nel kernel, ossia RedHat 6.x, Suse 6.x e Slackware 7. Credo sia possibile, anzi lo sarà sicuramente, anche con la Debian 2.1, ma non ho provato :-) quindi aspetto eventuali feedback da qualcuno.
Prima ancora di iniziare tutto il lavoro è bene prendere il dischetto SCSI SELECT della Adaptec e con esso riavviare il computer. Partirà automaticamente l'utility per configurare l'AVA1505, provvedete a disabilitare il plug and play e segnatevi su un foglietto di carta i parametri di indirizzo I/O, IRQ e ID SCSI. Non fidatevi assolutamente delle indicazioni di Windows! Col plug and play abilitato il simpatico (si fa per dire) sistema operativo modifica a suo piacimento questi parametri, dando indicazioni assolutamente poco affidabili. È quindi da preferirsi la disabilitazione del pnp.
Potete quindi, una volta che vi siete creati i floppy di installazione, partire per mettere Linux sul vostro PC. Unica accortezza: al boot dovrete passare i parametri di inizializzazione del controller che avete rilevato e scritto sul vostro bravo foglietto di carta, nel formato
aha152x=0x340,11,7
nel caso l'indirizzo di I/O sia 0x340, l'IRQ sia 11 e l'ID SCSI 7. Molto semplice, dopotutto...
Il sito Adaptec http://www.adaptec.com
isapnptools http://www.roestock.demon.co.uk/isapnptools/
Appunti Linux, Daniele Giacomini, http://www.pluto.linux.it/ildp/AppuntiLinux/index.html, capitoli 15, 16, 17, 19
Kernel HOWTO, Lilo mini-HOWTO, Modules mini-HOWTO, Kerneld mini-HOWTO
Li trovate in traduzione italiana se disponibile (altrimenti
c'è il link all'originale) sul sito del PLUTO
http://www.pluto.linux.it/ildp/HOWTO/HOWTO-INDEX-3.html
SCSI HOWTO
È un howto che non è più manenuto e lo trovate
solo su sunsite o i suoi mirror in lingua inglese
ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/unmaintained
La mia esperienza personale :-)