Version 3 (modified by 16 years ago) (diff) | ,
---|
Syn-3 startup procedure
Hieronder vind je de gehele bootprodecure, van begin tot eind op volgorde. Bekijk dit ware stuk Linux kunst dus goed, voordat je wijzigingen gaat maken! ;)
Boot loader
Tegenwoordig gebruiken we grub als bootloader (vroeger lilo). Grub word geinstalleerd op de MBR van alle schijven die onderdeel zijn van de RAID1 boot array. (/dev/md0) Het installeren gebeurt automatisch door middel van source:trunk/npl/system/grub/syn3-grubinstall .
Afhankelijk van het geselecteerde product type zal dit menu er anders uit zien. (zie SynProducts)
Men heeft keuze uit 3 opstart mogelijkheden:
- Normal: Gebruikt bij iedere normale reboot
- Test: Boot de nieuwst geinstalleerde kernel+initrd. Nadat deze geboot is moet de gebruik bevestigen dat deze goed werkt. Hierna worden deze kernel+initrd gekopieerd naar Normal.
- Safe mode: Boot de kernel die na de eerste originele installatie op het systeem gezet was. Dit moet eigenlijk veranderd worden: Sommige systemen bevatten nog een 2.4 kernel en deze zal niet meer booten in de nieuwe 2.6 situatie van tegenwoordig.
Extra boot opties
In grub kun je met de letter 'e' de commandline wijzigen. Je kan dan 1 van de volgende opties toevoegen:
- nofscheck: sla filesystem checks over.
- shell: onderbreekt het bootprocess 2 maal met een shell: de eerste is voordat er iets gedaan is. de tweede is nadat alle initialisatie, checks zijn gedaan en alle modules zijn geladen. als je uit de 2e shell gaat boot het systeem gewoon door.
- debug: onderbreekt het bootprocess naar iedere stap. Zie ook debug
- text: start het systeem in textmode
- driver=modulenaam: laadt een extra kernel module in.
InitRD
Het eerste wat de kernel uitvoert is de init ramdisk. Deze ramdisk heeft als taak er voor te zorgen dat het root filesystem gestart kan worden. Deze procedure bestaat uit zeer veel stappen, omdat we willen dat Syn-3 altijd boot op alle machines en onder zoveel mogelijk situaties. Deze procedure vind je in source:trunk/npl/kernel/initrd/linuxrc :
Splash screen
Bepaal of de user een splashscreen wil (aan de hand van kernel parameters) en laadt de juiste framebuffer driver in. De kernel is gepatched met fbsplash, dus zodra we een framebuffer driver inladen zal het splashscreen actief worden. fbsplash kijkt naar de kernel paramters welk screen nodig is, dus zo krijgen we onze Product Types. (SynProducts)
Debug mode
Als men het woord debug toevoegd aan de kernel commandline zal het systeem bij iedere stap naar een shell gaan.
Inladen kernel modules
Hierna worden alle nodige kernel modules ingeladen. Dit zijn in elk geval de drivers voor SCSI/SATA/IDE controllers en netwerk kaarten. (ivm redundancy). Het detecteren van de juiste modules gaat door modprobe de juiste module te laten zoeken bij de inhoud van alle modalias files in /sys. Verder worden er nog wat losse modules geladen, die je vind in source:trunk/npl/kernel/initrd/modules. (niet al deze files zijn in gebruik, check het script)
Installer starten?
Hierna word gekeken of men de installer wil aanroepen (ook kernel commandline parameter.) Indien dit het geval is zie dan SynInstaller.
Nadat deze terug keert gaat het booten gewoon verder.
Software RAID activatie
Het software RAID systeem word geactiveerd door mdadm de raid devices te laten detecteren.
Er zijn 2 raid arrays: md0 (kernel + initrd, gewoon RAID 1) en md1 (rest van het systeem, opgedeeld via LVM, RAID1 of RAID5)
'Dit detecteren gaat nu nog mis als er nog andere software raid systemen aanwezig zijn! '
LVM activatie
Als raid goed gegaan is laten we de lvm utils domweg alle gevonden LVM volume groups activeren.
Redundancy via DRBD
Omdat de redundancy configuratie dynamisch is moeten we een config file inladen die in /boot (/dev/md0) staat. (drbd.conf) We mogen /dev/md0 echter 'niet' wijzigen, omdat dit voor corruptie zorgt als men redundancy zou gebruiken. Om deze reden mounten we het systeem met mount -oro,norecovery. Zo kunnen we de file toch inlezen, zonder het filesystem aan te passen.
Indien DRBD actief is word source:trunk/npl/kernel/initrd/drbd.boot aangeroepen. Zie SynRedundancy? voor een beschrijving van deze prodecure. Deze functie keert pas terug zodra de node actief (master) geworden is. (Dit kan dus 'oneindig' lang duren als de andere node al master is.)
Er worden symlinks aangemaakt naar de juiste devices voor /dev/home, /dev/root, /dev/boot en /dev/swap.
Of er nou wel of geen redundancy actief is - de boot procedure kan vanaf nu onveranderd verder gaan zonder dat men rekening hoeft te houden met redundancy.
Filesystem check en reparatie
Theoretisch hoeft XFS nooit gerepaired te worden, doordat het journalling heeft, maar het komt toch wel eens voor. Vandaar dat we altijd een check en eventuele repair moeten doen.
Start root filesystem
Nu kan /dev/root gemount worden en worden hier de symlinks /dev/home, /dev/root, /dev/boot en /dev/swap neer gezet.
Er word gepivot root en /sbin/init word gestart.
Init scripts
Syn-3 is gebouwd op een slackware 10 omgeving, zodat we een zo kaal mogelijk start punt hadden. Inmiddels hebben we veel grote toevoegingen en wijzigingen gemaakt, maar een groot deel van de init is nog gelijk gebleven.
Hier beschijven we globaal wat er gebeurd zodat je weet waar je je eigen dingen neer moet zetten.
BSD / Slackware standaard boot
Het eerste deel van de boot is voornamelijk standaard slackware zooi. Bepaalde scripts zijn echter aangepast, deze vind je in source:trunk/npl/syn3/syn3-scripts/etc .
Netwerk setup
Dit gebeurd door de SCC (SynControlCenter), vanuit /etc/rc.d/rc.inet1.
Om de netwerk instellingen te kunnen customizen kan de gebruiker /etc/network/network.up aanmaken en executable maken. Nadat de SCC alles geconfigged heeft word dit script aangeroepen. Exit code 1 geven als er iets mis gaat, dan ziet de user dit ook terug. Dit script is standaard niet aanwezig, maar er staan wel een aantal voorbeeld scripts. (bijv network.up.loadbalancer)
Een update mag network.up nooit aanpassen! Als je een 'vaste' wijziging aan het netwerk wilt maken moet je /etc/rc.d/rc.inet1 (source:trunk/npl/syn3/syn3-scripts/etc/rc.d/rc.inet1) aanpassen. (of de SCC)
Firewall setup
Om de firewall te kunnen customizen kan de gebruiker op dezelfde manier als hierboven de /etc/firewall/firewall.up aanpassen. Hier staan al wat voorbeelden in.
Ook hier geldt dat een update dit script nooit mag aanpassen, en dat je aanpassingen in /etc/rc.d/rc.inet1 moet doen. (of in de SCC)
Boot scripts van packages
Vanuit rc.local word souce:trunk/npl/syn3/syn3-scripts/scripts/syn3-boot aangeroepen. Dit script zorgt ervoor dat alle executable scripts in /etc/boot.d worden aangeroepen.
Plaats custom bootscripts die bij iedere boot moeten worden gestart dus in /etc/boot.d/. (let op de exit codes!)
Ook de eindgebruiker word aanbevolen hier een file neer te zetten, in plaats van de rc.local aan te passen.
Services (Daemontools)
Alle netwerk services van Syn-3 draaien onder daemontools. Zie ook SynServices.
/usr/bin/svscanboot word gestart via /etc/inittab, na rc.M. Zodra svscanboot draait worden alle actieve services parallel opgestart, zonder te wachten! Om deze reden word /usr/bin/svcbootcheck aangeroepen vanuit de inittab. Deze controleert of alle services de juiste status (up/down) hebben. (Zie SynServices)
Post installatie van packages
Als laatste stap in het bootprocess word /sbin/postinst.sh aangeroepen vanuit de inittab. Deze zorgt er voor dat alle post-installatie scripts in /etc/postinst.d eenmalig worden uitgevoerd. Zie SynPackaging.
SCC
Als laatste word /etc/rc.d/rc.apache_webint gestart vanuit de inittab. (Deze restart ook automatisch bij problemen) Dit script zorgt er voor dat de Syn-3 Control Center gestart word. Dit is voor de gebruiker tevens de indicatie dat het systeem gereed is om te gebruiken. Zie SynControlCenter.
Syn-3 shutdown procedure
Dit is allemaal vrij droog, gewoon de services af laten sluiten via inittab runlevels.
Shutdown scripts
Speciale shutdown scripts (zoals bijvoorbeeld voor vservers) plaats je in /etc/shutdown.d. Dit werkt het zelfde als boot.d; syn3-shutdown word als eerste stap van het shutdown process aangeroepen. (alles draait op dat moment dus nog)
Correct-afgesloten-controle
Als laatste stap voor het read-only mounten word de file .cleanshutdown aangemaakt op alle filesystems. Hieraan kan het systeem bij een volgende start zien dat alles de vorige keer netjes afgesloten was.