Toon posts:

[Linux] Booten van hardware RAID

Pagina: 1
Acties:

Verwijderd

Topicstarter
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.

Verwijderd

Topicstarter
Even nog een toevoeging:
Het probleem is dus 'lilo op de raidset'. Ik kijk even naar grub ;-)

  • MGP
  • Registratie: Juni 2001
  • Laatst online: 24-12-2025

MGP

Ik heb precies het zelfde probleem alleen dan met de S150 TX4 SATA controller van promise.
Ik ben nu al 2 dagen met dit probleem bezig, de enigste oplossing die ik gevonden heb om alle schijven van de SATA controller te booten is om een IDE harddisk van de installatie te voorzien en die dan met een converter aan SATA te hangen.
Maar nu is die harddisk gestorven ;( en moet ik ook de lilo op de SATA harddisk installeren.

Volgens mij is het gewoon een probleem in de driver van promise.

[ Voor 8% gewijzigd door MGP op 10-11-2003 19:53 ]


  • irondog
  • Registratie: Januari 2001
  • Laatst online: 11-05-2025

irondog

alle dingen moeten onzin zijn

Verwijderd schreef op 10 november 2003 @ 14:48:
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:
[...]
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.

[...]
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.
Vóórdat je de chroot ingaat en /sbin/lilo -v uitvoert, kun je beter ff dit doen:
#mount -o bind /dev /mnt/chrootdir/dev/

Voor het geval je devfs gebruikt kunnen de gemaakte devices na het laden van de module ook gevonden worden door lilo.

[P5B deluxe] [Core2Duo 6300] [2 X 1GB DDR2] [GF FX7300] [320 GB WD] [Gentoo] [VISTA]


Verwijderd

Topicstarter
irondog schreef op 10 november 2003 @ 20:19:
[...]

Vóórdat je de chroot ingaat en /sbin/lilo -v uitvoert, kun je beter ff dit doen:
#mount -o bind /dev /mnt/chrootdir/dev/

Voor het geval je devfs gebruikt kunnen de gemaakte devices na het laden van de module ook gevonden worden door lilo.
Ben me niet bewust dat ik dat gebruik ;) Maar ik denk dat het probleem als volgt is:

* Je geeft aan lilo door dat 'ie op /dev/sda moet installeren
* Hij verwacht dus een scsi controller met booten, deze bestaat niet, want het is een hardware controller die in ieder geval niet scsi is maar er wel gebruik van maakt.

Je krijgt hetzelfde effect als dat je je partitie tabel wijzigd en dan probeert te booten zonder dat je lilo opnieuw hebt laten draaien, dan voelt 'ie zich een soort van 'opgelicht'.

Kunnen we dit voorkomen door bepaalde parameters mee te geven?

BTW: ik ben er idd ook al twee dagen mee bezig...

  • irondog
  • Registratie: Januari 2001
  • Laatst online: 11-05-2025

irondog

alle dingen moeten onzin zijn

* Je geeft aan lilo door dat 'ie op /dev/sda moet installeren
* Hij verwacht dus een scsi controller met booten, deze bestaat niet, want het is een hardware controller die in ieder geval niet scsi is maar er wel gebruik van maakt.
Is dat zo dan?
Je krijgt hetzelfde effect als dat je je partitie tabel wijzigd en dan probeert te booten zonder dat je lilo opnieuw hebt laten draaien, dan voelt 'ie zich een soort van 'opgelicht'.
Opgelicht. Zo voel ik me wel eens. Mijn computer voelt zich over het algemeen beter. Je bootloader kun je niet volledig installeren met /sbin/lilo -v
De laatste stages moeten zich bevinden in /boot en zodra je zelf gaat kloten met partities in GNU/Linux, zul je lilo opnieuw moeten installeren om de juiste executables ook weer in /boot te krijgen.
ik denk met: apt-get install lilo (ofzoiets)
BTW: ik ben er idd ook al twee dagen mee bezig...
Ah. :)

[P5B deluxe] [Core2Duo 6300] [2 X 1GB DDR2] [GF FX7300] [320 GB WD] [Gentoo] [VISTA]


Verwijderd

