The Linux Kernel HOWTO
Brian Ward,
[email protected], svensk
�vers�ttning: Linus �kerlund,
[email protected]
v0.80, 26 May 1997, svensk �vers�ttning 21 juni 1998
Detta �r en detaljerad guide till k�rn-konfigurering, kompilering,
uppgraderingar och problem-l�sning f�r ix86-baserade system.
______________________________________________________________________
Inneh�llsf�rteckning
1. Inledning
1.1 L�s det h�r f�rst! (Jag menar det)
1.2 N�gra ord om stilen
1.3 �vers�ttarens anm�rkningar
2. Viktiga fr�gor och svar p� dessa
2.1 Vad �r det k�rnan g�r, f�rresten?
2.2 Varf�r skulle jag vilja uppgradera min k�rna?
2.3 Vilken slags h�rdvara st�djer de nyare k�rnorna?
2.4 Vilka versioner av gcc och libc beh�ver jag?
2.5 Vad �r en laddningsbar modul?
2.6 Hur mycket h�rddisk-utrymme beh�ver jag?
2.7 Hur l�ng tid tar det?
3. Hur den faktiska konfigureringen av k�rnan g�r till
3.1 Skaffa k�llkoden
3.2 Packa upp k�llkoden
3.3 Konfigurera k�rnan
3.3.1 Matte-emulering i k�rnan (Math emulation in kernel)
3.3.2 Normal (MFM/RLL) disk och IDE disk/cdrom-st�d
3.3.3 N�tverks-st�d (Networking support)
3.3.4 Begr�nsa minnet till 16 MB (Limit memory to low 16 MB)
3.3.5 System V IPC
3.3.6 Processor-typ (386, 486, Pentium, PPro)
3.3.7 SCSI-st�d (SCSI support)
3.3.8 St�d f�r n�tverks-enhets (Network device support)
3.3.9 Filsystem
3.3.9.1 Men jag vet inte vilka filsystem jag beh�ver!
3.3.10 Tecken-enheter (Character devices)
3.3.11 Ljud-kort
3.3.12 Andra konfigurerings-alternativ
3.3.13 "K�rn-hackande" (Kernel hacking)
3.4 Och nu d�? (Makefile)
4. Kompilera k�rnan
4.1 St�da upp och ange beroenden (Cleaning and depending)
4.2 Kompilerings-dags
4.3 Andra "make"-prylar
4.4 Installera k�rnan
5. Patcha k�rnan
5.1 L�gga till en patch
5.2 Om n�got g�r snett
5.3 Bli av med .orig-filer
5.4 Andra patchar
6. Ytterligare paket
6.1 kbd
6.2 util-linux
6.3 hdparm
6.4 gpm
7. N�gra fallgropar
7.1 make clean
7.2 Enorma eller l�ngsamma k�rnor
7.3 K�rnan kompilerar inte
7.4 Den nya versionen av k�rnan verkar inte starta (boot)
7.5 Du gl�mde k�ra LILO, eller systemet startar inte alls
7.6 Jag f�r `warning: bdflush not running'
7.7 Den s�ger saker om "undefined symbols" och kompilerar inte
7.8 Jag f�r inte min IDE/ATAPI CD-ROM-spelare att fungera
7.9 Den s�ger konstiga saker om "obsolete routing requests"
7.10 Brandv�gg fungerar inte i 1.2.0
7.11 ``Not a compressed kernel Image file''
7.12 Problem med konsoll-terminalen efter uppgradering till 1.3.x
7.13 Verkar inte som om jag kan kompilera saker efter k�rn-uppgradering
7.14 Ut�ka gr�nser
8. Anm�rkning om att uppgradera till version 2.0.x
9. Moduler
9.1 Installera modul-verktygen
9.2 Moduler som distribueras med k�rnan
10. Andra konfigurerings-alternativ
10.1 Vanliga inst�llningar (General setup)
10.2 Networking options
11. Tips och knep
11.1 Omdirigera utdatan fr�n make- eller patch-kommandona
11.2 Villkorlig k�rn-installering
11.3 Uppdateringar av k�rnan
12. Andra relevanta HOWTOn, som kan vara anv�ndbara
13. Diverse
13.1 F�rfattare
13.2 Att g�ra
13.3 Bidrag
13.4 Upphovsr�tt, licens och s�dana grejer
______________________________________________________________________
1. Inledning
Borde du l�sa det h�r dokumentet? Tja, se efter om du har n�got av
f�ljande problem:
� "Arg! Det h�r wizzo-46.5.6-paketet s�ger att det beh�ver k�rn-
version 1.8.193 och jag har fortfarande version 1.0.9!"
� Det finns en enhets-drivrutin i en av de nyare k�rnorna som du bara
m�ste ha
� Du har verkligen inte en aning om hur man kompilerar en k�rna
� "�r de h�r grejerna i READMEn verkligen allt?"
� Du kom, du f�rs�kte, det fungerade inte
� Du beh�ver n�got att ge till folk som insisterar p� att be dig att
installera deras k�rnor �t dem
1.1. L�s det h�r f�rst! (Jag menar det)
N�gra av exemplen i det h�r dokumentet f�ruts�tter att du har GNU tar,
find och xargs. De �r ganska standard; detta ska inte skapa n�gra
problem. Det f�ruts�tts ocks� att du k�nner till ditt systems
filsystems-struktur; om du inte g�r det s� �r det viktigt att du har
en avskrift av mount-kommandots utdata, under normala f�rh�llanden
(eller en listning av /etc/fstab, om du f�rst�r den). Denna
information �r viktig och �ndras inte, f�rutsatt att du inte
partitionerar om din h�rddisk, l�gger till en ny, installerar om ditt
system eller n�got liknande.
Den senaste "production"-versionen av k�rnan, n�r detta skrivs, var
2.0.30, vilket inneb�r att referenserna och exemplen korresponderar
till den utg�van. �ven om jag f�rs�ker g�ra det h�r dokumentet s�
versions-oberoende som m�jligt, s� �r k�rnan st�ndigt under
utveckling, s� om du har en ny utg�va, s� kommer d�r oundvikligen att
finnas skillnader. �terigen, detta borde inte skapa n�gra problem,
men det skulle kunna ge upphov till viss f�rvirring.
Det finns tv� versioner av k�llkoden till Linux-k�rnan, "production"
och "development" (stabil respektive utvecklings-version. �vers.anm.).
Production-utg�vor b�rjar med 1.0.x �r f�r tillf�llet versionerna med
j�mna nummer; 1.0.x var production, 1.2.x var production, precis som
2.0.x. Dessa k�rnor anses vara de mest stabila, bugg-fria versionerna
tillg�ngliga, d� de ges ut. Utvecklings-versionerna av k�rnan (1.1.x,
1.3.x osv) �r menade som test-k�rnor, f�r folk som har lust att prova
p� nya och ibland ganska buggiga k�rnor. Du har blivit varnad.
1.2. N�gra ord om stilen
Text som ser ut s� h�r �r antingen n�got som upptr�der p� din sk�rm,
ett filnamn, eller n�got som kan skrivas in direkt, s�som ett
kommando, eller parametrar till ett kommando (om du l�ser detta
dokument i rent text-format, s� ser det inte annorlunda ut). Kommandon
och andra indata citeras ofta (med ` '), vilket skapar f�ljande
klassiska kommaterings-problem: om en s�dan sak upptr�der i slutet av
en mening, inom citationstecken, s� skriver folk ofta en `.'
tillsammans med kommandot, eftersom det amerikanska s�ttet att citera
s�ger att man ska s�tta punkten innanf�r citationstecknen. �ven om det
sunda f�rnuftet (och tyv�rr s� f�ruts�tter detta att den som har sunt
f�rnuft �r van vid den s� kallade amerikanska citations-stilen) borde
s�ga �t en att ta bort punkten f�rst, s� �r det m�nga som helt enkelt
inte kommer ih�g det, s� jag kommer placera punkten utanf�r citations-
tecknen i s�dana fall. Med andra ord, om jag s�ger �r dig att skriva
"make config", s� skriver jag `make config', inte `make config.'
1.3. �vers�ttarens anm�rkningar
Uppdaterade dokumentet 13/11-98, genom att byta ut �vers�ttningen av
"permissions" till "r�ttigheter", ist�llet f�r det s�mre "till�telser"
2. Viktiga fr�gor och svar p� dessa
2.1. Vad �r det k�rnan g�r, f�rresten?
Unix-k�rnan fungerar som en medlare mellan dina program och din
h�rdvara. F�rst och fr�mst s� utf�r den (eller ser till s� att det
blir utf�rt) minneshantering f�r alla program (processer) som k�rs,
och ser till s� att alla f�r sin r�ttvisa (eller or�ttvisa, det beror
p� hur man ser p� saken) tilldelning av processor-cykler. Vidare s�
tillhandah�ller den ett trevligt, ganska portabelt gr�nssnitt, som g�r
att programmen kan prata med din h�rdvara.
K�rnan g�r visserligen mer �n s�, men dessa grundl�ggande funktioner
�r de viktigaste att k�nna till.
2.2. Varf�r skulle jag vilja uppgradera min k�rna?
Nyare k�rnor erbjuder generellt m�jligheter att prata med flera typer
av h�rdvara (de har allts� fler enhets-drivrutiner), de kan ha b�ttre
process-hantering, de kan arbeta snabbare �n �ldre versioner, de kan
vara mer stabila �n �ldre versioner och de kan r�tta till fjantiga
buggar i �ldre versioner. De flesta uppgraderar sina k�rnor f�r att de
vill ha drivrutinerna och bugg-fixarna.
2.3. Vilken slags h�rdvara st�djer de nyare k�rnorna?
Se Hardware-HOWTOn. Eller s� kan du ta en titt p� `config.in'-filen i
Linux-k�llkoden, eller helt enkelt f� reda p� det n�r du k�r `make
config'. Detta visar dig all h�rdvara som st�ds av standard-
distributionen av k�rnan, men inte allt som Linux st�djer; m�nga
vanliga enhets-drivrutiner (s�som PCMCIA-drivrutinerna och band-
drivrutinerna) �r laddningsbara moduler, vilka utvecklas och
distribueras separat.
2.4. Vilka versioner av gcc och libc beh�ver jag?
Linus rekommenderar en viss version av gcc i README-filen, som kommer
med Linux-k�llkoden. Om du inte har denna version, s� talar gcc-
dokumentationen i den rekommenderade versionen av gcc om ifall du
beh�ver uppgradera libc. Detta �r inte en sv�r procedur, men det �r
viktigt att du f�ljer instruktionerna.
2.5. Vad �r en laddningsbar modul?
Dessa �r delar av k�rn-koden, vilka inte l�nkas (inkluderas) direkt
till k�rnan. Man kompilerar dem separat, och kan s�tta in dem och ta
bort dem fr�n k�rnan som k�rs, n�stan n�r som helst. P.g.a. deras
flexibilitet, s� �r de nu det mest popul�ra s�ttet att koda vissa
k�rn-funktioner. M�nga popul�ra enhets-drivrutiner, s�som PCMCIA-
drivrutinerna och QIC-80/40 band-drivrutinerna, �r laddningsbara
moduler.
2.6. Hur mycket h�rddisk-utrymme beh�ver jag?
Det beror p� just din system-konfiguration. Den komprimerade k�llkoden
�r n�stan 6 megabytes stor, vid version 2.0.10. De flesta beh�ller
denna �ven efter uppackningen. Uppackad tar den upp 24 MB. Men det
r�cker inte med det -- du beh�ver mer f�r att faktiskt kompilera den.
Detta beror p� hur mycket stoppar in i din k�rna. P� en specifik
maskin, t.ex., s� har jag n�tverk, 3com 3C509-drivrutinen och tre
filsystem konfigurerade, till vilket det g�r �t 30 MB. Om vi l�gger
till den packade Linux-k�llkoden, s� beh�ver du runt 36 MB f�r just
denna konfiguration. P� ett annat system, utan n�tverks-enhets-st�d
(men fortfarande med n�tverks-st�d) och ljudkorts-st�d, tar den upp
�nnu mera utrymme. En nyare k�rna har dessutom med stor s�kerhet ett
st�rre k�llkods-tr�d �n en �ldre, s� rent generellt, om du har en
massa h�rdvara, s� m�ste du se till att du har en tillr�ckligt stor
h�rddisk i r�ran (och med dagens prisl�ge kan jag inte l�ta bli att
rekommendera dig att skaffa en till h�rddisk, som ett svar p� dina
utrymmes-problem).
2.7. Hur l�ng tid tar det?
F�r de flesta �r svaret "ganska l�ng tid". Ditt systems hastighet och
m�ngden minne du har best�mmer, i sista instans, tiden, men det har
�ven en del att g�ra med m�ngden grejer du konfigurerar in i k�rnan.
P� en 486DX4/100, med 16 MB RAM, tar det, f�r en v1.2-k�rna med fem
filsystem, n�tverks-st�d och ljudkorts-drivrutiner runt 20 minuter. P�
en 386DX/40 (8 MB RAM), med en liknande konfiguration, tar
kompileringen n�stan en och en halv timme. Det �r generellt sett en
bra rekommendation att ta en kopp kaffe, se p� TV, sticka, eller vad
du nu brukar g�ra f�r skojs skull, n�r din maskin kompilerar en k�rna.
Du kan �ven be n�gon med en snabbare maskin kompilera en k�rna �t dig,
om du har en l�ngsam maskin.
3. Hur den faktiska konfigureringen av k�rnan g�r till
3.1. Skaffa k�llkoden
Du kan skaffa k�llkoden via anonym ftp fr�n ftp.funet.fi, i
/pub/Linux/PEOPLE/Linus, en spegel eller n�gon annan sajt. Den heter i
typfallet linux-x.y.z.tar.gz, d�r x.y.z �r versionsnumret. Nyare
(b�ttre?) versioner och patcharna finns vanligtvis i underkataloger
som `v1.1'och `v1.2'. Det h�gsta numret �r den senaste versionen, och
�r vanligtvis en "test-utg�va", vilket inneb�r att du inte ska ta hem
den, om du k�nner dig os�ker p� beta- och alfa-utg�vor. H�ll dig i s�
fall till den stabila utg�van.
Det rekommenderas starkt att du anv�nder en spegel-sajt, ist�llet f�r
ftp.funet.fi. H�r kommer en kort lista p� speglar och andra sajter:
USA: sunsite.unc.edu:/pub/Linux/kernel
USA: tsx-11.mit.edu:/pub/linux/sources/system
UK: sunsite.doc.ic.ac.uk:/pub/unix/Linux/sunsite.unc-mirror/kernel
Austria: ftp.univie.ac.at:/systems/linux/sunsite/kernel
Germany: ftp.Germany.EU.net:/pub/os/Linux/Local.EUnet/Kernel/Linus
Germany: sunsite.informatik.rwth-aachen.de:/pub/Linux/PEOPLE/Linus
France: ftp.ibp.fr:/pub/linux/sources/system/patches
Australia: sunsite.anu.edu.au:/pub/linux/kernel
Rent generellt s� �r en spegel-sajt till sunsite.unc.edu ett bra
st�lle att leta p�. Filen /pub/Linux/MIRRORS inneh�ller en lista p�
k�nda speglar. Om du inte har tillg�ng till ftp, s� postas en lista p�
BBS-system med Linux regelbundet till comp.os.linux.announce; f�rs�k
f� tag p� den.
Om du �r ute efter generell information om Linux och distributioner,
ta en titt p�
http://www.linux.org.
3.2. Packa upp k�llkoden
Logga in som, eller su-a till, `root', och cd-a till /usr/src. Om du
installerade k�rn-k�llkoden, d� du f�rst installerade Linux (som de
flesta g�r), s� finns d�r redan en katalog som heter `linux', vilken
inneh�ller hela k�llkods-tr�det. Om du har gott om h�rddisk-utrymme
och vill ta det s�kra f�re det os�kra, s� beh�ll den katalogen. En bra
id� �r att ta reda p� vilken version ditt system k�r nu och byta namn
p� katalogen, enligt versions-numret. Kommandot `uname -r' skriver ut
den aktuella k�rnans version. Allts�, om `uname -r' s�ger `1.0.9', s�
b�r du �ndra namnet (med `mv') p� `linux' till `linux-1.0.9'. Om du
k�nner dig hyffsat v�rdsl�s, s� kan du helt enkelt ta bort katalogen.
I vilket fall som helst, se till s� att det inte finns n�gon
`linux'-katalog i /usr/src innan du packar upp det fullst�ndiga
k�llkods-tr�det.
Packa nu upp k�llkoden i /usr/src med `tar zxpvf linux-x.y.z.tar.gz'
(om du har en .tar-fil, utan .gz p� slutet, s� fungerar `tar xpvf
linux-x.y.z.tar'). Inneh�llet i k�llkoden kommer flyga f�rbi. N�r
uppackningen �r klar, kommer det finnas en ny `linux'-katalog i
/usr/src. cd-a till linux och l�s igenom README-filen. D�r finns en
avdelning som heter `INSTALLING the kernel'. Utf�r instruktionerna n�r
det �r passande -- symboliska l�nkar som ska finnas p� plats,
borttagande av on�diga .o-filer osv.
3.3. Konfigurera k�rnan
Observera: En del av detta �r upprepningar/klarg�randen av en liknande
avdelning i Linus README-fil.
Kommandot `make config', n�r du �r i /usr/src/linux startar ett
konfigurerings-skal-program, vilket st�ller en massa fr�gor. Det
kr�ver bash, s� se till att bash �r /bin/bash, /bin/sh eller $BASH.
Det finns n�gra alternativ till `make config', och det �r mycket
m�jligt att du kommer tycka att de �r l�ttare och mer bekv�ma att
anv�nda. De som "k�r X" kan pr�va `make xconfig', om de har Tk
installerat (`click-o-rama' - Nat). `make menuconfig' �r f�r de som
har (n)curses och f�redrar en text-baserad meny. Dessa gr�nssnitt har
en klar f�rdel: om du st�ller till n�got dumt, och v�ljer fel p� n�got
alternativ, under konfigureringen, s� �r det enkelt att g� tillbaks
och fixa det.
Du ska vara redo att svara p� fr�gorna, vanligtvis med `y' (ja) eller
`n' (nej). Enhets-drivrutiner har vanligtvis �ven ett `m'-alternativ.
Detta betyder "modul", vilket inneb�r att systemet kommer att
kompilera den, men inte direkt in i k�rnan, utan som en laddningsbar
modul. Ett lustigare s�tt att beskriva det �r som "maybe"
(kanske.�vers.anm.). N�gra av de mer uppenbara och okritiska
alternativen beskrivs inte h�r; se avsnittet "Andra konfigurerings-
alternativ" f�r korta beskrivningar av n�gra andra.
I 2.0.x och sernare finns det ett `?'-alternativ, vilket ger en kort
beskrivning av det aktuella alternativet. Den informationen �r
troligen den mest aktuella.
3.3.1. Matte-emulering i k�rnan (Math emulation in kernel)
Om du inte har en matte-hj�lp-processor (om du har en "bar" 386 eller
486SX), s� m�ste du s�ga `y' till detta. Om du har en hj�lp-processor
och �nd� s�ger `y', s� �r det inget att oroa sig f�r -- hj�lp-
processorn anv�nds i alla fall, och emuleringen ignoreras. Den enda
konsekvens detta f�r �r att k�rnan blir st�rre (sl�seri med RAM). Jag
har blivit informerad om att matte-emuleringen �r l�ngsam; �ven om
detta inte har n�got med detta avsnitt att g�ra, s� kan det vara bra
att ha i bakhuvudet om du tycker att X-Window-systemet upptr�der
klumpigt.
3.3.2. Normal (MFM/RLL) disk och IDE disk/cdrom-st�d
Du beh�ver antagligen st�dja detta; det inneb�r att k�rnan kommer att
st�dja vanliga PC-h�rddiskar, vilket de flesta har. Den h�r
drivrutinen inkluderar inte SCSI-h�rddiskar; de kommer senare i
konfigureringen.
Du kommer sedan bli tillfr�gad om "old disk-only"- och "new
IDE"-drivrutinerna. Du b�r v�lja en av dessa: den huvudsakliga
skillnaden �r att den gamla drivrutinen endast st�djer tv� h�rddiskar
p� ett enda gr�nssnitt, och att den nya st�djer ett sekund�rt
gr�nssnitt och IDE/ATAPI CD-ROM-spelare. Den nya drivrutinen �r 4k
st�rre �n den gamla, och p�st�s ocks� vara "f�rb�ttrad", vilket
inneb�r att, f�rutom att den inneh�ller ett annat antal buggar, s� kan
den f�rb�ttra dina h�rddiskars prestanda, speciellt om du har nyare
(EIDE-typ) h�rdvara.
3.3.3. N�tverks-st�d (Networking support)
In princip, s�g `y' endast om din maskin �r i ett n�tverk, som
Internet, eller om du vill anv�nda SLIP, PPP, term osv f�r uppringd
Internet-f�rbindelse. Men eftersom m�nga paket (som X-Window-systemet)
kr�ver n�tverks-st�d, �ven om maskinen inte finns i ett riktigt
n�tverk, s� b�r du s�ga `y'. Senare kommer du bli tillfr�gad om du
vill st�dja TCP/IP-n�tverk; s�g �terigen `y' h�r om du inte �r absolut
s�ker.
3.3.4. Begr�nsa minnet till 16 MB (Limit memory to low 16 MB)
Det finns buggiga "386 DMA controllers", vilka har problem med att
komma �t mer �n 16 MB RAM; s�g `y' om det skulle r�ka vara s� att du
har en.
3.3.5. System V IPC
En av de b�sta definitionerna av IPC (Interprocess Communication)
finns i Perl book's ordlista. Inte helt �verraskande, s� anv�nder
vissa Perl-programmerare det f�r att l�ta processer tala med varandra,
och �ven andra paket (av vilka DOOM �r det mest anm�rkningsv�rda), s�
det �r inte en bra id� att s�ga n, om du inte vet exakt vad du sysslar
med.
3.3.6. Processor-typ (386, 486, Pentium, PPro)
(i �ldre k�rnor: anv�nd -m486-flaggan f�r 486-specifika optimeringar)
Traditionellt s� har detta kompilerat vissa optimeringar f�r speciella
processorer; K�rnorna fungerade fint p� andra chips, men k�rnan blev
kanske en aning st�rre. I nyare k�rnor �r dock inte detta l�ngre
fallet, s� du b�r v�lja den processor du kompilerar k�rnan f�r. En
"386"-k�rna fungerar p� alla maskinerna.
3.3.7. SCSI-st�d (SCSI support)
Om du har SCSI-enheter, s�g `y'. Du kommer bli tillfr�gad om vidare
information, som t.ex. st�d f�r CD-ROM, diskar och vilken sorts SCSI-
adapter du har. Se SCSI-HOWTOn f�r mer detaljer.
3.3.8. St�d f�r n�tverks-enhets (Network device support)
Om du har ett n�tverks-kort, eller om du vill anv�nda SLIP, PPP eller
en parallell-ports-adapter f�r att koppla upp dig p� Internet, s�g
`y'. Config-programmet kommer fr�ga efter vilket slags kort du har,
och vilket protokoll du anv�nder.
3.3.9. Filsystem
Config-programmet fr�gar sedan om du vill ha st�d f�r de f�ljande
filsystemen:
Standard (minix) - Nyare distributioner skapar inte minix-filsystem,
och m�nga anv�nder det inte, men det kan fortfarande vara en bra id�
att ta med detta. Programmen p� vissa "r�ddnings-disketter" anv�nder
det, och m�nga disketter kan fortfarande ha minix-filsystemet,
eftersom det �r mindre sm�rtsamt att anv�nda p� en diskett.
Extended fs - Detta var den f�rsta versionen av det utvidgade
filsystemet, vilket inte l�ngre anv�nds speciellt mycket. Det �r
antagligen s� att du vet om du beh�ver det och om du �r os�ker, s�
beh�ver du det inte.
Second extended - Det h�r anv�nds mycket i nyare distributioner. Du
har antagligen ett s�dant, och ska s�ga `y'.
xiafs filesystem - En g�ng i tiden var det h�r inte s� ovanligt, men
n�r detta skrivs, s� vet jag inte om n�gon som anv�nder det.
msdos - Om du vill anv�nda din MS-DOS-h�rddisks partitioner, eller
montera MS-DOS-formatterade disketter, s�g `y'.
umsdos - Det h�r filsystemet expanderar ett MS-DOS-filsystem med
vanliga Unix-liknande funktioner, s�som l�nga filnamn. Det �r inte
anv�ndbart f�r folk (som jag), som "inte DOSar".
/proc - �nnu en av de b�sta sakerna sedan torrmj�lk (id�n skaml�st
stulen fr�n Bell Labs, antar jag). Man skapar inte ett proc-filsystem
p� en disk; det h�r �r ett filsystems-gr�nssnitt till k�rnan och
processerna. M�nga process-listare (s�som `ps') anv�nder det. Testa
`cat /proc/meminfo' eller cat /proc/devices' ibland. Vissa skal
(speciellt rc) anv�nder /proc/self/id (k�nt som /dev/fd p� andra
system) f�r in/ut-hantering. Du ska antagligen s�ga `y' till det h�r;
m�nga viktiga Linux-verktyg �r beroende av det.
NFS - Om din maskin finns i ett n�tverk och du vill kunna anv�nda
filsystemen, som finns p� andra system, med NFS, s�g `y'.
ISO9660 - Finns p� de flesta CD-ROMar. Om du har en CD-ROM-spelare och
vill kunna anv�nda den under Linux, s�g `y'.
OS/2 HPFS - N�r detta skrivs, ett filsystem som endast till�ter
l�sning, f�r OS/2 HPFS.
System V och Coherent - f�r partitioner i System V- och Coherent-
system (det finns andra Unix-varianter f�r PC).
3.3.9.1. Men jag vet inte vilka filsystem jag beh�ver!
Okej, skriv `mount'. Utdatan kommer se ut n�got i denna stil:
blah# mount
/dev/hda1 on / type ext2 (defaults)
/dev/hda3 on /usr type ext2 (defaults)
none on /proc type proc (defaults)
/dev/fd0 on /mnt type msdos (defaults)
Titta p� varje rad; ordet brevid `type' �r filsystems-typen. I det
h�r exemplet, mina /- och /usr-filsystem �r "second extended", jag
anv�nder /proc och det finns en diskett monterad, vilken anv�nder
msdos-filsystemet (bl�).
Du kan testa `cat /proc/filesystem', om du har /proc p� f�r
tillf�llet; det kommer lista din nuvarande k�rnas filsystem.
Att ta med s�llan anv�nda, icke n�dv�ndiga filsystem kan leda till att
k�rnan blir on�digt stor; se avsnittet om moduler f�r en v�g runt
detta och "Fallgropar"-avsnittet, om varf�r en f�r stor k�rna inte �r
bra.
3.3.10. Tecken-enheter (Character devices)
H�r tar du med drivrutiner f�r din skrivare (parallell-skrivare
allts�), buss-mus, PS/2-mus (m�nga b�rbara datorer anv�nder PS/2-mus-
protokollet f�r sina inbyggda trackballs), vissa band-spelare (tape
drivers) och andra dylika "tecken"-enheter. S�g `y' d�r det passar.
Anm�rkning: Selection �r ett program som l�ter anv�ndaren anv�nda en
mus utanf�r X-Window-systemet, f�r att kunna klippa och klistra mellan
virtuella konsoller. Det �r ganska trevligt om du har en seriell mus,
f�r det samexisterar bra med X, men du m�ste ta till speciella trick
f�r andra. Selection-st�d var ett konfigurerings-alternativ en g�ng i
tiden, men det �r nu standard.
Anm�rkning 2: Selection anses nu f�r�ldrat. "gpm" �r namnet p� det nya
programmet. Det kan g�ra h�ftigare saker, som att �vers�tta mus-
protokoll, hantera mer �n en mus...
3.3.11. Ljud-kort
Om du k�nner att du har ett behov av att h�ra biff sk�lla, s�g `y',
och ett annat config-program kommer senare kompilera och fr�ga efter
alla data om ditt ljudkort. (En anm�rkning om ljudkorts-inst�llning:
n�r det fr�gar dig om du vill installera "the full version" (den
fullst�ndiga versionen) av drivrutinen, s� kan du s�ga `n', och spara
en del k�rn-utrymme, genom att v�lja enbart de funktioner du finner
n�dv�ndiga.) Jag rekommenderar starkt att du tar en titt p� Sound-
HOWTO, f�r mer detaljer om ljud-st�d, om du har ett ljudkort.
3.3.12. Andra konfigurerings-alternativ
Alla konfigurerings-alternativ listas inte h�r, eftersom de �ndras
alldeles f�r ofta, eller �r ganska sj�lv-f�rklarande (t.ex. 3Com
3c509-st�d, f�r att kompilera drivrutinen f�r just detta ethernet-
kort). Det finns en ganska inneh�llsrik lista p� alla alternativ (och
ett s�tta att placera dem i Configure-skal-programmet), sammansatt av
Axel Boldt (
[email protected]), med den f�ljande URLen:
http://math-www.uni-paderborn.de/~axel/config_help.html
eller via anonym FTP fr�n:
ftp://sunsite.unc.edu/pub/Linux/kernel/config/krnl_cnfg_hlp.x.yz.tgz
D�r x.yz �r versionsnumret.
F�r senare (2.0.x och senare) k�rnor har detta blivit integrerat i
k�llkods-tr�det.
3.3.13. "K�rn-hackande" (Kernel hacking)
>Fr�n Linus README:
"kernel hacking"-konfigurering ger ofta en st�rre eller l�ngsammare
(eller b�da) k�rna, och kan till och med g�ra k�rnan mindre stabil,
genom att st�lla in vissa rutiner f�r att aktivt f�rs�ka f�rst�ra
d�lig kod, f�r att hitta k�rn-problem (kmalloc()). Du ska allts�
antagligen svara `n' p� den h�r fr�gan, om du vill ha en
"production"-k�rna.
3.4. Och nu d�? (Makefile)
Efter att du har k�rt make config, kommer ett meddelande som talar om
att din k�rna har blivit konfigurerad, och att du ska "check the top-
level Makefile for additional configuration" etc.
Ta allts� en titt p� Makefile. Du kommer antagligen inte beh�va �ndra
i den, men det skadar inte att ta en titt. Du kan ocks� �ndra dess val
med `rdev'-kommandot, s� fort k�rnan �r p� plats.
4. Kompilera k�rnan
4.1. St�da upp och ange beroenden (Cleaning and depending)
N�r configure-programmet avslutas s�ger det ocks� �t dig att `make
dep' och (eventuellt) `clean'. K�r allts� `make dep'. Detta ser till
s� att alla beroenden (dependencies), som include-filerna, �r p�
plats. Det tar inte l�ng stund, om inte din dator �r ganska l�ngsam
fr�n b�rjan. F�r �ldre k�rn-versioner ska du k�ra en `make clean' n�r
du �r klar. Detta tar bort alla object-filer och n�gra andra saker,
som en gammal version l�mnar efter sig. I vilket fall som helst, gl�m
inte detta steg, innan du f�rs�ker kompilera om en k�rna.
4.2. Kompilerings-dags
Efter dep och clean, s� kan du nu antingen k�ra `make zImage' eller
`make zdisk (det �r den h�r delen som tar l�ng tid). `make zImage'
kommer kompilera k�rnan och l�mna en fil i arch/i386/boot, vilken
heter `zImage' (tillsammans med en del andra saker). Detta �r den nya,
packade k�rnan. `make zdisk' g�r samma sak, men l�gger ocks� in den
nya zImage p� en diskett, vilken du f�rhoppningsvis satt in i floppy-
station "A:". `zdisk' �r ganska praktiskt f�r att pr�va nya k�rnor; om
den krashar (eller helt enkelt inte fungerar speciellt bra), ta bara
ut disketten och starta om med din gamla k�rna. Det kan ocks� vara ett
praktiskt s�tt att starta upp om du av misstag tar bort din k�rna
(eller n�got lika hemskt). Du kan ocks� anv�nda den f�r att installera
nya system, n�r du just har dumpat inneh�llet fr�n en h�rddisk p� en
annan ("allt det h�r och mer! HUR mycket skulle du betala?").
Alla �tminstone halvv�gs resonabla nya k�rnor �r packade, d�rav `z'
framf�r namnet. En packad k�rna packar automatiskt upp sig sj�lv n�r
den k�rs.
4.3. Andra "make"-prylar
`make mrproper' g�r en mer omfattande `clean'. Ibland �r det
n�dv�ndigt; du kanske vill g�ra det vid varje patch. `make mrproper'
tar ocks� bort din konfigurerings-fil, s� du ska antagligen ta en
s�kerhetskopia av den (.config) om du tycker den �r v�rdefull.
`make oldconfig' g�r ett f�rs�k att konfigurera k�rnan fr�n en gammal
konfigurerings-fil; det k�r igenom `make config'-processen �t dig. Om
du aldrig har kompilerat en k�rna f�rut eller inte har en gammal
config-fil, s� ska du antagligen inte g�ra detta, eftersom du
antagligen kommer �ndra standard-konfigureringen.
Se avsnitten om moduler f�r en beskrivning av `make modules'.
4.4. Installera k�rnan
N�r du har en ny k�rna som verkar fungera som du vill att den ska
fungera, s� �r det dags att installera den. De flesta anv�nder LILO
(Linux Loader) till detta. `make zlilo' installerar k�rnan, k�r LILO
p� den och fixar allt, s� att det bara �r att starta upp, MEN ENDAST
om lilo �r inst�lld p� f�ljande s�tt p� ditt system: k�rnan �r
/vmlinuz, lilo finns i /sbin och din lilo-konfigurering
(/etc/lilo.conf) inte har n�got att inv�nda.
Annars blir du tvungen att anv�nda LILO direkt. Det �r ett ganska
enkelt paket att installera och arbeta med, men det har en tendens att
f�rvirra m�nniskor med sin konfigurerings-fil. Titta p�
konfigurerings-filen (antingen /etc/lilo/config, f�r �ldre versioner,
eller /etc/lilo.conf, f�r nyare versioner), och kolla upp den
nuvarande konfigureringen. lilo.conf-filen ser ut s� h�r:
image = /vmlinuz
label = Linux
root = /dev/hda1
...
`image =' anger den k�rna du f�r tillf�llet har installerad. De flesta
anv�nder /vmlinuz. `label' anv�nds av lilo f�r att best�mma vilken
k�rna, eller vilket operativ-system, som ska startas, och `root' �r /
f�r just det operativ-systemet. G�r en s�kerhets-kopia av din gamla
k�rna och kopiera zImage-filen, vilken du just skapat, dit den ska
vara (du skulle k�ra `cp zImage /vmlinuz' om du anv�nder `/vmlinuz').
K�r sedan lilo igen -- p� nyare system s� kan du k�ra `lilo', men p�
�ldre grejer kanske du blir tvungen att k�ra /etc/lilo/install, eller
till och med en /etc/lilo/lilo -C /etc/lilo/config.
Om du skulle vilja veta mer om LILOs konfigurering, eller om du inte
har LILO, skaffa den senaste versionen fr�n din favorit-ftp-sajt och
f�lj instruktionerna.
F�r att starta upp en av dina gamla k�rnor fr�n h�rddisken (ett annat
s�tt att r�dda dig om du g�r n�got dumt med den nya k�rnan), s�
kopiera raderna nedan (och inklusive) `image = xxx' i LILOs
konfigurerings-fil till slutet av filen, och modifiera `image = xxx'
till `image = yyy', d�r `yyy' �r den fullst�ndiga s�kv�ngen till filen
du sparade din s�kerhetskopia av k�rnan som. �ndra sedan `label = zzz'
till `label = linux-backup' och k�r lilo igen. Det kan vara n�dv�ndigt
att l�gga in en rad som s�ger `delay=x', d�r x �r antalet tiondelar,
vilket s�ger �t LILO att v�nta s� l�ng tid innan det startar upp, s�
att du kan avbryta det (med shift-knappen t.ex.), och skriva in den
s�kerhets-kopierade k�rnans "label" (om n�got otrevligt skulle h�nda).
5. Patcha k�rnan
5.1. L�gga till en patch
Gradvisa uppgraderingar till k�rnan distribueras som patchar. Om du
t.ex. har version 1.1.45 och du uppt�cker att det finns en
`patch46.gz' till den, s� inneb�r det att du kan uppgradera till
version 1.1.46 genom att l�gga till patchen. Det kan vara bra att ta
en s�kerhets-kopia av k�llkods-tr�det f�rst (`make clean' och sedan
`cd /usr/src; tar zcvf old-tree.tar.gz linux', vilket kommer att skapa
ett komprimerat tar-arkiv �t dig).
Om vi forts�tter p� exemplet ovan, l�t oss f�ruts�tta att du har
`patch46.gz' i /usr/src. cd-a till /usr/src och k�r en `zcat
patch46.gz | patch -p0' (eller `patch -p0 < patch46', om patchen inte
�r packad). Du kommer se saker flyga f�rbi (eller krypa f�rbi, om ditt
system �r s� l�ngsamt), vilka talar om f�r dig att det f�rs�ker l�gga
till bitar, och huruvida det lyckas eller ej. Vanligtvis g�r det h�r
f�r fort f�r att du ska hinna med att l�sa, och du kan inte vara s�
s�ker p� om det fungerade eller ej, men om du anv�nder -s-flaggan till
patch s� kommer patch endast rapportera fel (du f�r inte lika mycket
av den d�r "hall�, min dator g�r faktiskt saker, f�r en g�ngs
skull!"-k�nslan, men du kanske f�redrar det h�r...). F�r att leta
efter delar som inte har g�tt s� bra, cd-a till /usr/src/linux och
leta efter filer med en .rej-�ndelse. Vissa versioner av patch (�ldre
versioner, vilka kan har kompilerats p� ett underl�gset filsystem)
l�mnar dessa misslyckanden med en #-�ndelse. Du kan anv�nda `find' f�r
att leta;
find . -name '*.rej' -print
skriver ut, till standard ut, vilka filer, i den aktuella katalogen
eller underkataloger, somhar .rej-�ndelser
Om n�got gick fel, g�r en `make clean', `config' och `dep', som det
beskrivs i avsnitt 3 och 4.
Det finns en hel del alternativ till patch-kommandot. Som n�mnts ovan
s� kommer patch -s att h�lla tyst om allt utom fel. Om du har ditt
k�rn-k�llkods-tr�d n�gon annanstans �n i /usr/src/linux, s� patchar
patch -p1 allt korrekt (i den katalogen). Andra patch-alternativ finns
v�l-dokumenterade p� man-sidan.
5.2. Om n�got g�r snett
(Observera: detta avsnitt h�nvisar mestadels till ganska gamla k�rnor)
Det vanligaste problemet som brukade uppst�, var n�r en patch
modifierade en fil som heter `config.in', och den inte s�g riktigt
r�tt ut, eftersom du �ndrade alternativen f�r att passa din maskin.
Det h�r har man tagit hand om, men man kan fortfarande st�ta p� det
hos �ldre utg�vor. F�r att fixa det, ta en titt p� config.in.rej-
filen, och se efter vad som finns kvar av original-patchen.
F�r�ndringarna �r vanligtvis markerade med `+' och `-' i b�rjan av
raderna. Ta en titt p� raderna f�re och efter, och t�nk efter om de
var satta till `y' eller `n'. Editera nu config.in, och �ndra `y' till
`n' och `n' till `y', d�r det ska vara s�. G�r en
patch -p0 < config.in.rej
och om det rapporteras att det lyckades (inga fel), s� kan du
forts�tta med konfigurering och kompilering. config.in.rej kommer
finnas kvar, men du kan ta bort den.
Om du st�ter p� vidare problem, s� kan du ha lagt till en patch i fel
ordning. Om patch s�ger `previously applied patch detected: Assume
-R?', s� f�rs�ker du antagligen l�gga till en patch som �r under ditt
aktuella versionsnummer; om du svarar `y', s� kommer patch f�rs�ka
nedgradera din k�llkod, och kommer antagligen misslyckas; d� kommer du
allts� beh�va skaffa ett helt nytt k�llkodstr�d (vilket kanske inte
skulle ha varit en s� dum id� fr�n b�rjan).
F�r att backa ut (ta bort) en patch, anv�nd `patch -R' p� original-
patchen.
Det b�sta du kan g�ra n�r patchningar verkligen g�r snett �r att b�rja
om igen, med ett rent och opatchat k�llkodstr�d (fr�n en av linux-
x.y.z.tar.gz-filerna, t.ex.) och b�rja om.
5.3. Bli av med .orig-filer
Efter bara n�gra f� patchar kommer .orig-filerna vara ganska m�nga.
T.ex. s� hade ett 1.1.51-k�llkodstr�d jag hade blivit rensat vid
1.1.48. Att ta bort .orig-filerna sparade mig mer �n en halv meg.
find . -name '*.orig' -exec rm -f {} ';'
tar hand om det �t dig. De versioner av patch som anv�nder # f�r miss�
lyckaden, anv�nder en tilde ist�llet f�r .orig.
Det finns b�ttre s�tt att bli av med .orig-filerna, vilka �r baserade
p� GNU xargs:
find . -name '*.orig' | xargs rm
eller "ganska s�ker men en aning mer pratig"-metoden:
find . -name '*.orig' -print0 | xargs --null rm --
5.4. Andra patchar
Det finns andra patchar (jag kallar dem "icke-standard") �n de som
Linus distribuerar. Om du l�gger till dessa s� kanske inte Linus
patchar fungerar korrekt, och du blir tvungen att antagligen backa ut,
fixa k�llkoden eller patchen, installera ett nytt k�llkodstr�d eller
en kombination av dessa saker. Detta kan bli v�ldigt frustrerande, s�
om du inte vill modifiera k�llkoden (med m�jligheten av v�ldigt d�liga
resultat), ta bort icke-standard-patcharna innan du l�gger till Linus,
eller installera helt enkelt ett nytt tr�d. Sen kan du se efter om
icke-standard-patcharna fortfarande fungerar. Om de inte g�r det, s�
�r du antingen fast med en gammal k�rna, och blir tvungen att greja en
massa med patcharna eller k�llkoden, f�r att f� det att fungera, eller
tvingas v�nta p� (eller m�jligtvis be om) en ny version av patchen.
Hur vanliga �r patcharna, som inte ing�r i standard-distributionen? Du
kommer antagligen h�ra talas om dem. Jag brukade anv�nda noblink-
patchen f�r min virtuella konsoll, eftersom jag hatar blinkande
mark�rer (denna patch blir (eller blev, �tminstone) uppdaterad f�r
varje ny utg�va av k�rnan). Eftersom de flesta nya enhets-drivrutiner
utvecklas som laddningsbara moduler, s� minskar dock antalet icke-
standard-patchar en hel del.
6. Ytterligare paket
Din Linux-k�rna har m�nga funktioner som inte f�rklaras i sj�lva
k�llkoden; dessa funktioner anv�nds i typfallet av externa paket.
N�gra av de vanligaste r�knas upp h�r.
6.1. kbd
Linux-konsollen har fler funktioner �n den f�rtj�nar. Bland dessa
finns m�jligheten att byta typsnitt, definiera om tangentbordet, byta
grafik-l�gen (i nyare k�rnor) osv. kbd-paketet har program som l�ter
anv�ndaren g�ra allt detta, plus m�nga typsnitt och tangentbords-
tabeller f�r i stort sett alla tangentbord, och �r tillg�ngligt fr�n
samma sajter som har k�rn-k�llkoden.
6.2. util-linux
Rik Faith (
[email protected]) plockade ihop en stor samling Linux-
verktyg vilka, av ett underligt sammantr�ffande, kallas util-linux.
Dessa utvecklas nu av Nicolai Langfeldt (
[email protected]). Det
�r tillg�ngligt via anonym ftp fr�n sunsite.unc.edu, i
/pub/Linux/system/misc, och inneh�ller program s�som setterm, rdev och
ctrlaltdel, vilka �r relevanta f�r k�rnan. Som Rik s�ger, installera
inte utan att t�nka efter; du beh�ver inte installera allt i paketet,
och det kan mycket v�l skapa stora problem, om du g�r det.
6.3. hdparm
Som med m�nga andra paket, s� var detta en g�ng i tiden en k�rn-patch
och st�d-program. Patcharna blev inplockade i den officiella k�rnan,
och programmen f�r att optimera och leka med h�rddisken distribueras
separat.
6.4. gpm
gpm st�r f�r general purpose mouse. Detta program till�ter dig att
klippa och klistra text mellan virtuella konsoller och g�ra andra
saker, med en stor upps�ttning olika mus-typer.
7. N�gra fallgropar
7.1. make clean
Om din nya k�rna g�r riktigt knasiga saker, efter en rutin-
uppgradering av k�rnan, s� finns det en m�jlighet att du gl�mt att
make clean, innan du kompilerade den nya k�rnan. Symptomen kan vara
allt fr�n att ditt system helt enkelt kraschar och konstiga in/ut-
problem, till d�lig prestanda. Se till att du g�r en make dep ocks�.
7.2. Enorma eller l�ngsamma k�rnor
Om din k�rna suger �t sig en massa minne, �r f�r stor och/eller bara
tar en evighet att kompilera, �ven n�r du har f�tt din nya 786DX6/440
att fungera med den, s� har du antagligen konfigurerat in en massa
on�diga saker (drivrutiner, filsystem osv.). Det du inte anv�nder ska
du inte ta med, f�r det tar upp minne. De mest uppenbara symptomen p�
f�r stora k�rnor �r extrem swappning till och fr�n h�rddisken; om din
h�rddisk f�r en massa ov�sen, och den inte �r en s�dan d�r gammal
Fujitsu Eagle, som l�t som en jumbo-jet som var p� v�g att landa n�r
du slog av dem, s� ta en titt p� din k�rn-konfigurering.
Du kan ta reda p� hur mycket minne k�rnan anv�nder genom att ta den
totala m�ngden minne i din maskin och subtrahera summan av "total mem"
i /proc/meminfo, eller utdatan fr�n kommandot `free'. Du kan ocks� ta
reda p� det genom att k�ra `dmesg' (eller genom att titta p� k�rnans
log-fil, var den nu finns p� ditt system). D�r finns en rad som ser ut
n�gonting i stil med detta:
Memory: 15124k/16384k available (552k kernel code, 384k reserved, 324k
data)
Min 386 (vilken har en aning mindre skr�p in-konfigurerat) s�ger:
Memory: 7000k/8192k available (496k kernel code, 384k reserved, 312k
data)
Om du bara `m�ste' ha en stor k�rna, men systemet inte l�ter dig ha
det, s� kan du testa `make bzimage'. Du kan mycket v�l bli tvungen att
installera en ny version av LILO f�r att f� detta att fungera.
7.3. K�rnan kompilerar inte
Om den inte kompilerar s� �r det troligt att en patch misslyckades,
eller att din k�llkod �r korrupt p� n�got s�tt. Det kan ocks� vara
n�got fel p� din version av gcc, eller den kan vara korrupt (det kan
t.ex. vara n�got fel p� include-filerna). Se till att de symboliska
l�nkar, som Linus beskriver i README-filen ser ut som de ska. Rent
generellt kan man s�ga, att om en standard-k�rna inte kompilerar, s�
�r det n�got stort fel p� ditt system, och en ominstallering av vissa
saker �r antagligen n�dv�ndig.
Eller du kanske kompilerar en 1.2.x-k�rna med en ELF-kompilator (gcc
2.6.3 eller h�gre). Om du f�r en h�g det-och-det undefined-meddelanden
under kompileringen, s� finns det vissa m�jligheter att det �r detta
som �r ditt problem. L�sningen �r i de flesta fall v�ldigt enkel. L�gg
till f�ljande rader i b�rjan av arch/i386/Makefile:
AS=/usr/i486-linuxaout/bin/as
LD=/usr/i486-linuxaout/bin/ld -m i386linux
CC=gcc -b i486-linuxaout -D__KERNEL__ -I$(TOPDIR)/include
K�r sedan make dep och zImage igen.
I s�llsynta fall kan gcc krascha p.g.a. h�rdvaru-problem. Fel-
meddelandet kommer vara n�got i stil med "xxx exited with signal 15",
och det kommer oftast se mystiskt ut. Jag skulle antagligen inte n�mna
detta, om det inte hade h�nt mig en g�ng - jag hade d�ligt cache-
minne, och kompilatorn kunde beg� slumpm�ssiga fel. Pr�va f�rst med
att ominstallera gcc, om du f�r problem. Du b�r endast b�rja bli
misst�nksam om din k�rna kompilerar bra med "external cache" avslaget,
en mindre m�ngd RAM osv.
Det brukar irritera folk, n�r det s�gs att det kan vara n�got problem
med deras h�rdvara. Tja, jag sitter inte och hittar p� det h�r. Det
finns en FAQ om detta -- den finns p�
http://www.bitwizard.nl/sig11/.
7.4. Den nya versionen av k�rnan verkar inte starta (boot)
Du k�rde inte LILO, eller konfigurerade det inte korrekt. En sak som
"fick" mig en g�ng, var ett problem med konfigurerings-filen; den sa
`boot = /dev/hda1', ist�llet f�r `boot = /dev/hda'. (Detta kan f�rst
vara v�ldigt irriterande, men s� fort du har en fungerande
konfigurerings-fil s� beh�ver du inte g�ra n�gra �ndringar i den.)
7.5. Du gl�mde k�ra LILO, eller systemet startar inte alls
Hoppsan! Det b�sta du kan g�ra h�r �r att starta upp med en diskett
och preparera en till start-diskett (som `make zdisk' skulle g�ra).
Du m�ste veta var ditt rot-filsystem (/) finns, och vilken sort det �r
(t.ex. second extended, minix). I exemplet nedan m�ste du ocks� veta
vilket filsystem ditt /usr/src/linux-k�llkodstr�d finns p�, dess typ
och var det vanligtvis monteras.
I det f�ljande exemplet �r / /dev/hda1, och filsystemet som inneh�ller
/usr/src/linux �r /dev/hda3, och monteras vanligtvis p� /usr. B�da
filsystemen �r second extended. Den fungerande k�rnan i
/usr/src/linux/arch/i386/boot heter zImage.
Id�n �r, att om det finns en fungerande zImage, s� �r det m�jligt att
anv�nda den till en ny diskett. Ett annat alternativ, vilket kan
fungera b�ttre eller s�mre (det beror p� metoden du anv�nde n�r du
st�kade till i filsystemet), diskuteras efter detta exempel.
F�rst och fr�mst, starta fr�n en start/rot-diskett-kombination eller
en r�ddnings-diskett och montera filsystemet vilket inneh�ller den
fungerande k�rnan:
mkdir /mnt
mount -t ext2 /dev/hda3 /mnt
Om mkdir s�ger �t dig att katalogen redan existerar, ignorera det
bara. cd-a nu till st�llet d�r den fungerande k�rnan finns. Observera
att
/mnt + /usr/src/linux/arch/i386/boot - /usr = /mnt/src/linux/arch/i386/boot
S�tt i en formatterad diskett i diskett-station "A:" (inte din start-
eller rot-diskett!), dumpa k�rnan p� disketten och konfigurera den f�r
ditt rot-filsystem:
cd /mnt/src/linux/arch/i386/boot
dd if=zImage of=/dev/fd0
rdev /dev/fd0 /dev/hda1
cd-a till / och avmontera det vanliga /usr-filsystemet:
cd /
umount /mnt
Du ska nu kunna starta om ditt system som vanligt fr�n denna diskett.
Gl�m inte att k�ra lilo (eller vad det nu var som gick snett) efter
att du startat om!
Som n�mndes ovan, s� finns det ett annat vanligt alternativ. Om du
r�kade ha en fungerande k�rna i / (/vmlinuz t.ex.), s� kan du anv�nda
den till en start-diskett. Om vi f�ruts�tter alla de ovann�mnda
omst�ndigheterna, och att k�rnan �r /vmlinuz, g�r bara f�ljande
�ndringar i exemplet ovan: �ndra /dev/hda3 till /dev/hda1
(/-filsystemet), /mnt/src/linux till /mnt, och if=zImage till
if=vmlinuz. Anm�rkningen som f�rklarar hur du tar reda p�
/mnt/src/linux kan du hoppa �ver.
Att anv�nda LILO med stora h�rddiskar (mer �n 1024 cylindrar) kan leda
till problem. See LILO mini-HOWTO eller dokumentationen f�r hj�lp om
det.
7.6. Jag f�r `warning: bdflush not running'
Det h�r kan vara ett allvarligt problem. Fr�n och med en k�rn-utg�va
efter 1.0 (runt 20 april 1994), uppgraderas/utbyttes ett program som
heter `update', vilket regelbundet spolar ur (flushes) filsystemets
buffrar. Skaffa k�llkoden till `bdflush' (du kan hitta det d�r du
hittade k�llkoden till k�rnan), och installera det (det �r b�st att
k�ra systemet med den gamla k�rnan, d� du g�r detta). Det installerar
sig sj�lvt som `update', och efter att du startat om ska den nya
k�rnan inte l�ngre klaga.
7.7. Den s�ger saker om "undefined symbols" och kompilerar inte
Du har antagligen en ELF-kompilator (gcc 2.6.3 eller senare) och
k�llkoden till k�rna 1.2.x (eller tidigare). Den vanliga l�sningen �r
att l�gga till f�ljande tre rader i b�rjan av arch/i386/Makefile:
AS=/usr/i486-linuxaout/bin/as
LD=/usr/i486-linuxaout/bin/ld -m i386linux
CC=gcc -b i486-linuxaout -D__KERNEL__ -I$(TOPDIR)/include
Detta kommer kompilera en 1.2.x-k�rna med a.out-bibliotek.
7.8. Jag f�r inte min IDE/ATAPI CD-ROM-spelare att fungera
Konstigt nog s� �r det m�nga som inte kan f� sina ATAPI-spelare att
fungera, antagligen f�r att det finns ett antal saker som kan g�
snett.
Om din CD-ROM-spelalre �r den enda enheten p� ett visst IDE-gr�nssnitt
s� m�ste de jumpras som "master" eller "single". Detta p�st�s vara det
vanligaste felet.
Creative Labs (som ett exempel) har satt IDE-gr�nssnitt p� sina
ljudkort nu. Detta leder dock till det intressanta problemet att,
medan vissa bara har ett gr�nssnitt fr�n b�rjan, s� har m�nga IDE-
gr�nssnitt inbyggda i sina moderkort (vanligen p� IRQ15), s� en vanlig
praxis �r att g�ra soundblaster-gr�nssnittet till en tredje IDE-port
(IRQ11, �tminstone �r det vad jag har h�rt).
Detta skapar problem med Linux, genom att version 1.2.x inte st�djer
ett tredje IDE-gr�nssnitt (st�det dyker upp n�gonstans i 1.3.x-serien,
men det �r en utvecklings-serie och den auto-s�ker inte). F�r att
komma runt detta, kan du v�lja mellan n�gra olika metoder.
Om du redan har en andra IDE-port, s� finns det risk att du inte
anv�nder den, eller att den redan inte har tv� enheter. Ta ATAPI-
spelaren fr�n ljudkortet och s�tt det p� det andra gr�nssnittet. Sedan
kan du st�nga av ljudkortets gr�nssnitt, vilket i alla fall sparar in
en IRQ.
Om du inte har ett andra gr�nssnitt, jumpra ljudkortets gr�nssnitt
(inte ljudkortets ljud-delar) som IRQ15, det andra gr�nssnittet. Detta
b�r fungera.
Om den, av n�gon anledning, absolut m�ste vara p� ett s� kallat
"tredje" gr�nssnitt, eller om det finns andra problem, skaffa en
1.3.x-k�rna (1.3.57 har det, t.ex.) och l�s igenom
drivers/block/README.ide. Det finns mycket mer information d�r.
7.9. Den s�ger konstiga saker om "obsolete routing requests"
Skaffa nya versioner av route-programmet och alla andra program som
sysslar med route-manipulering. /usr/include/linux/route.h (vilken
faktiskt �r en fil i /usr/src/linux) har �ndrats.
7.10. Brandv�gg fungerar inte i 1.2.0
Uppgradera till �tminstone version 1.2.1.
7.11. ``Not a compressed kernel Image file''
Anv�nd inte vmlinux-filen, vilken skapas i /usr/src/linux som k�rna;
[..]/arch/i386/boot/zImage �r den r�tta.
7.12. Problem med konsoll-terminalen efter uppgradering till 1.3.x
�ndra ordet dumb till linux i konsollens termcap-rad i /etc/termcap.
Du kan ocks� bli tvungen att skapa en terminfo-avdelning.
7.13. Verkar inte som om jag kan kompilera saker efter k�rn-upp�
gradering
K�llkoden till Linux-k�rnan inneh�ller ett antal include-filer
(sakerna som slutar med .h), vilka h�nvisas till av standard-
versionerna i /usr/include. De h�nvisas vanligtvis till p� detta s�tt
(d�r xyzzy.h skulle vara n�got i /usr/include/linux):
#include <linux/xyzzy.h>
Vanligtvis finns det en l�nk, som heter linux i /usr/include till
include/linux-katalogen i din k�rn-k�llkod
(/usr/src/linux/include/linux i ett vanligt system). Om denna l�nk
inte finns d�r, eller pekar till fel st�lle, s� kommer det mesta att
v�gra kompilera. Om du best�mmer dig f�r att k�llkoden till k�rnan tar
upp f�r mycket plats p� h�rddisken, och tar bort den, s� �r detta
uppenbarligen ett problem. Ett annat s�tt det kan g� fel p� �r med
fil-r�ttigheter; om din root har en umask, som inte till�ter andra
anv�ndare att se dess filer som standard, och du packade upp k�rn-
k�llkoden med p-parametern (bevara fil-l�gen), s� kommer de andra
anv�ndarna inte att kunna anv�nda C-kompilatorn. �ven om du skulle
kunna anv�nda chmod-kommandot f�r att fixa detta, s� �r det antagligen
enklare att packa upp include-filerna igen. Du kan g�ra detta p� samma
s�tt som du packade upp hela k�llkoden fr�n b�rjan, men med en
ytterligare parameter:
blah# tar zxvpf linux.x.y.z.tar.gz linux/include
Observera: "make config" kommer �terskapa /usr/src/linux-l�nken, om
den inte finns d�r.
7.14. Ut�ka gr�nser
De f�ljande f� exempel-kommandona kan vara hj�lpsamma f�r de som
undrar hur man kan ut�ka vissa "mjuka" gr�nser, som s�tts av k�rnan:
echo 4096 > /proc/sys/kernel/file-max
echo 12288 > /proc/sys/kernel/inode-max
echo 300 400 500 > /proc/sys/vm/freepages
8. Anm�rkning om att uppgradera till version 2.0.x
Version 2.0.x av k�rnan introducerade en hel del f�r�ndringar, vad
g�ller installering av k�rnan. Filen Documentation/Changes i
k�llkodstr�det till 2.0.x inneh�ller information om saker du b�r veta,
n�r du uppgraderar till version 2.0.x. Du kommer antagligen beh�va
uppgradera flera viktiga paket, s�som gcc, libc och SysVInit, och
kanske modifiera vissa system-filer, s� r�kna med detta. Ta det bara
lugnt.
9. Moduler
Laddningsbara k�rn-moduler kan spara minne och g�ra konfigureringen
enklare. Modulernas omfattning har v�xt till att inkludera filsystem,
drivrutiner till ethernet-kort, bandspelare, drivrutiner till skrivare
m.m.
9.1. Installera modul-verktygen
Modul-verktygen �r tillg�ngliga fr�n samma st�lle som du hittar
k�llkoden till k�rnan, som modules-x.y.z.tar.gz; v�lj den h�gsta
patch-niv�n x.y.z, som �r lika med eller under den till din aktuella
k�rna. Packa upp det med `tar zxvf modules-x.y.z.tar.gz', cd-a till
katalogen det skapar (modules-x.y.z), ta en titt p� README-filen och
utf�r det du instrueras att g�ra (vilket vanligtvis �r n�got enkelt,
som make install). Du ska nu ha programmen insmod, rmmod, ksyms,
lsmod, genksyms, modprobe och depmod i /sbin. Om du vill s� kan du
testa verktygen med "hw"-exempel-drivrutinen i insmod; titta till
INSTALL-filen i den underkatalogen, f�r detaljer.
insmod infogar en modul i en k�rna som k�rs. Moduler har vanligtvis en
.o-�ndelse; exempel-drivrutinen, som n�mns ovan, heter drv_hello.o, s�
f�r att infoga denna skriver du `insmod drv_hello.o'. F�r att ta reda
p� vilka moduler k�rnan anv�nder f�r tillf�llet, anv�nd lsmod. Utdatan
ser ut s� h�r:
blah# lsmod
Module: #pages: Used by:
drv_hello 1
`drv_hello' �r namnet p� modulen, det anv�nder en minnes-sida (page)
(4k), och inga andra k�rn-moduler �r beroende av den f�r tillf�llet.
F�r att ta bort den h�r modulen, anv�nd `rmmod drv_hello'. Observera
att rmmod vill ha ett modul-namn, inte ett filnamn; du f�r reda p�
detta fr�n lsmods uppr�kning. De andra modul-verktygen dokumenteras i
sina man-sidor.
9.2. Moduler som distribueras med k�rnan
I version 2.0.30 �r n�stan allt tillg�ngligt som laddningsbara
moduler. F�r att anv�nda dem m�ste du f�rst se till att inte
konfigurera in dem i den vanliga k�rnan; s�ga allts� inte y till dem
under `make config'. Kompilera en ny k�rna och starta om med den. cd-
a sedan till /usr/src/linux igen och k�r en `make modules'. Detta
kompilerar alla de moduler som du inte specificerade i k�rn-
konfigureringen, och placerar l�nkar till i /usr/src/linux/modules. Du
kan anv�nda dem direkt fr�n den katalogen, eller k�ra `make
modules_install', vilket installerar dem i /lib/modules/x.y.z, d�r
x.y.z �r versionen av k�rnan.
Detta kan vara s�rskilt praktiskt med filsystem. Du kanske inte
anv�nder minix- eller msdos-filsystemen s� ofta. Om jag t.ex. st�tte
p� en msdos-diskett (usch d�), s� skulle jag insmod
/usr/src/linux/modules/msdos.o, och sedan rmmod msdos n�r jag var
klar. Denna procedur spara runt 50k RAM i k�rnan, under normal
anv�ndning. En liten anm�rkning �r p� sin plats ang�ende minix-
filsystemet: du ska alltid konfigurera in det direkt i k�rnan, f�r
anv�ndning p� "r�ddnings"-disketter.
10. Andra konfigurerings-alternativ
Detta avsnitt inneh�ller beskrivningar av utvalda konfigurerings-
alternativ (i make config), vilka inte tas upp i konfigurerings-
avsnittet. De flesta enhets-drivrutiner tas inte upp h�r.
10.1. Vanliga inst�llningar (General setup)
Normal floppy disk support - �r precis det (st�d f�r vanliga floppy-
diskar). Du kan ta en titt p� filen drivers/block/README.fd; detta �r
extra viktigt f�r IBM Thinkpad-anv�ndare.
XT harddisk support - om du vill anv�nda den d�r 8-bitars XT-
controllern, som ligger i h�rnet och samlar damm.
PCI bios support - om du har PCI, s� kan du pr�va p� det h�r; ta det
f�rsiktigt, bara, eftersom vissa gamla PCI-moderkort kommer krascha av
det h�r. Mer information om PCI-bussen under Linux finns i PCI-HOWTOn.
Kernel support for ELF binaries - ELF �r ett f�rs�k att l�ta bin�r-
filer fungera p� olika arkitekturer och operativ-system; Linux verkar
vara p� v�g i den riktningen, s� du vill antagligen ha detta.
Set version information on all symbols for modules - f�rut
kompilerades alltid k�rn-modulerna om med varje ny k�rna. Om du s�ger
y s� kommer det bli m�jligt att anv�nda moduler som kompilerats under
en annan patch-niv�. L�s README.modules f�r mer detaljer.
10.2. Networking options
Networking options (n�tverks-alternativ) beskriv i NET-3-HOWTOn (eller
NET-n�gonting-HOWTOn).
11. Tips och knep
11.1. Omdirigera utdatan fr�n make- eller patch-kommandona
Om du skulle vilja ha log-filer, om vad de d�r `make'- eller
`patch'-kommandona gjorde, s� kan du omdirigera utdatan till en fil.
Ta f�rst reda p� vilket skal du k�r: `grep root /etc/passwd' och leta
efter n�gonting i stil med `/bin/csh'.
Om du anv�nder sh eller bash, k�r
(kommando) 2>&1 | tee (output file)
vilket placerar en kopia av (kommando)s utdata i filen `(output
file)'.
F�r csh eller tcsh, anv�nd
(command) |& tee (output file)
F�r rc (Observera: du anv�nder antagligen inte rc) �r det
(command) >[2=1] | tee (output file)
11.2. Villkorlig k�rn-installering
F�rutom att anv�nda disketter, s� finns det ett flertal metoder f�r
att pr�va en ny k�rna, utan att r�ra den gamla. I motsats till flera
andra Unix-varianter s� kan LILO starta en k�rna fr�n var som helst p�
h�rddisken (om du har en stor (500 MB eller mer) h�rddisk, l�s igenom
LILO-dokumentationen, om hur detta kan leda till problem). Allts�, om
du l�gger till n�got i stil med
image = /usr/src/linux/arch/i386/boot/zImage
label = new_kernel
till slutet av LILOs konfigurerings-fil, s� kan du v�lja att k�ra en
nyligen kompilerad k�rna, utan att r�ra din gamla /vmlinuz (efter att
du k�rt lilo naturligtvis). Det enklaste s�ttet att s�ga �t LILO att
starta en ny k�rna att trycka ner shift-tangenten d� systemet startas
(n�r det st�r LILO, och inget annat, p� sk�rmen), vilket ger dig en
prompt. Nu kan du skriva `new_kernel' f�r att starta den nya k�rnan.
Om du vill ha flera olika k�rn-k�llkodstr�d p� ditt system, p� samma
g�ng (detta kan ta upp en massa h�rddisk-utrymme; var f�rsiktig), s�
�r det vanligaste s�ttet att kalla dem /usr/src/linux-x.y.z, d�r x.y.z
�r k�rn-versionen. Du kan sedan "v�lja" ett k�llkodstr�d med en
symbolisk l�nk; t.ex. s� skulle `ln -sf linux-1.2.2 /usr/src/linux'
g�ra 1.2.2 till det aktuella tr�det. Innan du skapar en s�dan
symbolisk l�nk, se till s� att det sista parametern till ln inte �r en
riktig katalog (gamla symboliska l�nkar g�r bra); resultatet kanske
inte blir vad du v�ntat dig.
11.3. Uppdateringar av k�rnan
Russell Nelson (
[email protected]) sammanfattar f�r�ndringarna i nya
utg�vor av k�rnan. Dessa �r korta och du kan ta en titt p� dem innan
du utf�r en uppgradering. De �r tillg�ngliga via anonym ftp fr�n
ftp.emlist.com i pub/kchanges, eller genom URLen
http://www.crynwr.com/kchanges
12. Andra relevanta HOWTOn, som kan vara anv�ndbara
� Sound-HOWTO: ljud-kort och -verktyg
� SCSI-HOWTO: allt om SCSI-controllers och -verktyg
� NET-2-HOWTO: n�tverk
� PPP-HOWTO: PPP-n�tverk
� PCMCIA-HOWTO: om drivrutinerna till din b�rbara dator
� ELF-HOWTO: ELF: vad det �r, konvertering...
� Hardware-HOWTO: �versikt av st�dd h�rdvara
� Module-HOWTO: mer om k�rn-moduler
� Kerneld mini-HOWTO: om kerneld
� BogoMips mini-HOWTO: ifall du undrade
13. Diverse
13.1. F�rfattare
F�rfattaren och utvecklaren av Linux Kernel-HOWTO �r Brian Ward
(
[email protected]). Var v�nlig skicka mig kommentarer,
till�gg, r�ttelser (r�ttelser �r speciellt viktiga f�r mig).
Du kan ta en titt p� min `hemsida' p� en av dessa URLer:
http://www.math.psu.edu/ward/
http://blah.math.tu-graz.ac.at/~bri/
�ven om jag f�rs�ker ta s� mycket h�nsyn som m�jligt till e-post, var
v�nlig kom ih�g att jag f�r en massa e-post varje dag, s� det kan ta
ett tag att svara. Speciellt om du skickar mig en fr�ga, f�rs�k extra
mycket att vara klar och detaljerad i ditt meddelande. Ifall du inte
skriver om icke fungerande h�rdvara (eller n�got �t det h�llet), s�
beh�ver jag veta hur din h�rdvaru-konfigurering ser ut. Om du
rapporterar ett fel, s�g inte bara "Jag f�rs�kte det h�r men fick ett
fel". Jag beh�ver veta vad det var f�r fel. Jag skulle ocks� vilja
veta vilka versioner av k�rnan, gcc och libc du anv�nder. Om du bara
s�ger att du anv�nder den-eller-den distributionen, s� s�ger det mig
inte s� mycket. Jag bryr mig inte om att du fr�gar enkla fr�gor; kom
ih�g att, om du inte fr�gar, s� f�r du aldrig reda p� svaret! Jag
vill tacka alla som har gett mig respons.
Om du har skickat mig ett e-brev och inte f�tt n�got svar inom rimlig
tid (tre veckor eller s�), s� finns det en m�jlighet att jag av
misstag har raderat ditt meddelande eller n�got (urs�kta mig). F�rs�k
igen.
Jag f�r en massa e-brev om saker som faktiskt �r h�rdvaruproblem. Det
�r okej, men f�rs�k komma ih�g att jag inte k�nner till all h�rdvara i
hela v�rlden och att jag inte vet hur hj�lpsam jag kan vara;
personligen anv�nder jag en maskin med IDE- och SCSI-h�rddiskar, SCSI
CD-ROM, 3Com och WD ethernet-kort, seriella m�ss, moderkort med PCI,
NCR 810 SCSI-controllers, AMD 386DX40 med Cyric hj�lp-processor,
AMD5x86, AMD 486DX4 och Intel 486DX4-processorer (detta �r en
�verblick �ver vad jag anv�nder och k�nner till, definitivt inte en
rekommendation, men om det �r vad du vill ha s� �r du mer �n v�lkommen
att fr�ga :-)).
Version -0.1 skrevs 3 oktober 1994. Detta dokument �r tillg�ngligt som
SGML, PostScript, TeX, roff och ren text.
13.2. Att g�ra
"Tips och knep"-avsnittet �r lite litet. Jag hoppas kunna ut�ka det
med f�rslag fr�n andra.
Samma med "Ytterligare paket".
Mer information om hur man klarar av avlusning/krash-�terh�mtning
beh�vs.
13.3. Bidrag
En liten del av Linux README (k�rn-hackning-alternativet) �r
inkluderad. (Tack Linus!)
[email protected] (Ulrich Callmeier): patch -s and xargs.
[email protected] (Daniel Quinlan): r�ttelser och till�gg i m�nga
avsnitt.
nat@
[email protected] (Nat Makarevitch): mrproper, tar -p, m�nga
fler saker
[email protected] (Axel Boldt): samlade beskrivningar av
konfigurerings-alternativ p� n�tet; gav mig sedan listan
[email protected] (Steve Lembark): flera uppstarts-f�rslag
(boot suggestions)
[email protected] (Keith Briggs): n�gra
r�ttelser och f�rslag
[email protected] (Ryan McGuire): make-till�gg
[email protected] (Eric Dumas): fransk �vers�ttning
[email protected] (Yasutada Shimazaki): japansk
�vers�ttning
[email protected] (Juan Jose Amor Iglesias): spansk �vers�ttning
[email protected] (Martin Wahlen): svensk �vers�ttning
[email protected] (Zoltan Vamosi): ungersk �vers�ttning
[email protected] (Bartosz Maruszewski): polsk �vers�ttning
[email protected] (Michael J Donahue): skrivfel, vinnare i
"skivat br�d-t�vlingen"
[email protected] (Richard Stallman): dokumentation om "fri"
dokumentation och kommentarer om detta
[email protected] (David Kastrup): NFS-saker
[email protected] (Eric Raymond): diverse sm�saker
De som har skickat mig e-brev med fr�gor och problem har ocks� varit
ganska hj�lpsamma.
13.4. Upphovsr�tt, licens och s�dana grejer
Copyright � Brian Ward, 1994-1997.
Till�telse ges att g�ra och distribuera kopior av den h�r manualen,
f�rusatt att upphovsr�tten och denna till�telse bevaras i alla kopior.
Till�telse ges att kopiera och distribuera modifierade versioner av
den h�r manualen, under villkoren f�r ordagrann kopiering, f�rutsatt
att det h�rledda verket distribueras under villkor som �r identiska
med dessa. �vers�ttningar faller under kategorin "modifierade
versioner".
Garanti: ingen.
Rekommendationer: Kommersiell vidaredistribuering �r till�ten och
uppmuntras; det rekommenderas dock starkt att distribut�ren tar
kontakt med f�rfattaren innan vidaredistribueringen, f�r att kunna
h�lla saker och ting aktuella (du kan g�rna skicka mig ett exemplar av
saker du tillverkar n�r du �nd� h�ller p�). �vers�ttare rekommenderas
ocks� att ta kontakt med f�rfattaren innan de �vers�tter. Den tryckta
versionen ser snyggare ut. �teranv�nd.