OpenBSD 3.x RAIDframe installation

Detta dokument beskriver installation av OpenBSD 3.6 (instruktionerna skrev jag ursprungligen för OpenBSD 3.5, men är senast testade och verifierade med OpenBSD 3.6) på den mjukvaru-RAID som OpenBSD stöder (RAIDframe). Filerna som finns att ladda ner är omanpassade för OpenBSD 3.6, och kräver en smärre modifiering för att fungera med 3.5 igen.

Installationen och anvisningarna är skrivna för i386 plattformen och IDE diskar, men är enkel att anpassa för andra plattformar och disksystem, förutsatt att GENERIC kerneln (dist) har stöd för den hårdvara som systemet ska installeras på.

Instruktionerna förutsätter att du åtminstone installerat OpenBSD 3.x någon gång tidigare på någon plattform, och de flesta stegen måste du vara 'root' för att utföra.

 
Installation av den rootpartition som ska lämna över kontrollen till systemet på RAIDen
Starta installation som vanligt, skapa en liten 'a' partition (bootpart), på minst 150Mb. Exakt hur mycket du bör avsätta för root partitionen beror på hur mycket du vill kunna göra där (kompilera kernel, eller installera nyttiga program du vill kunna köra utan att starta upp RAIDen).

Gör en swap partition 'b' på lämplig storlek (2*RAM, eller minst 128Mb), och sedan en enda stor 'p' (partitionstyp 'RAID') av resten av disken. Den sista partitionen kommer att ingå i RAID arrayen, och delas in i fler partitioner senare.

Använder du diskar av mindre storlek (upp till 4GB) är det lämpligast att inte dela upp RAID-området på disken alls.

Not:

Vad ryms ?utrymme
Det nödvändiga för att kunna lägga över kontrollen på root-RAID partitionen (base,etc,generic kernel och RAIDframe kernel). 115Mb
+ 'man pages' 140Mb
Full installation utan 'X' (i detta ingår utvecklingsverktyg m.m.) 220Mb
Utrymme för att få plats med kernelkällkoden och kompilering av denna. 350Mb
Lite marginal för program (packages) du kanske vill ha tillgängligt även när RAIDen inte tagit över. 500Mb

Det går att frigöra ca 6Mb till för att få plats med ex. fler kernel filer om man tar bort Apache 1.3 från bootpartitionen då installationen är klar (/var/www, /usr/sbin/httpd, /usr/sbin/apachectl, /usr/bin/htpasswd och säkert några fler inte allt för stora filer).

Beroende på hur mycket diskutrymme du reserverat för boot partitionen så installerar du allt från bara 'bsd', 'base' och 'etc' (samt ev. 'man') som är nödvändigt för att få igång burken, eller så väljer du allt utom "X" delarna (förvalt).
 
Kompilera / installera kernel med RAIDframe stöd:
Om du valt att inte ge plats för utvecklingsverktyg ('a' partition på mindre än 350Mb), kan du börja med att ladda ner mitt färdigkompilerade GENERIC+RAIDframe kernel som för tillfället finns för OpenBSD i386 3.6 och 3.5.

Ladda ner 'Generic+RAID' för OpenBSD 3.6 eller för OpenBSD 3.5

# mv /bsd /bsd.old
# gunzip bsd_36_raid.gz
# mv bsd_36_raid /bsd

Not:

Väljer du att kompilera ditt eget kernel med RAIDframe support så kan du utgå ifrån GENERIC konfigurationen, och sedan aktivera en av de utkommenterade raderna och lägga dit en extra:

# cd /usr/src/sys/arch/i386/conf
# cp GENERIC GENERIC_RAID
  option RAID_AUTOCONFIG
  pseudo_device raid 4
# config GENERIC_RAID
# cd ../compile/GENERIC_RAID
# make depend && make
# mv /bsd /bsd.old (eller /bsd.raid om mitt GENERIC+RAIDframe använts)
# cp bsd /

