Newsgroup: it.comp.os.linux.debian
Titolo: Installare Debian Sarge su IBM x306m controller AIC-94XX SAS

Ciao a tutti,
nuovo server ... nuovi guai ...
Ho appena acquistato un server nuovo per il cluster che ospita siti
internet, posta elettronica, virtual server, ecc. ecc.
Dovrei installare la Sarge, ma ovviamente non esiste un cd di
installazione che supporti il controller AIC-94XX SAS, di cui esiste il
driver per il kernel rilasciato da adaptec 
http://linux.adaptec.com/sas/
Prima domanda: esiste un CD di installazione che abbia questo driver nel
kernel?
Siccome non ho trovato tale CD e non sono riuscito (dopo due intere
giornate di sforzi) a generarmi un CD seguendo le istruzioni riportate qui
http://d-i.alioth.debian.org/svn/debian-installer/installer/doc/custom-kernel.txt
(quando cerco di generare la ISO dal pacchetto debian-installer con il
comando make build_monolithic mi ritorna degli errori che non capisco),
pensavo di procedere come segue:
1. attaccare gli HD sul controller SATA
2. Installare debian
3. riattaccare gli HD al controller AIC-94xx
4. cerare di far partire il sistema
Ora, quando arrivo al punto 4 il sistema mi ritorna un kernel panic
perchè non riesce a trovare il root file system sulla partizione sda3.
Dai messaggi di boot che vedo scorrere sullo schermo, riesco ad
individuare il controller, ma mi sembra non rilevi nessun disco collegato
ad esso (ma è solo una sensazione, perchè i messaggi di boot procedono e
perdo le righe del controller).
Seconda domanda: i dischi collegati al controller sono visti sempre come
dichi scsi, quindi /dev/sdxx? C'è un qualche motivo perchè rilevi il
ontroller ma non i dischi attaccati ad esso?
Grazie,
Lorenzo

 perdo le righe del controller).
se il controller viene riconosciuto allora rileverą anche i dischi.
sei sicuro che il disco sul controller aggiuntivo venga visto come
/dev/sda ?
in ogni caso, se riesci a capire che device č, puoi passare da grub al
kernel il parametro "root=/dev/sdXn"
ciao
gl

 kernel il parametro "root=/dev/sdXn"
Penso che il controller non rilevi il disco per il seguente motivo: il
BIOS del controller ha una utility per creare il RAID, che io non ho usato
perchè quando vado a creare il raid 1 dal mio disco mi dice che, essendo
un disco con multipartizioni, non riesce a creare il RAID partendo da quel
disco. Quindi ho semplicemente collegato i dischi senza creare il RAID
pensando che me li visualizzasse separatamente ma ...
Ho già provato a passare al kernel varie opzioni tipo:
root=/dev/sda3
root=/dev/sdb3
root=/dev/sdc3
root=/dev/sdd3
ma tutte hanno fallito (sono sicuro che la partizione è la 3).
Secondo voi il controller per vedere i dischi ha bisogno che sia crato un
array per il RAID?
Grazie,
Lorenzo

 array per il RAID?
in generale dovrebbe vedere singolarmente i dischi non in RAID.
tieni presente che se il controller è un fakeraid/raid software (non
conosco quel controller) o come lo vuoi chiamare, è sempre preferibile
usare il raid software del kernel che è più versatile e ha le stesse
prestazioni.
l'utility del controller sicuramente vorrà piallare il disco per
inizializzarlo alla sua maniera.
dovrebbe vederli comunque.
se avvii dal sata integrato, e colleghi un disco al controller aggiuntivo,
come viene identificato quel disco?
ciao
gl

 aggiuntivo, come viene identificato quel disco?
