View previous topic :: View next topic |
Author |
Message |
eaglematt Tux's lil' helper
Joined: 27 Jan 2004 Posts: 140
|
Posted: Tue Dec 14, 2004 4:18 pm Post subject: [howto] raid 5 eide hpt454 grub boot kerne 2.6.9 |
|
|
Ciao a tutti
Questa volta contribuisco un po' spero di essere chiaro
Il tutto si basa su questo topic leggermente modificato :
https://forums.gentoo.org/viewtopic.php?t=18894&highlight=howto+highpoint
https://forums.gentoo.org/viewtopic.php?t=7460&highlight=howto+highpoint
Allora partiamo
Materiale necessario:
una gentoo funzionante
1.una gentoo funzionante minimale installata su un hdd eide standard con kernel con scsi support abilitato
2.i driver scaricati dal sito highpoint (o quelli del prorpio controllore)
3. Il controller highpoint configurato ed il raid HW creato (nel mio caso raid5)
Un po' di teoria
Il problema è che il kernel 2.6.9 non gestisce i controller raid hw
ma il driver proprietario si! inoltre grub (il mio bootloader) ha qualche problema con l'identificazione dell'hdd corretto
Partiamo dal driver l'idea forse banale è di inserire il modulo corretto in initrd quindi viene caricato direttamente al boot che è gestito dal bios del raid e quindi funziona sicuro
Scaricati e decompressi i driver nella directory [miadir]/hpt controllare il puntatore ai sorgenti del kernel compilato SENZA il driver HPT ma con scsi generic, device mapper, ramdisk ed initrd support abilitati
Quindi
a questo punto nella directory dovrebbe comparire il modulo hp374.ko
provo un :
Code: |
insmod.static hp374.k
dmesg
|
Se tutto va bene posso usare cfdisk sulla device creata (in genere /dev/sda)
e creare le varie partizioni
a questo punto ho creato uno script che mi crea automaticamente l'initrd minimo, per funzionare utilizza una directory [miadir]/data dove vengono memorizzati il file di configurazione ed i moduli.
Code: |
mkdir data
cp hpt754.ko data/
|
a questo punto creo il file data/linuxrc
Code: |
#!/bin/sh
/sbin/insmod.static /hpt374.ko
/sbin/insmod.static /nvnet.ko
|
come si nota inserisco qui anche il modulo nella scheda di rete nvidia per praticità se ci sono altri moduli che uno vuol inserire può farlo qui
infine attivo lo script initrd.sh che creal il file initrd appropriato
Code: |
#!/bin/bash
#directory che contiene i moduli ed i file di configurazione
data_dir=./data
#directory corrente
target=./
#directory temporanea
mnt_dir=$target/initrd_dir
#creazione initrd image
echo Creazione initrd image
touch $target/initrd
dd if=/dev/zero of=$target/initrd bs=1024k count=8
losetup /dev/loop0 $target/initrd
mke2fs /dev/loop0
mkdir $mnt_dir
mount /dev/loop0 $mnt_dir
#aggiunta delle directory
echo Creazione directories di initrd
cd $mnt_dir
mkdir {etc,dev,lib,bin,proc,new,cdrom,sbin}
cp -dpR $data_dir/linuxrc $mnt_dir
#touch linuxrc
#chmod +x linuxrc
touch $mnt_dir/etc/mtab
touch $mnt_dir/etc/fstab
#copia dei file necessari per initrd + lirerie -> Ottimizzabile con busybox!!!
echo Creazione file di initrd
#cat
cp /bin/cat $mnt_dir/bin
#chroot
cp /bin/chroot $mnt_dir/bin
#gzip
cp /bin/gzip $mnt_dir/bin
#mount
cp /bin/mount $mnt_dir/bin
#libraries
cp /lib/libc.so.6 $mnt_dir/lib/
cp /lib/ld-linux.so.2 $mnt_dir/lib/
#mkdir
cp /bin/mkdir $mnt_dir/bin
#sh
cp /bin/sh $mnt_dir/bin
#libraries
cp /lib/libdl.so.2 $mnt_dir/lib/
#tar
cp /bin/tar $mnt_dir/bin
#liraries
cp /lib/librt.so.1 $mnt_dir/lib/
cp /lib/libpthread.so.0 $mnt_dir/lib/
#umount
cp /bin/umount $mnt_dir/bin
#pivot_root
cp /sbin/pivot_root $mnt_dir/sbin/
#insmod
cp /sbin/insmod.static $mnt_dir/sbin/
#create device
echo Creazione dispositivi
mknod $mnt_dir/dev/console c 5 1
mknod $mnt_dir/dev/null c 1 3
mknod $mnt_dir/dev/hda b 3 0
mknod $mnt_dir/dev/hdb b 3 64
mknod $mnt_dir/dev/hdc b 22 0
mknod $mnt_dir/dev/hdd b 22 64
mknod $mnt_dir/dev/tty c 4 0
mknod $mnt_dir/dev/loop0 b 7 0
cp -dpR /dev/sd* $mnt_dir/dev
#cd $target/lib
#cp udev-state $target/var/lib
#ln -s /var/lib/udev-state udev-state
cp $data_dir/hpt374.ko $mnt_dir
cp $data_dir/nvnet.ko $mnt_dir
cd $target
sync
umount $mnt_dir
rmdir $mnt_dir
|
a questo punto se tutto va bene si avrà un file di 8192 k chiamato initrd che si può copiare direttamente nella partizione di boot
Code: |
mount /boot
cp initrd /boot
|
Passiamo quindi alla modifica del file / grub/grub.conf
inserendo dopo il kernel:
Code: |
initrd (hd0,0)/initrd
|
attenzione hd0,0 è la mia partizione di boot se qualcuno nbe ha un'altra cambi di conseguenza
ok ci siamo
adesso proviamo il reboot sempre dal disco provvisorio
si noterà che prima della fase init comparirà
Code: | RAMDISK: ext2 filesystem found at block 0
RAMDISK: Loading 8192KiB [1 disk] into ram disk... done.
VFS: Mounted root (ext2 filesystem).
Mounted devfs on /dev
hpt374: module license 'Proprietary' taints kernel.
RocketRAID 154x/1640 SATA Controller driver
Version 2.12, Compiled Dec 12 2004 18:42:31
RAID5 write-back enabled
scsi0 : hpt374
Vendor: HPT3xx Model: RAID 5 Array Rev: 3.00
Type: Direct-Access ANSI SCSI revision: 00
SCSI device sda: 480243200 512-byte hdwr sectors (245885 MB)
sda: asking for cache data failed
sda: assuming drive cache: write through
/dev/scsi/host0/bus0/target0/lun0: p1 p2 p3 < p5 p6 >
Attached scsi disk sda at scsi0, channel 0, id 0, lun 0
Attached scsi generic sg0 at scsi0, channel 0, id 0, lun 0, type 0
ACPI: PCI interrupt 0000:00:04.0[A] -> GSI 5 (level, low) -> IRQ 5
|
o analogo
questo significa che il sistema ha già i driver corretti e si potranno montare le partizioni del raid
a questo punto ci sono 2 vie
o si reinstalla con chroot la gentoo sul raid
oppure si migra il sistema dal disco temporaneo al nuovo
a tal proposito ho fatto un piccolo ed inefficiente (ma funziona) script
migrate.sh
Code: |
cat migrate.sh
#!/bin/bash
#destinazione
target=/dev/sda2
#drive di boot
boot=/dev/sda1
tmpdir=/_migrate_dir
echo Monto il disco
mkdir $tmpdir
mount $target $tmpdir
echo Copio bin
cp -dpRP /bin $tmpdir
echo creo boot
mkdir $tmpdir/boot
mount $boot $tmpdir/boot
mount /boot
cp -dpRP /boot/* $tmpdir/boot/
echo Copio dev
cp -dpRP /dev $tmpdir
echo Copio etc
cp -dpRP /etc $tmpdir
echo Copio home
cp -dpRP /home $tmpdir
echo Copio lib
cp -dpRP /lib $tmpdir
echo Copio mnt
cp -dpRP /mnt $tmpdir
echo Copio opt
cp -dpRP /opt $tmpdir
echo Creo proc
mkdir $tmpdir/proc
echo Copio root
cp -dpRP /root $tmpdir
echo Copio sbin
cp -dpRP /sbin $tmpdir
echo Creo sys
mkdir $tmpdir/sys
echo Copio tmp
cp -dpRP /tmp $tmpdir
echo Copio usr
cp -dpRP /usr $tmpdir
echo Copio var
cp -dpRP /var $tmpdir
|
aggiorno fstab e grub per quanto riguarda la root nel mio caso sda2
Code: |
# For booting GNU/Linux
title GNU/Linux initrd
root (hd0,0)
kernel (hd0,0)/vmlinuz root=/dev/scsi/host0/bus0/target0/lun0/part2 init=linuxrc
initrd (hd0,0)/initrd
|
ora non resta che attivare grub
Code: |
grub> root (hd1,0) //hd1 è il drive che viene montato come /boot del raid hw
grub> setup (hd1) // drive del raid come identificato da grub
|
ok testiamo il tutto
1.reboot
2. entro nel bios della scheda madre impostando scsi come prima periferica di boot così che hd1 per grub diventa hd0 e non si deve modificare il file grub.confhd1 diverrà per grup hd0 e non è necessario modificar il file grub.conf
3. ammiro grub che parte dal raid hardware
a questo punto il disco provvisorio non serve + e si può togliere previo spegnimento del computer
salutoni a tutti
TODO
usare l'immagine compressa (lo so ma a me non funziona con gzip -9 initrd) help
Scrivere questo howto in maniera decente
PS credo funzioni su qualunque controller raid che abbia i driver modulo per il kernel quindi biuon divertimento sono anche disposto ad integrazioni e collaborazioni
ciao a tutti
MAtt |
|
Back to top |
|
|
randomaze Bodhisattva
Joined: 21 Oct 2003 Posts: 9985
|
Posted: Tue Dec 14, 2004 4:58 pm Post subject: Re: [howto] raid 5 eide hpt454 grub boot kerne 2.6.9 |
|
|
Bel tip... peccato che ci vuole l'hardware adatto per provarlo _________________ Ciao da me! |
|
Back to top |
|
|
eaglematt Tux's lil' helper
Joined: 27 Jan 2004 Posts: 140
|
Posted: Tue Dec 14, 2004 5:18 pm Post subject: |
|
|
Quote: | Inviato: Mar Dic 14, 2004 4:58 pm Oggetto: Re: [howto] raid 5 eide hpt454 grub boot kerne 2.6.9
Bel tip... peccato che ci vuole l'hardware adatto per provarlo
|
mah in realtà la macchina completa di 3 dischi con un alimentatore enermax
è costata circa 670?
scheda madre con scheda video integrata (è un server)
Quindi si può provare e la differenza si vede
matt |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|