Gebruikerstip 33 (December 2003)


This text is available in English
En in het Nederlands ook te verkrijgen.

De ITE IT8212 Raid chip gebruiken onder Linux

Hoe op te starten vanaf de ITE IT8212 Raid controller
Door: Hendrik-Jan Heins, 04-01-2005, rev. 1.45

Voor de ITE IT8212 Raid controller zijn drivers onder Linux beschikbaar. Zowel in distributie specifieke als broncode variant. Dit is in een pakket te vinden op: http://www.ite.com.tw/software_download/software_download2.asp Voor de ITE IT8211 chip heeft ITE nu een eigen broncode en driverpakket ter download staan!
De procedure voor installatie / gebruik is hetzelfde als voor de IT8212 drivers, dus u kunt dit document gewoon gebruiken om een module te bouwen. Substitueert u dan wel IT8211 voor IT8212.
Het document is opgesplitst in een uitleg voor kernel 2.4 en een uitleg voor kernel 2.6.


Kernel 2.4

Als module

U kunt de module voor uw eigen distributie compileren vanaf de broncode. Hiervoor dient u het driverpakket te downloaden van de ITE website, de kernel broncode van uw kernel te installeren, de ITE broncode uitpakken, en in de ITE map "make" in te typen. Vervolgens kunt u het bestand "iteraid.o" copieren naar uw kernel module map, de scsi submap om precies te zijn. Herstart uw systeem, en type "modprobe iteraid:" achter de prompt om de module in te laden. Wanneer de module werkt, kunt u hem automatisch laten inladen door in het bestand "/etc/modules" een regel toe te voegen met de tekst: "iteraid".
U kunt de ITE IT8212 driver als kant-en-klare module voor verscheidene Distro's en als broncode vinden op: http://www.ite.com.tw/productInfo/Download.html
LET OP!!! Het is mij zelf niet gelukt om via deze weg een module voor de kernel te maken! Nu zal dat vast aan mij liggen, maar voor de mensen die het ook niet lukt, is de onderstaande methode, via integratie in de kernel source, een manier die ook werkt om de module te bouwen.


In de kernel

Pak de kernel broncode, en de IT8212 broncode uit. Copieer de bestanden "iteraid.c" en "iteraid.h" naar de scsi submap van de kernel source (-> /usr/src/linux/driver/scsi ). Voordat u de kernel nu kunt configureren en compileren, moet u eerst de bestanden "Config.in" en "Makefile" in de map /usr/src/linux/driver/scsi aanpassen.

Waarschuwing: Ik ga er niet vanuit dat wat hieronder volgt de enige, of zelfs maar de goede oplossing is, maar in mijn geval heeft het gewerkt:
In het bestand "Config.in" heb ik een regel toegevoegd met de volgende gegevens:
"dep_tristate ' ITE8212F software RAID (EXPERIMENTAL)' CONFIG_SCSI_ATA_ITE $CONFIG_SCSI_IDE $CONFIG_EXPERIMENTAL"
Deze regel staat onder de gegevens van de SATA modules. Deze regel is nodig om de module bekend te maken voor tijdens de configuratie. Door deze regel verschijnt de raid module in de scsi sectie, in de subsectie voor specifieke kaarten tijdens de configuratie.


In het bestand "Makefile" heb ik het volgende toegevoegd:
"obj-$(CONFIG_SCSI_ATA_ITE) += libata.o iteraid.o"
onder de regel over de sata_via.o (en de andere sata modules).
Ga nu verder bij kopje "vervolg".


Kernel 2.6

WAARSCHUWING!!! Linux Kernel 2.6.10 werkt niet met de standaard ITE IT8212 driver zoals die op de ITE website te vinden is. De Linux kernel is vanaf versie 2.5.x/2.6.x veranderd wat betreft beheer van gebruik van kernel modules. Wilt u op Kernel 2.6.10 toch de module compileren, gebruik dan de kernel source van Alan Cox (de -ac kernel). Vanaf kernel 2.6.11 verwacht hij dat de module in de standaard kernel zit. Vanaf deze versie, is de raid aansturing geregeld via de ide/ata laag, en dus niet meer via scsi emulatie. Voor deze versie, is deze howto dus ook niet relevant!


Als module

