Kerne kompilering
Af Bjarke Johannesen
14. Marts 2000
Målgruppe:
Dem som ikke har prøvet at kompilere en kerne, og dem som har, men ikke er expert i kerne kompilering. Hvis du gerne vil vide lidt mere end bare at kompilere, som f.eks modules.
(Dette dokument vil være online på http://www.aalug.dk/noter.htm)
Indhold for dette fordrag:
Hvad er kernen?
Nyeste kerne version
Hvordan finder jeg letteste ud af hvad der er den nyeste kerne verison?
Hvad er godt at vide før man går igang med kerne kompilering?
Selve kerne kompilering
Modules
Modules styring
Andre kerne ting.
Spørgsmål
Hvad er kernen
Kernen er software interfacet mellem unix programmerne og hardwaret. Kernen agere som et virutal maskine lag.
Derudover laver kernen tidsdeling(multitaskning), Ram allokering og Proces styring.
Kernen kan have hardware drivere liggende som moduler, eller statisk kompileret ind i kernen. Moduler er dynamisk og kan startes og stoppes uden genstart af kernen.
Nyeste kerne version (13/3/00)
2.2.14 -- Stable udgave
2.3.51 -- Developer udgave (og nu forløberen for 2.4)
2.0.38 -- Mest stabile udgave
Kernen kan hentes på http://www.kernel.org
Pre. kerner kan findes på: http://www.kernel.org/pub/linux/kernel/alan/ såsom 2.2.15pre eller 2.0.39pre (Pre kerner kan ikke betraktes som stable udgaver).
Hvilken kerne er den nyeste, og hvordan finder jeg letteste ud af det?
finger @finger.kernel.org
Hvis man ikke lige har finger, kan man også se det i kernel.orgs ftp kataloger
Hvad er godt at vide før man går i gang men kerne kompilering?
Maskinens hardware (som skal understøttes af kernen):
K6-2 CPU
Ide harddiske
ATAPI Cdrom
EE100Pro intel netkort
SB 16 lydkort
Hvad jeg vil køre som moduler?
Andre filsystemer
Code pages osv.
(netkort)
(lydkort)
Selv kerne kompileringen:
cd /usr/src/linux
make xconfig (brug normalt denne)
make makemenu (hvis man ikke har Xwin tilrådighed)
make config (ælste configsystem, men det virker )
(her forgår selve konfigureringen i kerne konfig programmet)
make dep (skal køres hvis man har rettet noget med kerne config værktøjerne)
make clean (kun hvis man allerede har kompileret)
make bzlilo (kør nu kompileringen af kernen)
make modules (modul kompilering)
make modules_install (installer modulerne, skal køre hvis man bruge modules)
Husk lige at checke at /etc/lilo.conf er rigtig konfigureret.
lilo (hvis man da bruger lilo og lige har rettet i lilo.conf)
Nu kan man så reboote for at køre ens ny kompileret kerne. Dog er det en god ide at have en gammel kerne som backup, hvis den nye ikke kan køre.
Modules og loadning osv af dem:
Modprobe starter et modul , hvis det ikke allerede er blevet loadet, eller er statisk i kernen.
Modulerne ligger i kataloget: /lib/modules/2.2.14/. Og her er der under-kataloger, som fs for filesystems, net for netværk osv.
Modul styring:
Lsmod lister alle moduler loaded ind i kernen
Rmmod fjerne et modul som er loaded ind i kernen
Modprobe starter et modul.
/etc/conf.module Config fil for modprobe
f.eks (/etc/conf.modules).
alias eth0 unknown
alias tr0 oltr
options tr0 laa=\"40.00.12.34.56.78\"
Andre kerne ting:
Developer kernen, hvorfor bruge den?
- Pre patches(til kommende 2.2/4 kerner) kan man også bruge til at understøtte hardware eller afhjælp problemer.
Rette i Makefile for kernen.
- SVGA_MODE= ASK_VGA
- (står i ..linux/Documentation/svga.txt)
- Brug i stedet xconfig->console setup
- INSTALL_PATH=/boot
- INSTALL_MOD_PATH=
Hvordan sletter man ens kerne setup og får default tilbage?
Ved at slette alle .* filer i linux kataloget
Patches til hardware?
Sprøgsmål