Raden 'pseudo_device raid 4' finns redan, men är bortkommenterad, och 'option RAID_AUTOCONFIG' gör att man kan (om man vill) se till att RAIDen initieras automatiskt när man startar upp systemet.

 
Kopiera bootpartitionen från disk 1 till disk 2:
Skriv ett nytt MBR på disk 2 och starta om datorn (bootar upp på det nyinstallerade systemet):
# fdisk -i wd1
# sync; reboot
Spara partitionsinfo från disk 1 (inte nödvändigt, men bra för referens).
Partitionera disk 2 likadant som disk 1.
Skapa filsystem för bootpartitionen på den andra disken:
# disklabel wd0 > /root/disklabel.wd0
# disklabel wd0 | disklabel -R wd1 /dev/fd/0 
# newfs /dev/rwd1a
Kopiera det som är installerat på boot/root partitionen på disk 1 till disk 2.
Installera bootsektorn på disk 2.
Skapa en tom fil i rooten på disk 2, så att det enkelt går att se vilken disk som är root vid uppstart.
Ladda ner ett shell-script för momentet
# mount /dev/wd1a /mnt
# cd /
# pax -r -w -p e -v .cshrc .profile altroot bin boot bsd* dev etc home root sbin \
  stand tmp usr var /mnt/
# mkdir /mnt/mnt
# /usr/mdec/installboot -v /mnt/boot /usr/mdec/biosboot wd1
# touch /mnt/spareboot
Ta ner systemet och koppla ur den första disken (wd0). Starta upp, och kolla att systemet kommer igång (filen /spareboot ska finnas). Ändra i fstab, så att wd1 är root istället för wd0.
Ta ner systemet igen och koppla in båda diskarna. Starta upp som vanligt, men välj att ladda kernel från disk 2 för att testa att 'nödstarten' fungerar (boot prompten):
> boot hd1a:/bsd
Kolla att filen /spareboot finns, /dev/wd1a ska vara mountad som root.

Ta ner systemet (halt) och boota om som vanligt (starta upp på wd0)
 
Initiera RAIDen, partitionera och formattera arrayen:
Skapa konfigurationsfil för raid arrayen (Ladda ner)

## /root/raid0.conf.new
START array
1 2 0

START disks
/dev/wd0p
/dev/wd1p

START layout
128 1 1 1

START queue
fifo 100
## end config

Skapa arrayen, och sätt igång paritetsfix:
# raidctl -C /root/raid0.conf.new raid0
# raidctl -I 112230 raid0
# raidctl -iv raid0
Medan pariteten fixas går det inte att göra så mycket annat än vänta. Ev. kan du logga in på maskinen via ssh, och med jämna mellanrum kolla hur långt paritetsfixen hunnit (med raidctl -s raid0)
# raidctl -s raid0
raid0 Components:
           /dev/wd0p: optimal
           /dev/wd1p: optimal
No spares.
Parity status: clean
Reconstruction is 100% complete.
Parity Re-write is 100% complete.
Copyback is 100% complete.
#
Skriv MBR på raid0 och partitionera raidsetet
# fdisk -i raid0
# disklabel -E raid0

Beroende på storleken på diskarna, så ska helst flera partitioner skapas. Jag brukar som "standard" skapa partitionerna a + d-h, där a är 'root' och h är 'home'. Skippa swap partitionen, eftersom det redan finns två på diskarna sen installation av det bootbara systemet.

Nedanstående tabell visar rätt så vettiga storlekar på partitionerna. Vill du ha mer plats för installerade program och kompilationer, så är det i första hand /usr och /usr/local som kan behöva göras större.

Är diskarna du använder av mindre storlek (upp till 4GB) är det lämpligast att inte dela upp RAID-området på disken alls.

partitionstorlekmountpoint
raid0a250Mb/
raid0d1Gb/usr
raid0e2Gb/
raid0f250Mb/var
raid0g250Mb/tmp
raid0hresten/home


Formattera partitionerna på raidarrayen:
Ladda ner ett shell-script för momentet
# newfs /dev/rraid0a
# newfs /dev/rraid0d
# newfs /dev/rraid0e
# newfs /dev/rraid0f
# newfs /dev/rraid0g
# newfs /dev/rraid0h
Eftersom raid0h troligtvis är störst, så tar den mest tid att formattera. Under tiden går det att fortsätta med installationen, då /home inte behövs under installation.
 