Het driverpakket bevat nu ook een module voor de 2.6 kernel! Ga naar: http://www.ite.com.tw/productInfo/Download.html en haal hem daar op. Deze module compileert echter nog niet correct. In het bestand "Makefile" staat: "KERNEL_SRC = /usr/src/linux-2.6.1". Vervang "linux-2.6.1" door de map voor uw kernel. Bewaar de veranderingen en u kunt de driver als module compileren met het commando "make".Vervolgens kunt u het bestand "iteraid.ko" copieren naar uw kernel module map, de scsi submap om precies te zijn. Herstart uw systeem, en type "modprobe iteraid:" achter de prompt om de module in te laden. Wanneer de module werkt, kunt u hem automatisch laten inladen door in het bestand "/etc/modprobe.preload" een regel toe te voegen met de tekst: "iteraid".


In de kernel

Om deze module in de kernel te integreren, doe je het volgende:
Pak de kernel source en de IT8212 driver source uit. Copieer de bestanden "iteraid.c" en "iteraid.h" naar de scsi submap van de kernel source (-> /usr/src/linux/driver/scsi waar "linux == linux-2.6.x"). Voordat u de kernel nu kunt configureren en compileren, moet u eerst de bestanden "Kconfig.in" en "Makefile" in de map /usr/src/linux/driver/scsi aanpassen.


In "Kconfig.in" heb ik het volgende toegevoegd:
"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. "
En wel onder de sectie over de SCSI_SATA_VIA. En in "Makefile" heb ik het volgende toegevoegd:
"obj-$(CONFIG_SCSI_ITE_RAID) += iteraid.o"
Onder de regel over de Sata_Via module.


Vervolg

Compileer de kernel nu zoals u gewend bent, maar draai geen "make dep" wanneer u een 2.6 kernel gebruikt!!!

U kunt uw kernel gaan configureren: kies "make config", "make menuconfig" of "make xconfig". Om de raid module in de kernel te compileren, kiest u de iteraid in de kernel (te vinden in de scsi kaart subsectie), en voegt u de lowlevel drivers sg (generic scsi) en sd_mod (scsi disk ondersteuning) toe aan de kernel. Dit omdat deze drivers noodzakelijk zijn om van de raid te starten.

Hierna doet u een "make dep", "make bzImage" en "make modules" Vervolgens kunt u het geheel installeren: "make modules_install" en de kernel met "make install". Dit is overigens niet aan te raden, het is veiliger om het bestand bzImage met de hand naar /boot te copieren.

Hierna moet u het bestand "lilo.conf" bewerken. (ik weet helaas niet hoe dit in Grub moet, maar ik neem aan dat de procedure ongeveer hetzelfde is).
U zult een koppeling voor de raid boot moeten maken, maar u dient ook de opstartvolgorde van de schijven aan te passen! De hoofdsectie moet er ongeveer als volgt uitzien:

boot=/dev/sda <- belangrijk!
map=/boot/map
vga=791
default="raid"
keytable=/boot/us-latin1.klt
compact
prompt
nowarn
timeout=100
message=/boot/message
menu-scheme=wb:bw:wb:bw
disk=/dev/hda bios=0x81 <- belangrijk!
disk=/dev/sda bios=0x80 <- belangrijk!

Nu de instellingen voor de raid boot:

image=/boot/bzImage
label="raid"
root=/dev/sda1
initrd=/boot/initrd-2.4.22-21mdkcustom.img
append="devfs=mount hdc=ide-scsi"
vga=791
read-only

Ik ga er niet vanuit dat u alle lilo instellingen exact zo moet hebben als ze hier staan, maar vooral de regels waar "belangrijk!" bij staat, zijn waarschijnlijk cruciaal.
Vergeet niet om "lilo -v" te draaien om de instellingen naar het mbr weg te schrijven.
En vergeet niet om "mkinitrd" te draaien wanneer u gebruik maakt van een ramdisk bij het booten.

Nu kunt u opstarten van uw Raid.

Wanneer u commentaar, vragen, of aanvullingen heeft, stuur me dan een e-mail: hjh@.passys.nl

Deze tekst is zowel in het Engels als in het Nederlands verkrijgbaar.

Handige links:
Suse kernel build uitleg

Heeft u vragen of opmerkingen over dit onderwerp? Stuur ons dan een e-mail.



home