Topicstarter
...
'right..... ;)

  • MGP
  • Registratie: Juni 2001
  • Laatst online: 24-12-2025

MGP

Ik heb gevonden hoe het moet:

Als eerst moet je een initrd aanmaken, je kan het proberen met mkinitrd maar die werkte niet goed bij mij. Dus de volgende stappen moeten ondernomen worden (stap 2 mag ook voor stap 1):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#Stap 1:
#maak een dir bijvoorbeeld initrd en daarin alle benodigde mappen
mkdir initrd
cd initrd
mkdir {bin,dev,sbin}
mkdir -p lib/modules/2.4.22/kernel/drivers/scsi

#kopieer alle bestande erin
cp /bin/ash bin/ash
cd bin
ln -s ash sh
ln -s ash bash
cd ..
cp -a /dev/null dev/null
cp -a /dev/console dev/console
cp /lib/libc.so.6 lib/libc.so.6
cp /lib/ld-linux.so.2 lib/ld-linux.so.2
cp /lib/modules/2.4.22/kernel/drivers/scsi/sd_mod.o lib/modules/2.4.22/kernel/drivers/scsi/sd_mod.o
cp #jouw scsi/sata driver lib/modules/2.4.22/kernel/drivers/scsi/#jouw driver
cp /sbin/depmod sbin/depmod
cp /sbin/modprobe sbin/modprobe
(joe,nano,pico,vi) linuxrc
#in linuxrc moet komen te staan:

#!/bin/sh
/sbin/modprobe -k sd_mod
/sbin/modprobe -k #jouw driver
#sluit linuxrc

chmod 775 linuxrc
cd ..
chroot initrd
depmod -a
exit


#Dat was stap 1, nu stap 2:
# maakt een zo klein mogelijke kernel (maximaal maar 700 kb groot)
#daarin moet staan:
# Block devices -->
#     <*> Loopback device support
#     <*> RAM disk support
#     (4096) Default RAM disk size
#     [*] Initial RAM disk (initrd) support
# ATA/IDE/MFM/RLL support -->
#     <*> ATA/IDE/MFM/RLL support
#     IDE,ATA and ATAPI Block devices -->
#       <M> SCSI emulation support
# SCSI support --->
#      <*> SCSI support
#      <M>   SCSI disk support
#       <M>  SCSI generic support
# File systems --->
#       <*> Ext3 support #als je het gebruikt
#       <*> Minix fs support