Installera OpenBSD på raidarrayen:
Skapa mountpoints och mounta upp alla partitioner på raidsetet (utom /home):
Ladda ner ett shell-script för momentet
# mount /dev/raid0a /mnt
# mkdir /mnt/usr /mnt/var/ /mnt/tmp /mnt/home
# mount /dev/raid0d /mnt/usr
# mkdir /mnt/usr/local
# mount /dev/raid0e /mnt/usr/local
# mount /dev/raid0f /mnt/var
# mount /dev/raid0g /mnt/tmp
Mounta OpenBSD 3.6 dist CDn och packa upp alla binärarkiv på RAIDen:
Ladda ner ett shell-script för momentet
Shell scriptet kollar att det arkiv som packas upp inte redan finns på arrayen. Nedan är det man normalt skulle göra via prompten:
# mkdir /mnt2
# mount /dev/cd0a /mnt2
# cd /mnt
# tar xvzfp /mnt2/3.6/i386/etc36.tgz
# tar xvzfp /mnt2/3.6/i386/base36.tgz
# tar xvzfp /mnt2/3.6/i386/comp36.tgz
# tar xvzfp /mnt2/3.6/i386/man36.tgz 
# tar xvzfp /mnt2/3.6/i386/game36.tgz
# tar xvzfp /mnt2/3.6/i386/misc36.tgz
Kopiera tidigare fixade saker (i samband med installationen av root partitionen):
Ladda ner ett shell-script för momentet
# cd /
# pax -r -w -p e -v dev boot bsd* /mnt/
# cd /etc
# cp -p fstab kbdtype my* hostname.* hosts resolv* dhc* /mnt/etc/
Anpassa /mnt/etc/fstab (dvs /etc/fstab på RAIDens root partition) (Ladda ner)
## /etc/fstab
/dev/raid0a / ffs rw 1 1
/dev/raid0d /usr ffs rw 1 2
/dev/raid0e /usr/local ffs rw 1 2
/dev/raid0f /var ffs rw 1 2
/dev/raid0g /tmp ffs rw 1 2
/dev/raid0h /home ffs rw 1 2
/dev/wd0b none swap sw 0 0
/dev/wd1b none swap sw 0 0

Alternativ för bättre säkerhet (nosuid,nodev):
/dev/raid0a / ffs rw 1 1
/dev/raid0d /usr ffs rw,nodev 1 2
/dev/raid0e /usr/local ffs rw,nodev 1 2
/dev/raid0f /var ffs rw,nodev,nosuid 1 2
/dev/raid0g /tmp ffs rw,nodev,nosuid 1 2
/dev/raid0h /home ffs rw,nodev,nosuid 1 2
/dev/wd0b none swap sw 0 0
/dev/wd1b none swap sw 0 0

För att kunna köra ex. qmail (mail server) på burken senare måste 'nosuid' tas bort för /var.

Ändra root lösenord på raidade systemet
# /mnt/usr/sbin/chroot /mnt
# passwd
Changing local password for root.
New password:
Retype new password:
# exit 
Gör så att arrayen funkar som rootpartition och starta om
# raidctl -A root raid0
# reboot
Om det funkar.. ta ner burken och koppla ur den ena (primära) disken.. starta upp.. Det ska stå component0: failed el liknande vid raidctl -s raid0 kommando:
# raidctl -s raid0
Components:
           component0: failed
            /dev/wd1p: optimal
Ta ner systemet igen och koppla in disken och starta upp. Kommandot 'raidctl -s raid0' ger /dev/wd0p: failed
# raidctl -s raid0
Components:
            /dev/wd0p: failed
            /dev/wd1p: optimal
Bygg om speglingen:
# raidctl -R /dev/wd0p raid0
# raidctl -s raid0
Än en gång kommer det att ta en hel del tid (ungefär lika som då pariteten skulle fixas innan raidarrayen fick sina partitioner). Kolla status som tidigare med raidctl -s raid0 tills resultatet blir:
# raidctl -s raid0
raid0 Components:
           /dev/wd0p: optimal
           /dev/wd1p: optimal
No spares.
Parity status: clean
Reconstruction is 100% complete.
Parity Re-write is 100% complete.
Copyback is 100% complete.
#
Systemet ska nu vara klart för vidare installation och anpassning till det det ska användas till.