Ik heb hier een eenvoudige server staan met IDE-RAID daarin. Twee schijven zitten hangen aan die controller in RAID-1
Ook zit er nog een derde schijf op normaal ATA IDE-1, momenteel met een Debian installatie.
De RAID-kaart is een Promise TX2000.
Nu heb ik een kernel 2.4.22-ac4 gebakken en los daarvan de Promise TX2000 driver van de Promise website. Ik kan vanuit de bestaande installatie prima uit de voeten met de raid-setup.
Nu heb ik Debian geinstalleerd op de raidset (/dev/sda*). Voor de setup even FastTrak.o geladen vanaf een floppy. Ging prima.
Nu wil ik ook graag booten vanaf deze raidset. Nu heb ik eerst even zitten klooien om die FastTrak.o static in de kernel mee te bakken maar dat wilde niet echt lukken (paar rare references naar __this_module). Dus moet het via een initrd.
Vervolgens heb ik initrd-tools geinstalleerd om een ramdisk te kunnen bakken. Even in /etc/mkinitrd/modules (?) de module FastTrak gezet (te vinden in /lib/modules/2.4.22-ac4/kernel/drivers/scsi/ zodat deze automatisch geladen wordt.
Vervolgens `mkinitrd -o initrd.raid` gerund zodat ik een initrd file krijg. Deze file heeft alles in huis om een ramdisk te vormen + FastTrak.o (want dat is de enige module in /lib/modules/2.4.22-ac4/kernel/drivers/*).
Nu zou je denken: zet de kernel+syslinux+initrd op een flop en booten maar. maar helaas dit gaat niet omdat het bij elkaar iets van 1.8MB groot is. Flop geformatteerd op 1.7M is dus ook nog te klein.
Dus ik denk: ik ben slim en chroot() naar de gemounte raidset, /boot handmatig gemount. Vervolgens maak ik een goede lilo.conf (dus in de chrooted environment op de raidset) met (o.a.) de volgende entries:
boot=/dev/sda
root=/dev/sda6
image=/boot/vmlinuz-2.4.22-ac4
initrd=/boot/initrd.raid # initrd.raid hierheen gekopieerd
root=/dev/sda6
vervolgens draai ik lilo, geeft 'ie alleen de warning dat '/dev/sda is not on the first disk'. LILO -v -v geeft verder geen errors.
In de raidset is /boot => /dev/sda1 en die is gemount, de kernel heeft initrd+ramdisk support.
Mooi, ik gereboot, maar ik kom niet verder met 'LI 01 01 01 01 01 01 01 01 01 01'
En zojuist was het al 'LI AA AA AA AA' of 'LI 80 80 80 80' enz. Achter elkaar schermen vol.
Dus ik gezocht op google, maar daar is verder erg weinig specifieke info te vinden waarom dit niet zou werken. Het begint me onderhand allemaal een beetje te duizelen.
Er zit dus iets nog niet helemaal goed. Hoe kan ik ervoor zorgen dat er wel een goede bootsector op de raidset wordt geschreven zodat lilo normaal werkt?
Dit is dus niet een specifiek driver probleem, maar puur lilo/initrd gekkigheid.
Ook zit er nog een derde schijf op normaal ATA IDE-1, momenteel met een Debian installatie.
De RAID-kaart is een Promise TX2000.
Nu heb ik een kernel 2.4.22-ac4 gebakken en los daarvan de Promise TX2000 driver van de Promise website. Ik kan vanuit de bestaande installatie prima uit de voeten met de raid-setup.
Nu heb ik Debian geinstalleerd op de raidset (/dev/sda*). Voor de setup even FastTrak.o geladen vanaf een floppy. Ging prima.
Nu wil ik ook graag booten vanaf deze raidset. Nu heb ik eerst even zitten klooien om die FastTrak.o static in de kernel mee te bakken maar dat wilde niet echt lukken (paar rare references naar __this_module). Dus moet het via een initrd.
Vervolgens heb ik initrd-tools geinstalleerd om een ramdisk te kunnen bakken. Even in /etc/mkinitrd/modules (?) de module FastTrak gezet (te vinden in /lib/modules/2.4.22-ac4/kernel/drivers/scsi/ zodat deze automatisch geladen wordt.
Vervolgens `mkinitrd -o initrd.raid` gerund zodat ik een initrd file krijg. Deze file heeft alles in huis om een ramdisk te vormen + FastTrak.o (want dat is de enige module in /lib/modules/2.4.22-ac4/kernel/drivers/*).
Nu zou je denken: zet de kernel+syslinux+initrd op een flop en booten maar. maar helaas dit gaat niet omdat het bij elkaar iets van 1.8MB groot is. Flop geformatteerd op 1.7M is dus ook nog te klein.
Dus ik denk: ik ben slim en chroot() naar de gemounte raidset, /boot handmatig gemount. Vervolgens maak ik een goede lilo.conf (dus in de chrooted environment op de raidset) met (o.a.) de volgende entries:
boot=/dev/sda
root=/dev/sda6
image=/boot/vmlinuz-2.4.22-ac4
initrd=/boot/initrd.raid # initrd.raid hierheen gekopieerd
root=/dev/sda6
vervolgens draai ik lilo, geeft 'ie alleen de warning dat '/dev/sda is not on the first disk'. LILO -v -v geeft verder geen errors.
In de raidset is /boot => /dev/sda1 en die is gemount, de kernel heeft initrd+ramdisk support.
Mooi, ik gereboot, maar ik kom niet verder met 'LI 01 01 01 01 01 01 01 01 01 01'
En zojuist was het al 'LI AA AA AA AA' of 'LI 80 80 80 80' enz. Achter elkaar schermen vol.
Dus ik gezocht op google, maar daar is verder erg weinig specifieke info te vinden waarom dit niet zou werken. Het begint me onderhand allemaal een beetje te duizelen.
Er zit dus iets nog niet helemaal goed. Hoe kan ik ervoor zorgen dat er wel een goede bootsector op de raidset wordt geschreven zodat lilo normaal werkt?
Dit is dus niet een specifiek driver probleem, maar puur lilo/initrd gekkigheid.