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