Ho fatto anche questa prova (venerdì, oggi chiaramente sono a casa, non
ho sottomano il server), ma se collego uno dei due dischi al controller
SAS ed il disco con Linux al SATA, lui vuole fare il boot dal disco
collegato al SAS e da BIOS non c'è verso di farlo partire dal disco SATA
... almeno io non ci sono riuscito :(
Qualche altra idea??
Un'altra cosa, non è proprio possibile creare un CD di installazione per
la Sarge con un kernel customizzato? Sarebbe molto più comodo ...
Ciao e grazie 1000,
Lorenzo

 la Sarge con un kernel customizzato? Sarebbe molto più comodo ...
E' fattibile, in giro ci sono delle howto, ma se hai problemi a fargli
vedere il disco *dopo* che hai installato la macchina e aggiornato il
kernel, dubito che sia più facile farlo prima dell'installazione.
Sarà uguale, no?
ciao
gl

 la Sarge con un kernel customizzato? Sarebbe molto più comodo ...
devi spippolarlo dentro all'initrd e farlo loadare da linuxrc.
Siccome se tanto mi da tanto stai lavorando con un kernel < 2.6.8
prendi il ko e copialo dentro all'initrd in
/lib/modules/<rel_kernel>/kernel/drivers/scsi
assime a scsi_mod.ko e sd_mod.ko suppongo.
in linuxrc con un editor aggiungi
echo "Loading kernel driver scsi_mod in questa bruttissima debian"
insmod /lib/modules/<rel_kernel>/kernel/drivers/scsi_mod.ko
echo "Loading kernel driver sd_mod in questa orrenda debian"
insmod /lib/modules/<rel_kernel>/kernel/drivers/sd_mod.ko
idem per il driver compilato a seguire
a seguire ci sarà la chiamata del module del filesystem (ext3 o reiserfs)
così sei in grado di bootare se no ho dei seri dubbi.
Ovviamente devi partire da un initrd da compilazione standard
poi la decomprimi e la monti in loop
gzip -dc initrd# > /tmp/initrd
mkdir /mnt/initrd
mount -o loop /tmp/initrd /mnt/initrd
che puoi editare
finito l'assemblaggio la smonti
umount /mnt/initrd
fai una copia dell'originale
rn /boot/initrd /boot/initrd#.saved
poi ricomprimi quello modificata
gzip -c /tmp/initrd > /boot/initrd#
in genere va ritoccato anche il bootloader, specie per fakes raid ata, onde
evitare che un modulo standard venga loadato prima di quello che interessa
fornito dal costruttore (cosa che renderebbe inutile l'operazione e ci si
troverebbe poi un hda anzichè un sda)
questo si fa normalmente introducendo direttive hda=ide-scsi contestuali a
delle hda=noprobe nell'invocazioni del kernel di grub, per in terderci
subito dopo la definizione di root. Ora col tuo controller sda3 sarebbe
hdc, ma essendo un sata ? Mumble mumble; probabilmente basta una direttiva
noprobe.
Dalla introduzione di initramfs la procedura cambia leggermente in quanto
non è più necessario il monatggio in loop, ma devi decomprimere e poi
ricomprimere un archivio cpio.
Ovviamente grazie agli script di preconfigurazione, in Suse tutto ciò si
traduce in una passeggiata che risparmia gran parte di tutti questi
passaggi creando automaticamente l'initrd con i moduli e le chiamate di
inetresse. Ma tu usi debian te tocca rosica' un pochetto :)

 idem per il driver compilato a seguire
Bello, non sapevo si potesse modificare, montandolo, un initrd già fatto!
Ho appena provato a montare quello che viene installato con la sarge:
initrd.img-2.6.8-2-686, quindi il kernel che userò sarà proprio il 2.6.8.
Ho una domanda: ho visto che oltre al file linuxrc c'è un file
loadmodules dove vengono caricati i moduli del kernel, non è che le righe
di insmod vano messe lì??
Grazie,
Lorenzo

 di insmod vano messe lì??
mah! queste peculiarità sono tipiche della distro credo.
In suse no, lo script che esegue le chiamate di loading è semplicemente
linuxrc. Devi seguire il nesso logico dello script per verificare come è
organizzato quello di debian. Potrebbe anche essere come dici tu, ma lo
verifichi facilemnte, se ad esempio linuxrc passa le chiamate a questo
loadmodules lo trovi nel codice. In sostanza cambia assai poco, il nesso è
forzare il loading mirato di uno specifico driver inibenendo, nel caso
quelli di default tramite parametri di boot, perchè questi notoriamente non
supportano queste modalità raid faked.
L'unica cosa importante è riuscire a compilare il modulo sugli headers del
kernel, quindi serve il sorgente e la compilazione del kernel. Ogni volta
che aggiorni il kernel l'operazione la devi ripetere, onde evitare kernel
panics o problemi sin peggiori.

 initrd.img-2.6.8-2-686, quindi il kernel che userò sarà proprio il 2.6.8.
Ricorda però che così tu modifichi la ISO rispetto al kernel di boot, ma
l'installer continuerà a cercare i pacchetti kernel-image-*.deb per
installare il kernel.
dovrai aggiungere un pacchetto kernel-image con il kernel con i nuovi
driver.
ciao
gl



Giustissimo!!!
Pensavo di fare in questo modo: 
- nel tree del cdrom di installazione vedo questo file;
  ./pool/main/k/kernel-image-2.6.8-i386/kernel-image-2.6.8-2-386_2.6.8-16sarge1_i386.deb
- che è poi quello che viene installato sulla macchina al termine
  dell'installzione;
- su una seconda macchina dove ho installato debian scarico il pacchetto
  sorgente del kernel (kernel-source-2.6.8)
- a questi applico la patch del kernel per il controller SAS e compilo
  come modulo tale driver;
- a questo punto posso utilizzare il .ko ottenuto per metterlo nell'initrd
  del CD dio installazione;
- inoltre, avendo compilato il kernel con il comando make-kpkg e l'opzione
  --inird posso aggiungerlo al tree del cd nella cartella
  ./pool/main/k/kernel-image-2.6.8-i386/ avendo cura di editare il file
  debian/dists/frozen/main/binary-i386/Packages ed il file md5sum.txt
Mi sorge un solo dubbio: come faccio a dire all'installer che è quello il
kernel buono da installare? Altrimenti lo posso installare a mano io prima
del termine dell'installazione, dalla console.
Mercoledì provo e vi faccio sapere!!
Grazie 1000,
Lorenzo

 del termine dell'installazione, dalla console.
L'installer fa una lista dei kernel-image trovati su CDROM.
Dovrebbe riportare 6 kernel-image diversi (2.4-386, 2.4-686, 2.4-686-smp,
2.6-386, 2.6-686, 2.6-smp) quindi agisci di conseguenza.
Con l'occasione, rinnovo la mia convinzione che se il sistema installato,
col kernel nuovo con patch per il controller, non vede i dischi, allora
neanche una nuova installazione con kernel nuovo risolverą la cosa.
In caso di smentite, fammi sapere, grazie. :)
Ciao
gl

 In caso di smentite, fammi sapere, grazie. :)
