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
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).
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.
Let wel op: Wanneer je de optie "experimental" aangeeft, moet je ook zorgen dat de "experimentele" modules zichtbaar
zijn tijdens de configuratie. Dit doe je door "[*] Prompt for development and/or incomplete code/drivers" aan te vinken
in "Code maturity level options ".
Hierna doet u een "make dep", "make bzImage" en "make modules"
Hierna kunt u het geheel installeren: "make modules_install"
en de kernel met "make install". Dit is overigens niet aangeraden, 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.
Handige links:
http://www.suse.de/~agruen/kernel-doc/ ; Suse kernel build uitleg
Wanneer u commentaar, vragen, of aanvullingen heeft, stuur me dan een e-mail: hjh@.passys.nl