Installation von IDE-Raid Controllern unter Linux


Kernel 2.6.x

Bei dem 2.6 Kernel habe ich gemerkt, dass es wesentlich einfacher ist, die Module direkt in den Kernel zu kompilieren, anstatt sie in das Imagefile, in dem sich die Module befinden, zu packen.
Wenn man sich die neueren 2.6er Kernel anschaut, wird dem einen oder anderen vielleicht aufgefallen sein, dass die Module nicht mehr als ext2 System vorliegen, sondern mit gzip und cpio gepackt sind. Das machte die Sache zu meinem Ärger etwas komplizierter, da es immer wieder zu einem Kernel Panic kam und ich nicht rausfinden konnte woran es lag. Alle Hilfen die ich in Foren nachlaß, schlugen bei mir fehl. Natürlich kann man den alten Zustand wieder herstellen, doch man fragt sich, welchen Vorteil es haben sollte, diesen Aufwand bei jedem Kernel neu zu veranstalten.
Da das alles viel zu lange dauert, und ich ein fauler Mensch bin, habe ich eine Möglichkeit gesucht, die Iteraid-Treiber gleich in den Kernel zu kompilieren, sodass ich mittels Grub auch von dieser Platte booten kann.  Aber ich fand nur Patches, die etwas älter waren, als den Kernel, den ich gerade benutzte. Also suchte ich weiter, und fand eine sehr einfache Möglichkeit, die mich von den Patches unabhängig macht. Diesem Tutorial von Hendrik-Jan Heins habe ich noch kleine Ergänzungen hinzugefügt, sodass die Beschreibung für den 2.6.9er up-to-date ist. Falls jemand Kerneltreiber für den 2.4er  erstellen will, sollte auch das obige Tutorial lesen.

1. Zuerst sollte man sich den neuen Kernel(2.6.9) besorgen. Diesen sollte man dann in das Verzeichnis "/usr/src/" entpacken. Jetzt muß man entweder ein "make oldconfig" laufen lassen oder das Config-File seines gerade aktuellen Kernels verwenden (Es liegt meist in "/boo/config*"). (Unter debian gibt es mit dem aktuellen 'testing' Zweig ein wenig Probleme mit "make oldconfig", zu diesem Problem sollte in den entsprechenden Foren geguckt werden).

2. Jetzt besorgt man sich seine Iteraid-Treiber, sollte man dies noch nicht gemacht haben. Den Treiber bekommt man auf dieser Seite "www.ite.com.tw". Ich gebe nicht den kompletten Pfad an, weil die Esel das irgenwie dauernd ändern.

3. Man entpackt die 2.6er Treiber nun (NUR iteraid.o und iteraid.h) in das Verzeichnis "/usr/src/linux-2.6.x/drivers/scsi". Jetzt geht man in das scsi Verzeichnis und sucht im "Konfig.in" File, die Einträge von SCSI_SATA_VIA. Hinter diesem Eintrag, fügt man folgende Zeilen ein:

config SCSI_ITE_RAID
           tristate "ITE IT8212 support"
           depends on SCSI && PCI && EXPERIMENTAL
           help
           For use of the ITE IT8212 RAID controller.

           If unsure, say N.

Danch geht man noch in das Makefile und fügt, wieder hinter dem SCSI_SATA_VIA Modul-Eintrag, folgende Zeile ein:

obj-$(CONFIG_SCSI_ITE_RAID) += iteraid.o

4. Als Anschluß muß man den Treiber noch im Kernel aktivieren. Dies kann man mittels: "make config", "make menuconfig" oder "make xconfig" machen. Folgende Treiber müssen für einen fehlerfreien Betrieb in den Kernel gelinkt werden:

CONFIG_SCSI=y
CONFIG_SCSI_PROC_FS=y

CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_SG=y

CONFIG_SCSI_ITE_RAID=y


Mittels "make menuconfig" sind die Treiber unter "Device Driver --->  SCSI device support --->" und "Device Driver --->  SCSI device support ---> SCSI low-level drivers" zu erreichen. (Dies kann scih jedoch von Kernel zu Kernel ändern.)

