Linux Kernel
Történet
Fejlődése
'91 – 0.01 – 10 239 programsor – MINIX függő
'94 – 1.0.0 – 176 250 programsor
'99 – 2.2.0 – 1 800 847 programsor
'01 – 2.4.0 – 3 377 902 programsor
'03 – 2.6.0 – 5 929 913 programsor
'08 – 2.6.28 – 10 195 402 programsor
EU kutatás szerint a 2.6.8 munkaértéke 882 millió euro
Működés
Futás közben
Monolitikus bináris állomány
Több rétegű, összetett (lásd következő ábra!)
Egy kódtér („kernel space”) az összes funkciónak
Loadable Kernel Module (LKM) támogatás
GPL sértési lehetőségek?
A rendszer két szintje: Kernel Space vs. User Space
Fordítás esetén
C és ASM forráskód (hierarchikus szerkezet)
Kernel Makefile (fordítási instrukciók)
Kernel konfiguráció (hierarchikus)
C header fájlok az utólagos LKM fordításhoz
Verziószámozás A.B.C[.D]
A: kernel verzió (nagyon ritkán változik)
B: fő verzió (régebben: páros: stabil, páratlan: instabil)
C: főbb javítás és fejlesztés verziója
D: kisebb javítás, gyors hibajavítás verziója
Jellezetességek
Monolitikus
Moduláris
Modulok (LKM)
"driver fogalma linuxban"
Együttműködő kernel- és userspace megoldások
http://www.linux-drivers.org/
Monolitikus, betölthető kernel modulokkal (LKM)
modulok kezelése (root jogosultsággal):
lsmod – betöltött modulok listázása
insmod – egy modul betöltése
modprobe – modul betöltése függőségekkel
rmmod – modul eltávolítása
depmod – modul függőségi lista frissítése (fordításkor)
modconf – modulok fordítása (nem mindenhol van)
/etc/modules fájl: rendszerindításkor betöltendő modulok listája
http://kernelnewbies.org/FAQ
Fordítás
Szükséges: GNU C fordító környezet (gcc, make)
Lépései (2.6 sorozat esetén):
kernel forráskód letöltése (http://kernel.org)
kernel forráskód kicsomagolása
jellemzően az /usr/src/ könyvtárban
tipikus parancs: tar xjvf linux-2.6.0.tar.bz2
kernel konfigurálása (plusz könyvtárakat igényelhet!)
karakteres: make config, make menuconfig
grafikus: make gconfig, make xconfig
alapértékek: arch/x86/defconfig fájl
főbb kategóriák
General Setup
POSIX jellemzők
verzió kiegészítések
audit beállítások
LKM támogatás
Block layer
IO schedulers
Anticipatory
Deadline
CFQ
http://www.linuxjournal.com/article/6931
Large Block Device support
Large File Support
Processor Type and Features
Processor Family
SMP
Virtualization
Clock Ticks
Preemptív működés
Disable
Voluntary
Preemptible
http://kerneltrap.org/node/2702
http://oreilly.com/catalog/linuxkernel/chapter/cli0.html
http://kpreempt.sourceforge.net/
Memory Model
IRQ routing
Power Management
ACPI
APM
Bus Options
PCI
ISA
PCMCIA
stb...
Networking
Socketek
IP
filtering (iptables)
GRE
TCP
SCTP
IPSec
ATM
Ethernet
Brdidging
VLAN
filtering (etables)
DECNet
IPX
AppleTalk
X.25
IRDA
Bluetooth
WLAN
Device Drivers
Block Devices
IDE
SATA
SCSI
RAID, LVM
FireWire
Ethernet
PPP
WLAN
FDDI
Token Ring
Mouse
Graphics
Audio
File Systems
Ext2, Ext3, XFS, JFS
Quota support
CDROM/DVD
DOS/FAT/NT
/proc
NFS/CIFS/NCP/CODA/AFS
Partition types
Language support
Security options
Security Models
SELinux
POSIX capabilities
GRSecurity (opc)
AppArmor (opc)
Crypto support
Virtualization
kernel fordítása
make
kernel image telepítése, bootloader konfigurálása
make modules_install, make install + grub vagy lilo
egyéb kézi vagy automatizált procedúra
Linkek
http://www.kernel.org/
http://kernelnewbies.org/