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