#Stap 3:
# nu gaan we de initrd.img maken
mkdir loop
dd if=/dev/zero of=initrd.img bs=1024 count=1600
mkfs.minix initrd.img
mount -o loop -t minix initrd.img loop
cp -av initrd/* loop/
umount loop
gzip initrd.img
cp initrd.img /boot/initrd.img-2.4.22
rmdir loop

#stap 4:
# /usr/sbin/mkboot aanpassen zodat hij de initrd mee neemt want het is maar een bash script
#hieronder zie je een stuk uit mkboot wat aangepast is

# make a lilo boot disk
makelilo () {
(
    b=$tmpdir/boot$$
    trap "set +e; cd /; umount /dev/fd0; rmdir $b" 0
    set -ex
    mkdir $b
    mke2fs -q /dev/fd0
    mount -t ext2 /dev/fd0 $b
    cp /boot/boot.b $b/boot.b
    cp $1 $b/vmlinuz
    cp /boot/initrd.img-2.4.22 $b/initrd.img
    cd $b
    cat > lilo.conf <<- EOF
        lba32
        boot = /dev/fd0
        install = boot.b
        map = map
        compact
        prompt
        timeout = 50
        read-only
        image = vmlinuz
        initrd = initrd.img
        label = linux
        root = $rootpart
        EOF
    lilo -v -C lilo.conf

#stap 5:
#we zijn er bijna, nu mkboot uitvoeren
# /dev/sda1 is de rootschijf waar we de straks van willen opstarten
#/boot/bzImage ik neem aan dat daar je kernel image staat 
mkboot -r /dev/sda1 /boot/bzImage
#Als je kernel te groot is zegt hij dat ie de map file niet kan schrijven en de initrd.img 
#Dan moet je je kernel nog kleiner maken, ik heb mijn 2.4.22 kernel tot 650 kb kunnen krijgen

#Als de disk is gemaakt kan je daarmee booten
# je moet wel al een filesystem op je scsi/sata schijf hebben staan

#Als je de scsi/sata schijf geboot hebt en je ziet je filesystem dan hoef je alleen
#nog lilo te draaien op de schijf met de goede lilo.conf
#Hieronder staat mijn lilo.conf

lba32
disk=/dev/sda
    bios=0x80
boot=/dev/sda
install=/boot/boot-menu.b
map=/boot/map
delay=20
vga=normal
default=Linux

image=/boot/bzImage
        label=Linux
        initrd=/boot/initrd.img-2.4.22
        root=/dev/sda1
        append="ide2=none ide3=none"
#       restricted
#       alias=1


Veel geluk ermee

[ Voor 3% gewijzigd door MGP op 11-11-2003 14:28 ]


  • sphere
  • Registratie: Juli 2003
  • Laatst online: 24-02 13:55

sphere

Debian abuser

Heb je enig idee waarom je maar zo'n kleine kernel mag hebben? Het lijkt me nog lastig om zo'n kleine 2.6 kernel in elkaar te fietsen, die zijn "default" al een stuk groter dan 2.4. Is misschien de ramdisk die je aanmaakt te klein?

Zelf ben ik namelijk een fan van statically compiled kernels, en als die kernel zo klein is moet je wel een hele hoop modules loaden.

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454


  • MGP
  • Registratie: Juni 2001
  • Laatst online: 24-12-2025

MGP

sphere2 schreef op 11 november 2003 @ 14:34:
Heb je enig idee waarom je maar zo'n kleine kernel mag hebben? Het lijkt me nog lastig om zo'n kleine 2.6 kernel in elkaar te fietsen, die zijn "default" al een stuk groter dan 2.4. Is misschien de ramdisk die je aanmaakt te klein?

Zelf ben ik namelijk een fan van statically compiled kernels, en als die kernel zo klein is moet je wel een hele hoop modules loaden.
Hij moet zo klein zijn omdat hij niet anders naast de initrd.img op de diskette past want die is zelf al een 600 kb groot En de kernel op de diskette hoeft niet eens alles te bevatten alleen maar genoeg om bij de scsi/sata schijf te komen. Na de lilo op de sata/scsi schijf te hebben uigevoerd heb je de diskette niet meer nodig

[ Voor 12% gewijzigd door MGP op 11-11-2003 14:43 ]


  • sphere
  • Registratie: Juli 2003
  • Laatst online: 24-02 13:55

sphere

Debian abuser

Oh duh. Maar als je het eenmaal aan de gang hebt kan je wel weer een full-fledged kernel erop kwakken toch? Ik heb wel eens die raid-howtos gelezen op tldp, maar daar zag ik nooit iets over bootdisks :?

Nog eens lezen dan maar.

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454


  • MGP
  • Registratie: Juni 2001
  • Laatst online: 24-12-2025

MGP

sphere2 schreef op 11 november 2003 @ 14:44:
Oh duh. Maar als je het eenmaal aan de gang hebt kan je wel weer een full-fledged kernel erop kwakken toch? Ik heb wel eens die raid-howtos gelezen op tldp, maar daar zag ik nooit iets over bootdisks :?

Nog eens lezen dan maar.
Nee daar staat ook niets over bootdisks, want als je driver goed werken heb je die ook niet nodig. Maar van promise zijn de sata drivers een beetje erg gaar als je daar de lilo gewoon naar /dev/sda1 wilt schrijven krijg je bij het booten alleen maar L 01 01 01 01. Dus moest er een omweg verzonnen worden om het wel werkend te krijgen.

  • sphere
  • Registratie: Juli 2003
  • Laatst online: 24-02 13:55

sphere

Debian abuser

Hrm, van de VIA 8237SB weet ik dat de sata support in de kernel nogal brak is. Echter, de libata patch (of mdule :?) werkt prima. Kan je dat niet gewoon gebruiken voor die promise controller dan? Voor die via sb moest je wel generic ide uit zetten, want anders zat het elkaar in de weg.

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454

Pagina: 1