Mi sembra una osservazione molto sensata ;)
Vi dicevo che non riuscivo a fare il boot da SATA quando collegavo un
disco al SATA ed uno al SAS ... premendo F12 all'avvio mi presenta un
boot
menu dove è possibile scegliere il SATA.
Quindi ora posso eseguire il boot di un kernel con il driver per il
controller e capire come associa i dischi al kernel. Purtroppo devo
confermare i miei timori, cioè vede il controller ma non i dischi
associati.
I messaggi di boot sono i seguenti (devo ricopiarli a manina ... ne
riporto solo alcuni):
aic94xx: Adaptec aic94xx SAS/SATA driver version 1.0.3 loaded
...
ahci(0000:00:1f.2) AHCI 0001.0100 32 slots 4 ports 3 Gbps 0x1 impl SATA
mode
...
ata1: SATA max UDMA/133 cmd 0xF881C500 ctl 0x0 bmdma 0x0 irq 225
ata2: SATA max UDMA/133 cmd 0xF881C580 ctl 0x0 bmdma 0x0 irq 225
ata3: SATA max UDMA/133 cmd 0xF881C600 ctl 0x0 bmdma 0x0 irq 225
ata4: SATA max UDMA/133 cmd 0xF881C680 ctl 0x0 bmdma 0x0 irq 225
...
ata1: dev 0 configured for UDMA/133
scsi0: ahci
ata2: no device found ...
scsi1: ahci
ata3: no device found ...
scsi2: ahci
ata4: no device found ...
scsi3: ahci
...
SCSI device sda: drive cache: write back
 sda: sda1 sda2 sda3
...
...
Come si vede rileva un solo disco, il SATA. I device del controller SAS
sono ata3 e ata4, infatti se vado a disabilitare il controller da BIOS
vede solo ata1 e ata2.
Dal BIOS del controller SAS ho provato sia con il RAID abilitato sia
con
il RAID disablitato ... non cambia nulla.
Qualche idea?
Inoltre mi piacerebbe comunque realizzare un CD di installazione che
supporti il controller, molto comodo per realizzare il RAID software
direttamente in fase di installazione.
Ho scoperto che NON posso modificare l'initrd del CD di installazione
aggiungendo i moduli, in quanto il driver del controller non si compila
sul 2.6.8 ma vuole almeno il 2.6.13.
Io allora ho scaricato e patchato il 2.6.14.4 (ho scelto la versione su
cui si possono applicare le patch per Vserver 2.1.0) compilato con
make-kpkg e l'opzione --initrd, installato e sostituito initrd.gz e
vmlinuz con quelli del CD di installazione nella zona 2.6.
Il CD parte, fa il boot decomprime correttamente initrd.gz ma alla fine
va
in kernel panic dando un errore sul VFS che non riconosce il devfs (o
qualcosa del genere), sostanzialmente l'initrd non è creato
correttamente
per il CD di installazione.
So che per creare un initrd si usa il camando mkinitrd e che i moduli
che
devono essere caricati vanno esplicitati in /etc/mkinitrd/modules ...
qualcuno mi sa dire i parametri esatti per il comando e quali moduli
vanno
caricati in modo da generare un initrd che vada bene per il CD di
installazione della Debian?
Grazie,
Lorenzo

 installazione della Debian?
Se non ricordo male puoi andare diretto così:
mkinitrd -m "aic94xx ext3 reiserfs isofs"  /boot/initrd-... ...

 mkinitrd -m "aic94xx ext3 reiserfs isofs"  /boot/initrd-... ...
Ricordi male ;) ... cmq adesso provo a cercare in giro ... e a bruciare
qualche altro CD da appendare all'albero questo natale :D
Grazie,
Lorenzo

 qualche altro CD da appendare all'albero questo natale :D
non è che si tratta di initramfs anzicheè initrd. Prova a dezippare e 
guarda se lo scompattato è una rchivio cpio o meno.
Per il resto consiglio i riscrivibili :)

 Per il resto consiglio i riscrivibili :)
Per quanto riguarda la creazione del CD di installazione mi sono
procurato un riscrivibile e ho fatto un sacco di prove ... tutte
fallite miseramente ...
Allora mi sono messo su google ed ho trovato questo:
http://wiki.debian.org/DebianInstaller/NetInstWithThirdPartyNetworkDriver
non ho ancora provato ma mi sembra un ottima guida ... vi farò sapere
...
Grazie ancora,
Lorenzo