121010
Appendix=Kernel Compilation
Vad behövs?
Centos
    kernel-devel
    kernel-headers
I alla distar
    make
    gcc
Varför heter det kärna?
    Från början låg det ett yttre skal (KSK, SH, HSJ), innanför det låg (s)bin och libs, innanför det kernel.
Kompilera
    ./configure
    make
    makefile
       bryter ned byggprocessen i flera steg
          gör alltså apa.c, banan.c och foo.c till .o
       lib.lib
       Gör till slut program
       make ser till att bara kompilera det som är nytt för datorn
       Problemet med den här processen för större program (som linuxkärnan) är att det blir svårhanterligt för att det är så många filer.
    make clean
       till för att bygga allt från början om något går fel
    make mrpoper
       I princip samma som clean men bara för linuxkärnan
Att bygga kärnan
    make
        config
           hata, val för allt
        menuconfig
        xconfig
           bygga grafiskt
        gconfig
          det Rolle använder
--------------------------- de viktigaste står här över.
        oldconfig
       silentoldconfig
       defconfig
       $(PLATFORM]
       allyesconfig
       allmodconfig
       allnoconfig
          säger nej till allt
       allrandconfig
          till för kärnutvecklare att se om kärnor fungerar
    General setup
       Ofta är de flesta default-valen vettiga, så vet man inte vad det är, lämna det därhän.
       prompt for development and/or incomplete cod/drivers
          ger stöd för experimentella funktioner
       automatically apped version to the version string
          bra för mer komplett stöd, framför allt för binära blobbdrivar, ofta bra att ha med trots att kärnan blir större av det.
       support for paging of anonymous memorty (swap)
          enable/disable swap
       POSIX message queues
          kommunikation mellan olika program, viktigt att ha för många program som kommunicerar mellan varandra
       enable deprecated sysfs features
          kan vara bra för legacy
       Choose SLAB allocator
          Omtvistat ämne, hur man allokerar minnesresurser, legacy
       Enable loadable module support (new)
          viktigt att ha för att kunna ladda moduler
          finns olika alternativ, exempelvis om man vill ha versioner och checksums
             checksums är bra för säkerhet även om det är lite segare
       Processer type and features
          tickless system
             kan spara ström och batteri
          high resolution timer
             för snabbare processorcykler
          symmetric multi-processing support
             hängde inte alls med
          support for big SMP systems with more then 8 CPUS
             Bra om man har många kärnor
          Support for extenden (non-PC) x86 platforms
             bra om man inte bygger för en PC
          Specific laptop support
             Ta bort om man inte kör deras laptops
          Power management and ACPI option
             Power manager
                viktigt
             suspend to ram
                sleep
             suspend to disk
                hibernate
             run time pm core functionality
                stänga av portar som man inte använder så att de inte drar ström
             ACPI
                kul att leka med laptops
          bussar
             PCI support
                viktigt
             PCI-E support
                viktigt
             ISA
                 viktigt på äldre system
          PCI hotplug
             bra för servers som stödjer det, komplext och MYCKET kan gå fel.
          Executable FIle formats/emulations
             kernel support for ELF binaries
                vanligast
             write ELF core dumps with partial segments
                dumpar ut RAM vid krasch till disk, bra för felsökning
             ECOFF
                legacy
             MISC binaries
                för att kunna köra icke-pura unixprogram, den kan alltså skicka vidare signaler om det kommer från program som den normalt inte kan hantera
          TCP/IP
             många kul saker, många essentiella grejer finns här
          ATM
             Används av bankerna men är rätt gammalt och används inte av så mycket.
          L2TP
             bra för VPN
          vlan support
             virtuella LAN
          WAN router
             intressant
          CAN bus subsystem support
             kan användas i somliga bilar, koppla datorn till bilen
          IRDA
             föregångaren till blåtand
          bluetooth
             gissa vad
          wireless
             stöd för olika varianter av protokollen
          WIMAX
             stora trådlösa nätverk, vanligt i USA
          Generic driver options
             tmpfs bra om an vill ha det
          MTD partitioning support
          Paralell port support
             kan vara viktigt i industri, används för många moduler och skrivare
          plug and play support
             mest viktigt för gamla ISA-grejer
          block devices
             framför allt diskar, men även bandstationer och lite annat.
                RAID, paralellportar IDE, floppy och lite annat liknande gos.
          VMware balloon driver
             Rolle visste inte vad det var exakt
          IEEE 1394 (firewire)
             väldigt fint om man har en sån port, bra port för externa prylar.
          I2O
             Har massor med trevligt guck inne i hårdvaran.
          Watchdog Timer Support
             kollar om saker lever eller inte, om inte så dödar den dem.
          File System
             Det är viktigt att se till att de FS man använder under boot finns stöd för i kärnan.
             FUSE kan vara mysigt att ha stöd för i kärnan
          Virtualization
             Stöd för KVM finns i kärnan
        Spara
    make ; make modules; make install; make modules_install
       alternativt
         
make && make modules && make install && make modules_install