081010
Kapitel 4 - Boot/init
Mer felsökning
/lib/modules/[version av linux]/[olika smaker tillgängliga]/

Varför kallas det boot?
Bootstrap loader (ladda via snöret för hela skon, dvs, förenkla) fanns förrut.
Förrut fanns inget ROM, så man var tvungen att manuellt (binärt) mata in den binärsnutt som behövdes för att ladda in resten.
BIOS - Basic Input/Output System
DOS skulle vara relativt hårdvaruoberoende, därför bestämdes det att de grundläggande funktionerna som diskhantering och liknande skulle skötas av BIOS.
Problem med BIOS:
IBMs första dator med hårddisk (kallas winchester, var på 5 MB) och många problem kommer därför av att det är fortfarande i verkligheten anpassat för att fungera med storlekar i den storleken.
Diskar har ofta lite fler sektorer redo än vad som representeras, detta är för att skydda datat då den kan skicka datat från söndriga sektorer till hela.
S.M.A.R.T. - kollar allt möjligt om diskar
EFI - Bara uppstartsprogram
Skapat av en stor kommité för att klara moderna behov, problemet är att det är lite för komplext så det har inte rört sig speciellt snabbt och det kommer ta tid innan det är stabilt i funktioner.
BIOS har problem med stora diskar och har alltid haft det, gränser har legat på lite olika mått, numer är problemet vid 2 TB.

LILO      - Linux loader
    Gör man en omkonfiguration måste man installera LILO igen.
GRUB    - GRand Unified Boot loader
    Installeras 1 gång, ändras i grub.cfg (kallas i legacy för menu.lst)
    GRUB jobbar i tre steg, ett minimalt som startar ett större initialiseringsprogram som startar det slutgiltiga programmet.
    Har stöd för de vanliga filsystemen, det gör att man kan editera grub utan att ha ett avancerat OS.
GRUB2  - version 2 av GRUB
    Helt modulär
    Praktiskt för auto conf
    Opraktiskt för människor
När man ser att GRUB laddas visar den en punkt för varje steg den laddar.

grub.cfg
-Kärnan
    -nosplash
       Tar bort splashscreenen.
    -quiet (ibland kallas den silent)
       Om man vill veta mer får man ta bort den flaggan.

init
    Det första som startas i linux.
    Problemet är att även i serverhallarna så är datorerna inte statiska, man pluggar ur och in hårdvara tom under drift, de flyttas runt mellan nätverk och miljöer, den har svårt att hantera sånt.
       init har börjat ersättas på diverse sätt för att få ner boot-tiderna och lite annat.
    inittab
    runlevels
       0 - datorn nere (avslutad eller försöker avsluta)
       1 - single user mode
       2 - multi user mode
          Ibland startas grafisk miljö här.
       3 - multi user med nätverk
          Ibland startas grafisk miljö här.
       4 - multi user med näverk och grafisk inloggning
       5 - Varierar
          Kan vara som 4 med istället för 4.
       6 - omstart
    /etc/init.d/ start/stop/restart
        Det är enkelt att göra så att script fixar det.
    /var/run/....pid
       processid för tjänsten, bra exempelvis för att döda processen för en specifik apache-demon så att man startar om bara den istället för hela tjänsten.
    rc.local
       oavsett vad man än har för init så kör man den i slutet av uppstarten
inittab
    Runlevels
    "Ctrl+alt+delete"s funktion kan ställas in
    UPS ställs in där, den kör en demon för att hålla koll på UPS:en och hur lång tid den har kvar.
    Ställer in getty också, man kan ställa av automatiskt uppstart av de olika tty:erna.
       I CentOS kör de mingetty.
    Man kan även ställa in saker som har med ens display manager.

Fotnot:
Linuxkärnan supportar upp till 3408 diskar.
Apache måste starta en demon för varje anslutning, därför har de hela tiden många processer igång.
    Det går att göra så att varje demon kan hantera flera anslutningar, kanske 20-30 eller så.
nginx är en webbserver som många gillar.
    startat av ryssar.
sysv init
    UNIX system V, en fil för varje tjänst.
BSD init
    Den andra stora smaken, en fil för varje runlevel, arch linux kör det.
    /etc/init.d/http
       lägre processnummer körs tidigare
        /etc/rc3.d/S55http
          Start
          Länk till /etc/init.d/http
        /etc/rc3.d/K55http
          Kill
          Länk till /etc/init.d/http
Kärnan laddar
    initrd
       Bantat system som laddar de moduler som behövs, därför som det är lätt att byta disk mellan datorer.
       När man bygger egen kärna kan man hoppa över det här steget, vilket är praktiskt för boot-tider.
    init
       går att byta ut med systemd (fedora) eller upstart (ubuntu), båda används i andra projekt
starta dator där man inte har root och få rootaccess
    Från GRUB
        kernel.... init=/bin/bash -l
        mount -o remount -o rw /
Bra för labb2: /etx/selinux/config (selinux=disabled).