5. Man sollte nun seinen Kernel von Grund auf neu kompilieren, da es bei mir z.B nicht klappte, wenn ich nur die Binarys in den entsprechenden Verzeichnisen gelöscht habe. Aus diesem Grund sollte man folgendermaßen fortfahren:

make clean
make
make modules
make modules_install
make install

Falls noch Fragen offen sein sollten, schaut euch das Tutorial von Hendrik-Jan Heins an.



Kernel 2.4.x


1. Erst einmal diese File runterladen, dort sind die Treiber drin:
raid_treiber.bz2
(Rechtsklick und "Save link target" auswählen)
Da diese Version vom IDE-Raid Treiber nur für den Fedora Default-Kernel kompiliert wurde, sind natürlich die Sourcen beigelegt. Für das Neukompilieren für ihren Kernel müssen sie die Kernelsourcen zur Hand, wie auch die ash und attr-Libraries installiert haben. Bitte passen Sie die Beschreibung ihrem Kernel an.

2. Als root einloggen, am besten nur auf einer Konsole.

3. Kopieren der "ideraid.o" in ein Verzeichnis deiner Wahl, z.B. Rootverzeichnis


4. Testen der
"ideraid.o" Datei mit:

modprobe sr_mod
modprobe sd_mod
insmod iteraid.o

Um sicher zu gehen, dass die Dateien auch wirklich in den Kernel geladen wurden, kann man den Modulstatus mit

dmesg

abfragen. Man sieht dabei ungefähr folgende Nachricht:
...
Attached scsi disk sda at scsi0, channel 0, id 0, lun 0
SCSI device sda: 120103200 512-byte hdwr sectors (61493 MB)
...

5. Wenn man den Raid Treiber bei jedem Start von Linux automatisch geladen haben möchte und nicht jedesmal
"insmod iteraid.o" eingeben möchte, muß man zusätzlich folgende Schritte machen.
Nun werden wir die Module komplett installieren und dem System sagen, wo er sie findet. Geben sie bitte

install -d /lib/modules/2.4.20-8/kernel/drivers/scsi
install -c iteraid.o /lib/modules/2.4.20-8/kernel/drivers/scsi


ein. Nun informieren wir das System, wann er die Module laden soll. Wir werden Jetzt die Treiber in das RAM-Disk-Image einfügen. (In diesem Fall ist es die "/boot/initrd-2.4.20-8.img" Datei, das ist aber von ihrem System abhängig und kann bei ihnen einen anderen Namen tragen.
Folgende Komandos müssen jetzt eingegeben werden

gzip -dc /boot/initrd-2.4.20-8.img > /tmp/initrd.ext2
mkdir /mnt/initrd
mount -o loop /tmp/initrd.ext2 /mnt/initrd
cp iteraid.o /mnt/initrd/lib/
cp /lib/modules/2.4.20-8/kernel/drivers/scsi/scsi_mod.o /mnt/initrd/lib/
cp /lib/modules/2.4.20-8/kernel/drivers/scsi/sd_mod.o /mnt/initrd/



6. Nun muß man mit einem Editor folgende Zeilen in die "/mnt/initrd/linuxrc" einfügen. Benutzen sie z.B den emacs.

emacs /mnt/initrd/linuxrc

<>Nun fügt man folgendes dort ein:

#!/bin/sh
echo "Loading scsi_mod module"
insmod /lib/scsi_mod.o
echo "Loading sd_mod module"
insmod /lib/sd_mod.o
echo "Loading IT8212 module"
insmod /lib/iteraid.o


7. Nun beenden wir das Image editieren mit:<>
umount /mnt/initrd
gzip -c /tmp/initrd.ext2 > /boot/initrd-2.4.20-8.img


8. Frischen sie ihren Bootloader grub oder lilo auf.

9. Machen sie einen Reeboot.


10. Die neue oder neuen Festplatten können sie jetzt in die "/etc/fstab" integrieren
/dev/sda1    /mnt/raid    ext2    defaults    0 0



11. Viel Spaß