  The Linux Kernel HOWTO
  Brian Ward, bri@blah.math.tu-graz.ac.at, svensk
  versttning: Linus kerlund, uxm165t@tninet.se
  v0.80, 26 May 1997, svensk versttning 21 juni 1998

  Detta r en detaljerad guide till krn-konfigurering, kompilering,
  uppgraderingar och problem-lsning fr ix86-baserade system.
  ______________________________________________________________________

  Innehllsfrteckning
























































  1. Inledning

     1.1 Ls det hr frst! (Jag menar det)
     1.2 Ngra ord om stilen
     1.3 versttarens anmrkningar

  2. Viktiga frgor och svar p dessa

     2.1 Vad r det krnan gr, frresten?
     2.2 Varfr skulle jag vilja uppgradera min krna?
     2.3 Vilken slags hrdvara stdjer de nyare krnorna?
     2.4 Vilka versioner av gcc och libc behver jag?
     2.5 Vad r en laddningsbar modul?
     2.6 Hur mycket hrddisk-utrymme behver jag?
     2.7 Hur lng tid tar det?

  3. Hur den faktiska konfigureringen av krnan gr till

     3.1 Skaffa kllkoden
     3.2 Packa upp kllkoden
     3.3 Konfigurera krnan
        3.3.1 Matte-emulering i krnan (Math emulation in kernel)
        3.3.2 Normal (MFM/RLL) disk och IDE disk/cdrom-std
        3.3.3 Ntverks-std (Networking support)
        3.3.4 Begrnsa 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-std (SCSI support)
        3.3.8 Std fr ntverks-enhets (Network device support)
        3.3.9 Filsystem
           3.3.9.1 Men jag vet inte vilka filsystem jag behver!
        3.3.10 Tecken-enheter (Character devices)
        3.3.11 Ljud-kort
        3.3.12 Andra konfigurerings-alternativ
        3.3.13 "Krn-hackande" (Kernel hacking)
     3.4 Och nu d? (Makefile)

  4. Kompilera krnan

     4.1 Stda upp och ange beroenden (Cleaning and depending)
     4.2 Kompilerings-dags
     4.3 Andra "make"-prylar
     4.4 Installera krnan

  5. Patcha krnan

     5.1 Lgga till en patch
     5.2 Om ngot gr 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. Ngra fallgropar

     7.1 make clean
     7.2 Enorma eller lngsamma krnor
     7.3 Krnan kompilerar inte
     7.4 Den nya versionen av krnan verkar inte starta (boot)
     7.5 Du glmde kra LILO, eller systemet startar inte alls
     7.6 Jag fr `warning: bdflush not running'
     7.7 Den sger saker om "undefined symbols" och kompilerar inte
     7.8 Jag fr inte min IDE/ATAPI CD-ROM-spelare att fungera
     7.9 Den sger konstiga saker om "obsolete routing requests"
     7.10 Brandvgg 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 krn-uppgradering
     7.14 Utka grnser

  8. Anmrkning om att uppgradera till version 2.0.x

  9. Moduler

     9.1 Installera modul-verktygen
     9.2 Moduler som distribueras med krnan

  10. Andra konfigurerings-alternativ

     10.1 Vanliga instllningar (General setup)
     10.2 Networking options

  11. Tips och knep

     11.1 Omdirigera utdatan frn make- eller patch-kommandona
     11.2 Villkorlig krn-installering
     11.3 Uppdateringar av krnan

  12. Andra relevanta HOWTOn, som kan vara anvndbara

  13. Diverse

     13.1 Frfattare
     13.2 Att gra
     13.3 Bidrag
     13.4 Upphovsrtt, licens och sdana grejer


  ______________________________________________________________________

  1.  Inledning


  Borde du lsa det hr dokumentet? Tja, se efter om du har ngot av
  fljande problem:



    "Arg! Det hr wizzo-46.5.6-paketet sger att det behver krn-
     version 1.8.193 och jag har fortfarande version 1.0.9!"

    Det finns en enhets-drivrutin i en av de nyare krnorna som du bara
     mste ha

    Du har verkligen inte en aning om hur man kompilerar en krna

    "r de hr grejerna i READMEn verkligen allt?"

    Du kom, du frskte, det fungerade inte

    Du behver ngot att ge till folk som insisterar p att be dig att
     installera deras krnor t dem





  1.1.  Ls det hr frst! (Jag menar det)

  Ngra av exemplen i det hr dokumentet frutstter att du har GNU tar,
  find och xargs. De r ganska standard; detta ska inte skapa ngra
  problem. Det frutstts ocks att du knner till ditt systems
  filsystems-struktur; om du inte gr det s r det viktigt att du har
  en avskrift av mount-kommandots utdata, under normala frhllanden
  (eller en listning av /etc/fstab, om du frstr den). Denna
  information r viktig och ndras inte, frutsatt att du inte
  partitionerar om din hrddisk, lgger till en ny, installerar om ditt
  system eller ngot liknande.


  Den senaste "production"-versionen av krnan, nr detta skrivs, var
  2.0.30, vilket innebr att referenserna och exemplen korresponderar
  till den utgvan. ven om jag frsker gra det hr dokumentet s
  versions-oberoende som mjligt, s r krnan stndigt under
  utveckling, s om du har en ny utgva, s kommer dr oundvikligen att
  finnas skillnader.  terigen, detta borde inte skapa ngra problem,
  men det skulle kunna ge upphov till viss frvirring.


  Det finns tv versioner av kllkoden till Linux-krnan, "production"
  och "development" (stabil respektive utvecklings-version. vers.anm.).
  Production-utgvor brjar med 1.0.x r fr tillfllet versionerna med
  jmna nummer; 1.0.x var production, 1.2.x var production, precis som
  2.0.x. Dessa krnor anses vara de mest stabila, bugg-fria versionerna
  tillgngliga, d de ges ut. Utvecklings-versionerna av krnan (1.1.x,
  1.3.x osv) r menade som test-krnor, fr folk som har lust att prova
  p nya och ibland ganska buggiga krnor. Du har blivit varnad.



  1.2.  Ngra ord om stilen


  Text som ser ut s hr r antingen ngot som upptrder p din skrm,
  ett filnamn, eller ngot som kan skrivas in direkt, ssom ett
  kommando, eller parametrar till ett kommando (om du lser detta
  dokument i rent text-format, s ser det inte annorlunda ut). Kommandon
  och andra indata citeras ofta (med ` '), vilket skapar fljande
  klassiska kommaterings-problem: om en sdan sak upptrder i slutet av
  en mening, inom citationstecken, s skriver folk ofta en `.'
  tillsammans med kommandot, eftersom det amerikanska sttet att citera
  sger att man ska stta punkten innanfr citationstecknen. ven om det
  sunda frnuftet (och tyvrr s frutstter detta att den som har sunt
  frnuft r van vid den s kallade amerikanska citations-stilen) borde
  sga t en att ta bort punkten frst, s r det mnga som helt enkelt
  inte kommer ihg det, s jag kommer placera punkten utanfr citations-
  tecknen i sdana fall. Med andra ord, om jag sger r dig att skriva
  "make config", s skriver jag `make config', inte `make config.'


  1.3.  versttarens anmrkningar

  Uppdaterade dokumentet 13/11-98, genom att byta ut versttningen av
  "permissions" till "rttigheter", istllet fr det smre "tilltelser"



  2.  Viktiga frgor och svar p dessa





  2.1.  Vad r det krnan gr, frresten?


  Unix-krnan fungerar som en medlare mellan dina program och din
  hrdvara. Frst och frmst s utfr den (eller ser till s att det
  blir utfrt) minneshantering fr alla program (processer) som krs,
  och ser till s att alla fr sin rttvisa (eller orttvisa, det beror
  p hur man ser p saken) tilldelning av processor-cykler. Vidare s
  tillhandahller den ett trevligt, ganska portabelt grnssnitt, som gr
  att programmen kan prata med din hrdvara.


  Krnan gr visserligen mer n s, men dessa grundlggande funktioner
  r de viktigaste att knna till.




  2.2.  Varfr skulle jag vilja uppgradera min krna?


  Nyare krnor erbjuder generellt mjligheter att prata med flera typer
  av hrdvara (de har allts fler enhets-drivrutiner), de kan ha bttre
  process-hantering, de kan arbeta snabbare n ldre versioner, de kan
  vara mer stabila n ldre versioner och de kan rtta till fjantiga
  buggar i ldre versioner. De flesta uppgraderar sina krnor fr att de
  vill ha drivrutinerna och bugg-fixarna.




  2.3.  Vilken slags hrdvara stdjer de nyare krnorna?


  Se Hardware-HOWTOn. Eller s kan du ta en titt p `config.in'-filen i
  Linux-kllkoden, eller helt enkelt f reda p det nr du kr `make
  config'. Detta visar dig all hrdvara som stds av standard-
  distributionen av krnan, men inte allt som Linux stdjer; mnga
  vanliga enhets-drivrutiner (ssom PCMCIA-drivrutinerna och band-
  drivrutinerna) r laddningsbara moduler, vilka utvecklas och
  distribueras separat.




  2.4.  Vilka versioner av gcc och libc behver jag?


  Linus rekommenderar en viss version av gcc i README-filen, som kommer
  med Linux-kllkoden. Om du inte har denna version, s talar gcc-
  dokumentationen i den rekommenderade versionen av gcc om ifall du
  behver uppgradera libc. Detta r inte en svr procedur, men det r
  viktigt att du fljer instruktionerna.




  2.5.  Vad r en laddningsbar modul?


  Dessa r delar av krn-koden, vilka inte lnkas (inkluderas) direkt
  till krnan. Man kompilerar dem separat, och kan stta in dem och ta
  bort dem frn krnan som krs, nstan nr som helst. P.g.a. deras
  flexibilitet, s r de nu det mest populra sttet att koda vissa
  krn-funktioner. Mnga populra enhets-drivrutiner, ssom PCMCIA-
  drivrutinerna och QIC-80/40 band-drivrutinerna, r laddningsbara
  moduler.




  2.6.  Hur mycket hrddisk-utrymme behver jag?


  Det beror p just din system-konfiguration. Den komprimerade kllkoden
  r nstan 6 megabytes stor, vid version 2.0.10. De flesta behller
  denna ven efter uppackningen. Uppackad tar den upp 24 MB. Men det
  rcker inte med det -- du behver mer fr att faktiskt kompilera den.
  Detta beror p hur mycket stoppar in i din krna. P en specifik
  maskin, t.ex., s har jag ntverk, 3com 3C509-drivrutinen och tre
  filsystem konfigurerade, till vilket det gr t 30 MB. Om vi lgger
  till den packade Linux-kllkoden, s behver du runt 36 MB fr just
  denna konfiguration. P ett annat system, utan ntverks-enhets-std
  (men fortfarande med ntverks-std) och ljudkorts-std, tar den upp
  nnu mera utrymme. En nyare krna har dessutom med stor skerhet ett
  strre kllkods-trd n en ldre, s rent generellt, om du har en
  massa hrdvara, s mste du se till att du har en tillrckligt stor
  hrddisk i rran (och med dagens prislge kan jag inte lta bli att
  rekommendera dig att skaffa en till hrddisk, som ett svar p dina
  utrymmes-problem).




  2.7.  Hur lng tid tar det?


  Fr de flesta r svaret "ganska lng tid". Ditt systems hastighet och
  mngden minne du har bestmmer, i sista instans, tiden, men det har
  ven en del att gra med mngden grejer du konfigurerar in i krnan.
  P en 486DX4/100, med 16 MB RAM, tar det, fr en v1.2-krna med fem
  filsystem, ntverks-std och ljudkorts-drivrutiner runt 20 minuter. P
  en 386DX/40 (8 MB RAM), med en liknande konfiguration, tar
  kompileringen nstan 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 gra fr skojs skull, nr din maskin kompilerar en krna.
  Du kan ven be ngon med en snabbare maskin kompilera en krna t dig,
  om du har en lngsam maskin.




  3.  Hur den faktiska konfigureringen av krnan gr till



  3.1.  Skaffa kllkoden


  Du kan skaffa kllkoden via anonym ftp frn ftp.funet.fi, i
  /pub/Linux/PEOPLE/Linus, en spegel eller ngon annan sajt. Den heter i
  typfallet linux-x.y.z.tar.gz, dr x.y.z r versionsnumret. Nyare
  (bttre?) versioner och patcharna finns vanligtvis i underkataloger
  som `v1.1'och `v1.2'. Det hgsta numret r den senaste versionen, och
  r vanligtvis en "test-utgva", vilket innebr att du inte ska ta hem
  den, om du knner dig osker p beta- och alfa-utgvor. Hll dig i s
  fall till den stabila utgvan.


  Det rekommenderas starkt att du anvnder en spegel-sajt, istllet fr
  ftp.funet.fi. Hr 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
  stlle att leta p. Filen /pub/Linux/MIRRORS innehller en lista p
  knda speglar. Om du inte har tillgng till ftp, s postas en lista p
  BBS-system med Linux regelbundet till comp.os.linux.announce; frsk
  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 kllkoden


  Logga in som, eller su-a till, `root', och cd-a till /usr/src. Om du
  installerade krn-kllkoden, d du frst installerade Linux (som de
  flesta gr), s finns dr redan en katalog som heter `linux', vilken
  innehller hela kllkods-trdet. Om du har gott om hrddisk-utrymme
  och vill ta det skra fre det oskra, s behll den katalogen. En bra
  id r att ta reda p vilken version ditt system kr nu och byta namn
  p katalogen, enligt versions-numret. Kommandot `uname -r' skriver ut
  den aktuella krnans version. Allts, om `uname -r' sger `1.0.9', s
  br du ndra namnet (med `mv') p `linux' till `linux-1.0.9'.  Om du
  knner dig hyffsat vrdsls, s kan du helt enkelt ta bort katalogen.
  I vilket fall som helst, se till s att det inte finns ngon
  `linux'-katalog i /usr/src innan du packar upp det fullstndiga
  kllkods-trdet.



  Packa nu upp kllkoden 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').  Innehllet i kllkoden kommer flyga frbi. Nr
  uppackningen r klar, kommer det finnas en ny `linux'-katalog i
  /usr/src. cd-a till linux och ls igenom README-filen. Dr finns en
  avdelning som heter `INSTALLING the kernel'. Utfr instruktionerna nr
  det r passande -- symboliska lnkar som ska finnas p plats,
  borttagande av ondiga .o-filer osv.


  3.3.  Konfigurera krnan

  Observera: En del av detta r upprepningar/klargranden av en liknande
  avdelning i Linus README-fil.


  Kommandot `make config', nr du r i /usr/src/linux startar ett
  konfigurerings-skal-program, vilket stller en massa frgor.  Det
  krver bash, s se till att bash r /bin/bash, /bin/sh eller $BASH.

  Det finns ngra alternativ till `make config', och det r mycket
  mjligt att du kommer tycka att de r lttare och mer bekvma att
  anvnda.  De som "kr X" kan prva `make xconfig', om de har Tk
  installerat (`click-o-rama' - Nat). `make menuconfig' r fr de som
  har (n)curses och fredrar en text-baserad meny. Dessa grnssnitt har
  en klar frdel: om du stller till ngot dumt, och vljer fel p ngot
  alternativ, under konfigureringen, s r det enkelt att g tillbaks
  och fixa det.


  Du ska vara redo att svara p frgorna, vanligtvis med `y' (ja) eller
  `n' (nej). Enhets-drivrutiner har vanligtvis ven ett `m'-alternativ.
  Detta betyder "modul", vilket innebr att systemet kommer att
  kompilera den, men inte direkt in i krnan, utan som en laddningsbar
  modul. Ett lustigare stt att beskriva det r som "maybe"
  (kanske.vers.anm.). Ngra av de mer uppenbara och okritiska
  alternativen beskrivs inte hr; se avsnittet "Andra konfigurerings-
  alternativ" fr korta beskrivningar av ngra 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 krnan (Math emulation in kernel)


  Om du inte har en matte-hjlp-processor (om du har en "bar" 386 eller
  486SX), s mste du sga `y' till detta. Om du har en hjlp-processor
  och nd sger `y', s r det inget att oroa sig fr -- hjlp-
  processorn anvnds i alla fall, och emuleringen ignoreras. Den enda
  konsekvens detta fr r att krnan blir strre (slseri med RAM). Jag
  har blivit informerad om att matte-emuleringen r lngsam; ven om
  detta inte har ngot med detta avsnitt att gra, s kan det vara bra
  att ha i bakhuvudet om du tycker att X-Window-systemet upptrder
  klumpigt.




  3.3.2.  Normal (MFM/RLL) disk och IDE disk/cdrom-std


  Du behver antagligen stdja detta; det innebr att krnan kommer att
  stdja vanliga PC-hrddiskar, vilket de flesta har. Den hr
  drivrutinen inkluderar inte SCSI-hrddiskar; de kommer senare i
  konfigureringen.



  Du kommer sedan bli tillfrgad om "old disk-only"- och "new
  IDE"-drivrutinerna.  Du br vlja en av dessa: den huvudsakliga
  skillnaden r att den gamla drivrutinen endast stdjer tv hrddiskar
  p ett enda grnssnitt, och att den nya stdjer ett sekundrt
  grnssnitt och IDE/ATAPI CD-ROM-spelare. Den nya drivrutinen r 4k
  strre n den gamla, och psts ocks vara "frbttrad", vilket
  innebr att, frutom att den innehller ett annat antal buggar, s kan
  den frbttra dina hrddiskars prestanda, speciellt om du har nyare
  (EIDE-typ) hrdvara.



  3.3.3.  Ntverks-std (Networking support)

  In princip, sg `y' endast om din maskin r i ett ntverk, som
  Internet, eller om du vill anvnda SLIP, PPP, term osv fr uppringd
  Internet-frbindelse. Men eftersom mnga paket (som X-Window-systemet)
  krver ntverks-std, ven om maskinen inte finns i ett riktigt
  ntverk, s br du sga `y'. Senare kommer du bli tillfrgad om du
  vill stdja TCP/IP-ntverk; sg terigen `y' hr om du inte r absolut
  sker.



  3.3.4.  Begrnsa 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; sg `y' om det skulle rka vara s att du
  har en.




  3.3.5.  System V IPC


  En av de bsta definitionerna av IPC (Interprocess Communication)
  finns i Perl book's ordlista. Inte helt verraskande, s anvnder
  vissa Perl-programmerare det fr att lta processer tala med varandra,
  och ven andra paket (av vilka DOOM r det mest anmrkningsvrda), s
  det r inte en bra id att sga n, om du inte vet exakt vad du sysslar
  med.




  3.3.6.  Processor-typ (386, 486, Pentium, PPro)

  (i ldre krnor: anvnd -m486-flaggan fr 486-specifika optimeringar)


  Traditionellt s har detta kompilerat vissa optimeringar fr speciella
  processorer; Krnorna fungerade fint p andra chips, men krnan blev
  kanske en aning strre. I nyare krnor r dock inte detta lngre
  fallet, s du br vlja den processor du kompilerar krnan fr. En
  "386"-krna fungerar p alla maskinerna.



  3.3.7.  SCSI-std (SCSI support)

  Om du har SCSI-enheter, sg `y'. Du kommer bli tillfrgad om vidare
  information, som t.ex. std fr CD-ROM, diskar och vilken sorts SCSI-
  adapter du har. Se SCSI-HOWTOn fr mer detaljer.



  3.3.8.  Std fr ntverks-enhets (Network device support)


  Om du har ett ntverks-kort, eller om du vill anvnda SLIP, PPP eller
  en parallell-ports-adapter fr att koppla upp dig p Internet, sg
  `y'.  Config-programmet kommer frga efter vilket slags kort du har,
  och vilket protokoll du anvnder.




  3.3.9.  Filsystem



  Config-programmet frgar sedan om du vill ha std fr de fljande
  filsystemen:



  Standard (minix) - Nyare distributioner skapar inte minix-filsystem,
  och mnga anvnder det inte, men det kan fortfarande vara en bra id
  att ta med detta. Programmen p vissa "rddnings-disketter" anvnder
  det, och mnga disketter kan fortfarande ha minix-filsystemet,
  eftersom det r mindre smrtsamt att anvnda p en diskett.



  Extended fs - Detta var den frsta versionen av det utvidgade
  filsystemet, vilket inte lngre anvnds speciellt mycket. Det r
  antagligen s att du vet om du behver det och om du r osker, s
  behver du det inte.



  Second extended - Det hr anvnds mycket i nyare distributioner. Du
  har antagligen ett sdant, och ska sga `y'.



  xiafs filesystem - En gng i tiden var det hr inte s ovanligt, men
  nr detta skrivs, s vet jag inte om ngon som anvnder det.



  msdos - Om du vill anvnda din MS-DOS-hrddisks partitioner, eller
  montera MS-DOS-formatterade disketter, sg `y'.



  umsdos - Det hr filsystemet expanderar ett MS-DOS-filsystem med
  vanliga Unix-liknande funktioner, ssom lnga filnamn. Det r inte
  anvndbart fr folk (som jag), som "inte DOSar".



  /proc - nnu en av de bsta sakerna sedan torrmjlk (idn skamlst
  stulen frn Bell Labs, antar jag). Man skapar inte ett proc-filsystem
  p en disk; det hr r ett filsystems-grnssnitt till krnan och
  processerna. Mnga process-listare (ssom `ps') anvnder det. Testa
  `cat /proc/meminfo' eller cat /proc/devices' ibland.  Vissa skal
  (speciellt rc) anvnder /proc/self/id (knt som /dev/fd p andra
  system) fr in/ut-hantering. Du ska antagligen sga `y' till det hr;
  mnga viktiga Linux-verktyg r beroende av det.



  NFS - Om din maskin finns i ett ntverk och du vill kunna anvnda
  filsystemen, som finns p andra system, med NFS, sg `y'.



  ISO9660 - Finns p de flesta CD-ROMar. Om du har en CD-ROM-spelare och
  vill kunna anvnda den under Linux, sg `y'.



  OS/2 HPFS - Nr detta skrivs, ett filsystem som endast tillter
  lsning, fr OS/2 HPFS.


  System V och Coherent - fr partitioner i System V- och Coherent-
  system (det finns andra Unix-varianter fr PC).




  3.3.9.1.  Men jag vet inte vilka filsystem jag behver!


  Okej, skriv `mount'. Utdatan kommer se ut ngot 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
  hr exemplet, mina /- och /usr-filsystem r "second extended", jag
  anvnder /proc och det finns en diskett monterad, vilken anvnder
  msdos-filsystemet (bl).


  Du kan testa `cat /proc/filesystem', om du har /proc p fr
  tillfllet; det kommer lista din nuvarande krnas filsystem.

  Att ta med sllan anvnda, icke ndvndiga filsystem kan leda till att
  krnan blir ondigt stor; se avsnittet om moduler fr en vg runt
  detta och "Fallgropar"-avsnittet, om varfr en fr stor krna inte r
  bra.



  3.3.10.  Tecken-enheter (Character devices)


  Hr tar du med drivrutiner fr din skrivare (parallell-skrivare
  allts), buss-mus, PS/2-mus (mnga brbara datorer anvnder PS/2-mus-
  protokollet fr sina inbyggda trackballs), vissa band-spelare (tape
  drivers) och andra dylika "tecken"-enheter. Sg `y' dr det passar.


  Anmrkning: Selection r ett program som lter anvndaren anvnda en
  mus utanfr X-Window-systemet, fr att kunna klippa och klistra mellan
  virtuella konsoller. Det r ganska trevligt om du har en seriell mus,
  fr det samexisterar bra med X, men du mste ta till speciella trick
  fr andra.  Selection-std var ett konfigurerings-alternativ en gng i
  tiden, men det r nu standard.

  Anmrkning 2: Selection anses nu frldrat. "gpm" r namnet p det nya
  programmet. Det kan gra hftigare saker, som att verstta mus-
  protokoll, hantera mer n en mus...



  3.3.11.  Ljud-kort

  Om du knner att du har ett behov av att hra biff sklla, sg `y',
  och ett annat config-program kommer senare kompilera och frga efter
  alla data om ditt ljudkort. (En anmrkning om ljudkorts-instllning:
  nr det frgar dig om du vill installera "the full version" (den
  fullstndiga versionen) av drivrutinen, s kan du sga `n', och spara
  en del krn-utrymme, genom att vlja enbart de funktioner du finner
  ndvndiga.)  Jag rekommenderar starkt att du tar en titt p Sound-
  HOWTO, fr mer detaljer om ljud-std, om du har ett ljudkort.



  3.3.12.  Andra konfigurerings-alternativ


  Alla konfigurerings-alternativ listas inte hr, eftersom de ndras
  alldeles fr ofta, eller r ganska sjlv-frklarande (t.ex. 3Com
  3c509-std, fr att kompilera drivrutinen fr just detta ethernet-
  kort). Det finns en ganska innehllsrik lista p alla alternativ (och
  ett stta att placera dem i Configure-skal-programmet), sammansatt av
  Axel Boldt (axel@uni-paderborn.de), med den fljande URLen:


       http://math-www.uni-paderborn.de/~axel/config_help.html


  eller via anonym FTP frn:


       ftp://sunsite.unc.edu/pub/Linux/kernel/config/krnl_cnfg_hlp.x.yz.tgz


  Dr x.yz r versionsnumret.

  Fr senare (2.0.x och senare) krnor har detta blivit integrerat i
  kllkods-trdet.




  3.3.13.  "Krn-hackande" (Kernel hacking)


  >Frn Linus README:

  "kernel hacking"-konfigurering ger ofta en strre eller lngsammare
  (eller bda) krna, och kan till och med gra krnan mindre stabil,
  genom att stlla in vissa rutiner fr att aktivt frska frstra
  dlig kod, fr att hitta krn-problem (kmalloc()). Du ska allts
  antagligen svara `n' p den hr frgan, om du vill ha en
  "production"-krna.



  3.4.  Och nu d? (Makefile)

  Efter att du har krt make config, kommer ett meddelande som talar om
  att din krna 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 behva ndra
  i den, men det skadar inte att ta en titt. Du kan ocks ndra dess val
  med `rdev'-kommandot, s fort krnan r p plats.





  4.  Kompilera krnan



  4.1.  Stda upp och ange beroenden (Cleaning and depending)


  Nr configure-programmet avslutas sger det ocks t dig att `make
  dep' och (eventuellt) `clean'. Kr allts `make dep'. Detta ser till
  s att alla beroenden (dependencies), som include-filerna, r p
  plats. Det tar inte lng stund, om inte din dator r ganska lngsam
  frn brjan. Fr ldre krn-versioner ska du kra en `make clean' nr
  du r klar. Detta tar bort alla object-filer och ngra andra saker,
  som en gammal version lmnar efter sig. I vilket fall som helst, glm
  inte detta steg, innan du frsker kompilera om en krna.




  4.2.  Kompilerings-dags

  Efter dep och clean, s kan du nu antingen kra `make zImage' eller
  `make zdisk (det r den hr delen som tar lng tid). `make zImage'
  kommer kompilera krnan och lmna en fil i arch/i386/boot, vilken
  heter `zImage' (tillsammans med en del andra saker). Detta r den nya,
  packade krnan. `make zdisk' gr samma sak, men lgger ocks in den
  nya zImage p en diskett, vilken du frhoppningsvis satt in i floppy-
  station "A:". `zdisk' r ganska praktiskt fr att prva nya krnor; om
  den krashar (eller helt enkelt inte fungerar speciellt bra), ta bara
  ut disketten och starta om med din gamla krna. Det kan ocks vara ett
  praktiskt stt att starta upp om du av misstag tar bort din krna
  (eller ngot lika hemskt). Du kan ocks anvnda den fr att installera
  nya system, nr du just har dumpat innehllet frn en hrddisk p en
  annan ("allt det hr och mer! HUR mycket skulle du betala?").



  Alla tminstone halvvgs resonabla nya krnor r packade, drav `z'
  framfr namnet. En packad krna packar automatiskt upp sig sjlv nr
  den krs.




  4.3.  Andra "make"-prylar


  `make mrproper' gr en mer omfattande `clean'. Ibland r det
  ndvndigt; du kanske vill gra det vid varje patch. `make mrproper'
  tar ocks bort din konfigurerings-fil, s du ska antagligen ta en
  skerhetskopia av den (.config) om du tycker den r vrdefull.



  `make oldconfig' gr ett frsk att konfigurera krnan frn en gammal
  konfigurerings-fil; det kr igenom `make config'-processen t dig. Om
  du aldrig har kompilerat en krna frut eller inte har en gammal
  config-fil, s ska du antagligen inte gra detta, eftersom du
  antagligen kommer ndra standard-konfigureringen.


  Se avsnitten om moduler fr en beskrivning av `make modules'.




  4.4.  Installera krnan


  Nr du har en ny krna som verkar fungera som du vill att den ska
  fungera, s r det dags att installera den. De flesta anvnder LILO
  (Linux Loader) till detta. `make zlilo' installerar krnan, kr LILO
  p den och fixar allt, s att det bara r att starta upp, MEN ENDAST
  om lilo r instlld p fljande stt p ditt system: krnan r
  /vmlinuz, lilo finns i /sbin och din lilo-konfigurering
  (/etc/lilo.conf) inte har ngot att invnda.



  Annars blir du tvungen att anvnda LILO direkt. Det r ett ganska
  enkelt paket att installera och arbeta med, men det har en tendens att
  frvirra mnniskor med sin konfigurerings-fil. Titta p
  konfigurerings-filen (antingen /etc/lilo/config, fr ldre versioner,
  eller /etc/lilo.conf, fr nyare versioner), och kolla upp den
  nuvarande konfigureringen. lilo.conf-filen ser ut s hr:




      image = /vmlinuz
          label = Linux
          root = /dev/hda1
          ...



  `image =' anger den krna du fr tillfllet har installerad. De flesta
  anvnder /vmlinuz. `label' anvnds av lilo fr att bestmma vilken
  krna, eller vilket operativ-system, som ska startas, och `root' r /
  fr just det operativ-systemet. Gr en skerhets-kopia av din gamla
  krna och kopiera zImage-filen, vilken du just skapat, dit den ska
  vara (du skulle kra `cp zImage /vmlinuz' om du anvnder `/vmlinuz').
  Kr sedan lilo igen -- p nyare system s kan du kra `lilo', men p
  ldre grejer kanske du blir tvungen att kra /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 frn din favorit-ftp-sajt och
  flj instruktionerna.



  Fr att starta upp en av dina gamla krnor frn hrddisken (ett annat
  stt att rdda dig om du gr ngot dumt med den nya krnan), s
  kopiera raderna nedan (och inklusive) `image = xxx' i LILOs
  konfigurerings-fil till slutet av filen, och modifiera `image = xxx'
  till `image = yyy', dr `yyy' r den fullstndiga skvngen till filen
  du sparade din skerhetskopia av krnan som. ndra sedan `label = zzz'
  till `label = linux-backup' och kr lilo igen. Det kan vara ndvndigt
  att lgga in en rad som sger `delay=x', dr x r antalet tiondelar,
  vilket sger t LILO att vnta s lng tid innan det startar upp, s
  att du kan avbryta det (med shift-knappen t.ex.), och skriva in den
  skerhets-kopierade krnans "label" (om ngot otrevligt skulle hnda).




  5.  Patcha krnan



  5.1.  Lgga till en patch


  Gradvisa uppgraderingar till krnan distribueras som patchar. Om du
  t.ex. har version 1.1.45 och du upptcker att det finns en
  `patch46.gz' till den, s innebr det att du kan uppgradera till
  version 1.1.46 genom att lgga till patchen. Det kan vara bra att ta
  en skerhets-kopia av kllkods-trdet frst (`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 fortstter p exemplet ovan, lt oss frutstta att du har
  `patch46.gz' i /usr/src. cd-a till /usr/src och kr en `zcat
  patch46.gz | patch -p0' (eller `patch -p0 < patch46', om patchen inte
  r packad). Du kommer se saker flyga frbi (eller krypa frbi, om ditt
  system r s lngsamt), vilka talar om fr dig att det frsker lgga
  till bitar, och huruvida det lyckas eller ej. Vanligtvis gr det hr
  fr fort fr att du ska hinna med att lsa, och du kan inte vara s
  sker p om det fungerade eller ej, men om du anvnder -s-flaggan till
  patch s kommer patch endast rapportera fel (du fr inte lika mycket
  av den dr "hall, min dator gr faktiskt saker, fr en gngs
  skull!"-knslan, men du kanske fredrar det hr...). Fr att leta
  efter delar som inte har gtt 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 underlgset filsystem)
  lmnar dessa misslyckanden med en #-ndelse. Du kan anvnda `find' fr
  att leta;

      find .  -name '*.rej' -print


  skriver ut, till standard ut, vilka filer, i den aktuella katalogen
  eller underkataloger, somhar .rej-ndelser



  Om ngot gick fel, gr en `make clean', `config' och `dep', som det
  beskrivs i avsnitt 3 och 4.



  Det finns en hel del alternativ till patch-kommandot. Som nmnts ovan
  s kommer patch -s att hlla tyst om allt utom fel. Om du har ditt
  krn-kllkods-trd ngon annanstans n i /usr/src/linux, s patchar
  patch -p1 allt korrekt (i den katalogen). Andra patch-alternativ finns
  vl-dokumenterade p man-sidan.




  5.2.  Om ngot gr snett


  (Observera: detta avsnitt hnvisar mestadels till ganska gamla krnor)


  Det vanligaste problemet som brukade uppst, var nr en patch
  modifierade en fil som heter `config.in', och den inte sg riktigt
  rtt ut, eftersom du ndrade alternativen fr att passa din maskin.
  Det hr har man tagit hand om, men man kan fortfarande stta p det
  hos ldre utgvor.  Fr att fixa det, ta en titt p config.in.rej-
  filen, och se efter vad som finns kvar av original-patchen.
  Frndringarna r vanligtvis markerade med `+' och `-' i brjan av
  raderna. Ta en titt p raderna fre och efter, och tnk efter om de
  var satta till `y' eller `n'. Editera nu config.in, och ndra `y' till
  `n' och `n' till `y', dr det ska vara s.  Gr en

      patch -p0 < config.in.rej


  och om det rapporteras att det lyckades (inga fel), s kan du
  fortstta med konfigurering och kompilering. config.in.rej kommer
  finnas kvar, men du kan ta bort den.


  Om du stter p vidare problem, s kan du ha lagt till en patch i fel
  ordning.  Om patch sger `previously applied patch detected: Assume
  -R?', s frsker du antagligen lgga till en patch som r under ditt
  aktuella versionsnummer; om du svarar `y', s kommer patch frska
  nedgradera din kllkod, och kommer antagligen misslyckas; d kommer du
  allts behva skaffa ett helt nytt kllkodstrd (vilket kanske inte
  skulle ha varit en s dum id frn brjan).


  Fr att backa ut (ta bort) en patch, anvnd `patch -R' p original-
  patchen.



  Det bsta du kan gra nr patchningar verkligen gr snett r att brja
  om igen, med ett rent och opatchat kllkodstrd (frn en av linux-
  x.y.z.tar.gz-filerna, t.ex.) och brja om.




  5.3.  Bli av med .orig-filer


  Efter bara ngra f patchar kommer .orig-filerna vara ganska mnga.
  T.ex. s hade ett 1.1.51-kllkodstrd 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 anvnder # fr miss
  lyckaden, anvnder en tilde istllet fr .orig.


  Det finns bttre stt att bli av med .orig-filerna, vilka r baserade
  p GNU xargs:

      find .  -name '*.orig' | xargs rm


  eller "ganska sker 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 lgger till dessa s kanske inte Linus
  patchar fungerar korrekt, och du blir tvungen att antagligen backa ut,
  fixa kllkoden eller patchen, installera ett nytt kllkodstrd eller
  en kombination av dessa saker.  Detta kan bli vldigt frustrerande, s
  om du inte vill modifiera kllkoden (med mjligheten av vldigt dliga
  resultat), ta bort icke-standard-patcharna innan du lgger till Linus,
  eller installera helt enkelt ett nytt trd. Sen kan du se efter om
  icke-standard-patcharna fortfarande fungerar. Om de inte gr det, s
  r du antingen fast med en gammal krna, och blir tvungen att greja en
  massa med patcharna eller kllkoden, fr att f det att fungera, eller
  tvingas vnta p (eller mjligtvis be om) en ny version av patchen.

  Hur vanliga r patcharna, som inte ingr i standard-distributionen? Du
  kommer antagligen hra talas om dem. Jag brukade anvnda noblink-
  patchen fr min virtuella konsoll, eftersom jag hatar blinkande
  markrer (denna patch blir (eller blev, tminstone) uppdaterad fr
  varje ny utgva av krnan). 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-krna har mnga funktioner som inte frklaras i sjlva
  kllkoden; dessa funktioner anvnds i typfallet av externa paket.
  Ngra av de vanligaste rknas upp hr.


  6.1.  kbd

  Linux-konsollen har fler funktioner n den frtjnar. Bland dessa
  finns mjligheten att byta typsnitt, definiera om tangentbordet, byta
  grafik-lgen (i nyare krnor) osv. kbd-paketet har program som lter
  anvndaren gra allt detta, plus mnga typsnitt och tangentbords-
  tabeller fr i stort sett alla tangentbord, och r tillgngligt frn
  samma sajter som har krn-kllkoden.



  6.2.  util-linux

  Rik Faith (faith@cs.unc.edu) plockade ihop en stor samling Linux-
  verktyg vilka, av ett underligt sammantrffande, kallas util-linux.
  Dessa utvecklas nu av Nicolai Langfeldt (util-linux@math.uio.no).  Det
  r tillgngligt via anonym ftp frn sunsite.unc.edu, i
  /pub/Linux/system/misc, och innehller program ssom setterm, rdev och
  ctrlaltdel, vilka r relevanta fr krnan. Som Rik sger, installera
  inte utan att tnka efter; du behver inte installera allt i paketet,
  och det kan mycket vl skapa stora problem, om du gr det.



  6.3.  hdparm

  Som med mnga andra paket, s var detta en gng i tiden en krn-patch
  och std-program. Patcharna blev inplockade i den officiella krnan,
  och programmen fr att optimera och leka med hrddisken distribueras
  separat.




  6.4.  gpm


  gpm str fr general purpose mouse. Detta program tillter dig att
  klippa och klistra text mellan virtuella konsoller och gra andra
  saker, med en stor uppsttning olika mus-typer.

  7.  Ngra fallgropar



  7.1.  make clean


  Om din nya krna gr riktigt knasiga saker, efter en rutin-
  uppgradering av krnan, s finns det en mjlighet att du glmt att
  make clean, innan du kompilerade den nya krnan. Symptomen kan vara
  allt frn att ditt system helt enkelt kraschar och konstiga in/ut-
  problem, till dlig prestanda. Se till att du gr en make dep ocks.



  7.2.  Enorma eller lngsamma krnor

  Om din krna suger t sig en massa minne, r fr stor och/eller bara
  tar en evighet att kompilera, ven nr du har ftt din nya 786DX6/440
  att fungera med den, s har du antagligen konfigurerat in en massa
  ondiga saker (drivrutiner, filsystem osv.). Det du inte anvnder ska
  du inte ta med, fr det tar upp minne. De mest uppenbara symptomen p
  fr stora krnor r extrem swappning till och frn hrddisken; om din
  hrddisk fr en massa ovsen, och den inte r en sdan dr gammal
  Fujitsu Eagle, som lt som en jumbo-jet som var p vg att landa nr
  du slog av dem, s ta en titt p din krn-konfigurering.


  Du kan ta reda p hur mycket minne krnan anvnder genom att ta den
  totala mngden minne i din maskin och subtrahera summan av "total mem"
  i /proc/meminfo, eller utdatan frn kommandot `free'. Du kan ocks ta
  reda p det genom att kra `dmesg' (eller genom att titta p krnans
  log-fil, var den nu finns p ditt system). Dr finns en rad som ser ut
  ngonting i stil med detta:

  Memory: 15124k/16384k available (552k kernel code, 384k reserved, 324k
  data)


  Min 386 (vilken har en aning mindre skrp in-konfigurerat) sger:

  Memory: 7000k/8192k available (496k kernel code, 384k reserved, 312k
  data)


  Om du bara `mste' ha en stor krna, men systemet inte lter dig ha
  det, s kan du testa `make bzimage'. Du kan mycket vl bli tvungen att
  installera en ny version av LILO fr att f detta att fungera.



  7.3.  Krnan kompilerar inte

  Om den inte kompilerar s r det troligt att en patch misslyckades,
  eller att din kllkod r korrupt p ngot stt. Det kan ocks vara
  ngot fel p din version av gcc, eller den kan vara korrupt (det kan
  t.ex. vara ngot fel p include-filerna). Se till att de symboliska
  lnkar, som Linus beskriver i README-filen ser ut som de ska. Rent
  generellt kan man sga, att om en standard-krna inte kompilerar, s
  r det ngot stort fel p ditt system, och en ominstallering av vissa
  saker r antagligen ndvndig.

  Eller du kanske kompilerar en 1.2.x-krna med en ELF-kompilator (gcc
  2.6.3 eller hgre). Om du fr en hg det-och-det undefined-meddelanden
  under kompileringen, s finns det vissa mjligheter att det r detta
  som r ditt problem. Lsningen r i de flesta fall vldigt enkel. Lgg
  till fljande rader i brjan 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


  Kr sedan make dep och zImage igen.


  I sllsynta fall kan gcc krascha p.g.a. hrdvaru-problem. Fel-
  meddelandet kommer vara ngot i stil med "xxx exited with signal 15",
  och det kommer oftast se mystiskt ut. Jag skulle antagligen inte nmna
  detta, om det inte hade hnt mig en gng - jag hade dligt cache-
  minne, och kompilatorn kunde beg slumpmssiga fel. Prva frst med
  att ominstallera gcc, om du fr problem. Du br endast brja bli
  misstnksam om din krna kompilerar bra med "external cache" avslaget,
  en mindre mngd RAM osv.


  Det brukar irritera folk, nr det sgs att det kan vara ngot problem
  med deras hrdvara. Tja, jag sitter inte och hittar p det hr. Det
  finns en FAQ om detta -- den finns p http://www.bitwizard.nl/sig11/.



  7.4.  Den nya versionen av krnan verkar inte starta (boot)

  Du krde inte LILO, eller konfigurerade det inte korrekt. En sak som
  "fick" mig en gng, var ett problem med konfigurerings-filen; den sa
  `boot = /dev/hda1', istllet fr `boot = /dev/hda'. (Detta kan frst
  vara vldigt irriterande, men s fort du har en fungerande
  konfigurerings-fil s behver du inte gra ngra ndringar i den.)



  7.5.  Du glmde kra LILO, eller systemet startar inte alls

  Hoppsan! Det bsta du kan gra hr r att starta upp med en diskett
  och preparera en till start-diskett (som `make zdisk' skulle gra).
  Du mste veta var ditt rot-filsystem (/) finns, och vilken sort det r
  (t.ex. second extended, minix). I exemplet nedan mste du ocks veta
  vilket filsystem ditt /usr/src/linux-kllkodstrd finns p, dess typ
  och var det vanligtvis monteras.


  I det fljande exemplet r / /dev/hda1, och filsystemet som innehller
  /usr/src/linux r /dev/hda3, och monteras vanligtvis p /usr. Bda
  filsystemen r second extended. Den fungerande krnan i
  /usr/src/linux/arch/i386/boot heter zImage.


  Idn r, att om det finns en fungerande zImage, s r det mjligt att
  anvnda den till en ny diskett. Ett annat alternativ, vilket kan
  fungera bttre eller smre (det beror p metoden du anvnde nr du
  stkade till i filsystemet), diskuteras efter detta exempel.


  Frst och frmst, starta frn en start/rot-diskett-kombination eller
  en rddnings-diskett och montera filsystemet vilket innehller den
  fungerande krnan:





      mkdir /mnt
      mount -t ext2 /dev/hda3 /mnt



  Om mkdir sger t dig att katalogen redan existerar, ignorera det
  bara. cd-a nu till stllet dr den fungerande krnan finns.  Observera
  att

  /mnt + /usr/src/linux/arch/i386/boot - /usr = /mnt/src/linux/arch/i386/boot


  Stt i en formatterad diskett i diskett-station "A:" (inte din start-
  eller rot-diskett!), dumpa krnan p disketten och konfigurera den fr
  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 frn denna diskett.
  Glm inte att kra lilo (eller vad det nu var som gick snett) efter
  att du startat om!


  Som nmndes ovan, s finns det ett annat vanligt alternativ. Om du
  rkade ha en fungerande krna i / (/vmlinuz t.ex.), s kan du anvnda
  den till en start-diskett. Om vi frutstter alla de ovannmnda
  omstndigheterna, och att krnan r /vmlinuz, gr bara fljande
  ndringar i exemplet ovan: ndra /dev/hda3 till /dev/hda1
  (/-filsystemet), /mnt/src/linux till /mnt, och if=zImage till
  if=vmlinuz. Anmrkningen som frklarar hur du tar reda p
  /mnt/src/linux kan du hoppa ver.

  Att anvnda LILO med stora hrddiskar (mer n 1024 cylindrar) kan leda
  till problem. See LILO mini-HOWTO eller dokumentationen fr hjlp om
  det.



  7.6.  Jag fr `warning: bdflush not running'


  Det hr kan vara ett allvarligt problem. Frn och med en krn-utgva
  efter 1.0 (runt 20 april 1994), uppgraderas/utbyttes ett program som
  heter `update', vilket regelbundet spolar ur (flushes) filsystemets
  buffrar. Skaffa kllkoden till `bdflush' (du kan hitta det dr du
  hittade kllkoden till krnan), och installera det (det r bst att
  kra systemet med den gamla krnan, d du gr detta). Det installerar
  sig sjlvt som `update', och efter att du startat om ska den nya
  krnan inte lngre klaga.




  7.7.  Den sger saker om "undefined symbols" och kompilerar inte


  Du har antagligen en ELF-kompilator (gcc 2.6.3 eller senare) och
  kllkoden till krna 1.2.x (eller tidigare). Den vanliga lsningen r
  att lgga till fljande tre rader i brjan 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-krna med a.out-bibliotek.



  7.8.  Jag fr inte min IDE/ATAPI CD-ROM-spelare att fungera

  Konstigt nog s r det mnga som inte kan f sina ATAPI-spelare att
  fungera, antagligen fr att det finns ett antal saker som kan g
  snett.

  Om din CD-ROM-spelalre r den enda enheten p ett visst IDE-grnssnitt
  s mste de jumpras som "master" eller "single". Detta psts vara det
  vanligaste felet.

  Creative Labs (som ett exempel) har satt IDE-grnssnitt p sina
  ljudkort nu.  Detta leder dock till det intressanta problemet att,
  medan vissa bara har ett grnssnitt frn brjan, s har mnga IDE-
  grnssnitt inbyggda i sina moderkort (vanligen p IRQ15), s en vanlig
  praxis r att gra soundblaster-grnssnittet till en tredje IDE-port
  (IRQ11, tminstone r det vad jag har hrt).


  Detta skapar problem med Linux, genom att version 1.2.x inte stdjer
  ett tredje IDE-grnssnitt (stdet dyker upp ngonstans i 1.3.x-serien,
  men det r en utvecklings-serie och den auto-sker inte). Fr att
  komma runt detta, kan du vlja mellan ngra olika metoder.


  Om du redan har en andra IDE-port, s finns det risk att du inte
  anvnder den, eller att den redan inte har tv enheter. Ta ATAPI-
  spelaren frn ljudkortet och stt det p det andra grnssnittet. Sedan
  kan du stnga av ljudkortets grnssnitt, vilket i alla fall sparar in
  en IRQ.

  Om du inte har ett andra grnssnitt, jumpra ljudkortets grnssnitt
  (inte ljudkortets ljud-delar) som IRQ15, det andra grnssnittet. Detta
  br fungera.

  Om den, av ngon anledning, absolut mste vara p ett s kallat
  "tredje" grnssnitt, eller om det finns andra problem, skaffa en
  1.3.x-krna (1.3.57 har det, t.ex.) och ls igenom
  drivers/block/README.ide.  Det finns mycket mer information dr.



  7.9.  Den sger 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.  Brandvgg fungerar inte i 1.2.0


  Uppgradera till tminstone version 1.2.1.



  7.11.  ``Not a compressed kernel Image file''

  Anvnd inte vmlinux-filen, vilken skapas i /usr/src/linux som krna;
  [..]/arch/i386/boot/zImage r den rtta.



  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 krn-upp
  gradering

  Kllkoden till Linux-krnan innehller ett antal include-filer
  (sakerna som slutar med .h), vilka hnvisas till av standard-
  versionerna i /usr/include. De hnvisas vanligtvis till p detta stt
  (dr xyzzy.h skulle vara ngot i /usr/include/linux):

      #include <linux/xyzzy.h>


  Vanligtvis finns det en lnk, som heter linux i /usr/include till
  include/linux-katalogen i din krn-kllkod
  (/usr/src/linux/include/linux i ett vanligt system). Om denna lnk
  inte finns dr, eller pekar till fel stlle, s kommer det mesta att
  vgra kompilera. Om du bestmmer dig fr att kllkoden till krnan tar
  upp fr mycket plats p hrddisken, och tar bort den, s r detta
  uppenbarligen ett problem. Ett annat stt det kan g fel p r med
  fil-rttigheter; om din root har en umask, som inte tillter andra
  anvndare att se dess filer som standard, och du packade upp krn-
  kllkoden med p-parametern (bevara fil-lgen), s kommer de andra
  anvndarna inte att kunna anvnda C-kompilatorn. ven om du skulle
  kunna anvnda chmod-kommandot fr att fixa detta, s r det antagligen
  enklare att packa upp include-filerna igen. Du kan gra detta p samma
  stt som du packade upp hela kllkoden frn brjan, men med en
  ytterligare parameter:


      blah# tar zxvpf linux.x.y.z.tar.gz linux/include


  Observera: "make config" kommer terskapa /usr/src/linux-lnken, om
  den inte finns dr.



  7.14.  Utka grnser

  De fljande f exempel-kommandona kan vara hjlpsamma fr de som
  undrar hur man kan utka vissa "mjuka" grnser, som stts av krnan:

  echo 4096 > /proc/sys/kernel/file-max
  echo 12288 > /proc/sys/kernel/inode-max
  echo 300 400 500 > /proc/sys/vm/freepages

  8.  Anmrkning om att uppgradera till version 2.0.x

  Version 2.0.x av krnan introducerade en hel del frndringar, vad
  gller installering av krnan. Filen Documentation/Changes i
  kllkodstrdet till 2.0.x innehller information om saker du br veta,
  nr du uppgraderar till version 2.0.x. Du kommer antagligen behva
  uppgradera flera viktiga paket, ssom gcc, libc och SysVInit, och
  kanske modifiera vissa system-filer, s rkna med detta. Ta det bara
  lugnt.



  9.  Moduler

  Laddningsbara krn-moduler kan spara minne och gra konfigureringen
  enklare.  Modulernas omfattning har vxt till att inkludera filsystem,
  drivrutiner till ethernet-kort, bandspelare, drivrutiner till skrivare
  m.m.



  9.1.  Installera modul-verktygen

  Modul-verktygen r tillgngliga frn samma stlle som du hittar
  kllkoden till krnan, som modules-x.y.z.tar.gz; vlj den hgsta
  patch-nivn x.y.z, som r lika med eller under den till din aktuella
  krna.  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
  utfr det du instrueras att gra (vilket vanligtvis r ngot 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, fr detaljer.

  insmod infogar en modul i en krna som krs. Moduler har vanligtvis en
  .o-ndelse; exempel-drivrutinen, som nmns ovan, heter drv_hello.o, s
  fr att infoga denna skriver du `insmod drv_hello.o'. Fr att ta reda
  p vilka moduler krnan anvnder fr tillfllet, anvnd lsmod. Utdatan
  ser ut s hr:

      blah# lsmod
      Module:        #pages:  Used by:
      drv_hello          1


  `drv_hello' r namnet p modulen, det anvnder en minnes-sida (page)
  (4k), och inga andra krn-moduler r beroende av den fr tillfllet.
  Fr att ta bort den hr modulen, anvnd `rmmod drv_hello'. Observera
  att rmmod vill ha ett modul-namn, inte ett filnamn; du fr reda p
  detta frn lsmods upprkning. De andra modul-verktygen dokumenteras i
  sina man-sidor.



  9.2.  Moduler som distribueras med krnan

  I version 2.0.30 r nstan allt tillgngligt som laddningsbara
  moduler. Fr att anvnda dem mste du frst se till att inte
  konfigurera in dem i den vanliga krnan; sga allts inte y till dem
  under `make config'. Kompilera en ny krna och starta om med den.  cd-
  a sedan till /usr/src/linux igen och kr en `make modules'. Detta
  kompilerar alla de moduler som du inte specificerade i krn-
  konfigureringen, och placerar lnkar till i /usr/src/linux/modules. Du
  kan anvnda dem direkt frn den katalogen, eller kra `make
  modules_install', vilket installerar dem i /lib/modules/x.y.z, dr
  x.y.z r versionen av krnan.
  Detta kan vara srskilt praktiskt med filsystem. Du kanske inte
  anvnder minix- eller msdos-filsystemen s ofta. Om jag t.ex. sttte
  p en msdos-diskett (usch d), s skulle jag insmod
  /usr/src/linux/modules/msdos.o, och sedan rmmod msdos nr jag var
  klar. Denna procedur spara runt 50k RAM i krnan, under normal
  anvndning. En liten anmrkning r p sin plats angende minix-
  filsystemet: du ska alltid konfigurera in det direkt i krnan, fr
  anvndning p "rddnings"-disketter.



  10.  Andra konfigurerings-alternativ

  Detta avsnitt innehller beskrivningar av utvalda konfigurerings-
  alternativ (i make config), vilka inte tas upp i konfigurerings-
  avsnittet.  De flesta enhets-drivrutiner tas inte upp hr.



  10.1.  Vanliga instllningar (General setup)


  Normal floppy disk support - r precis det (std fr vanliga floppy-
  diskar). Du kan ta en titt p filen drivers/block/README.fd; detta r
  extra viktigt fr IBM Thinkpad-anvndare.


  XT harddisk support - om du vill anvnda den dr 8-bitars XT-
  controllern, som ligger i hrnet och samlar damm.


  PCI bios support - om du har PCI, s kan du prva p det hr; ta det
  frsiktigt, bara, eftersom vissa gamla PCI-moderkort kommer krascha av
  det hr. Mer information om PCI-bussen under Linux finns i PCI-HOWTOn.


  Kernel support for ELF binaries - ELF r ett frsk att lta binr-
  filer fungera p olika arkitekturer och operativ-system; Linux verkar
  vara p vg i den riktningen, s du vill antagligen ha detta.


  Set version information on all symbols for modules - frut
  kompilerades alltid krn-modulerna om med varje ny krna. Om du sger
  y s kommer det bli mjligt att anvnda moduler som kompilerats under
  en annan patch-niv. Ls README.modules fr mer detaljer.



  10.2.  Networking options

  Networking options (ntverks-alternativ) beskriv i NET-3-HOWTOn (eller
  NET-ngonting-HOWTOn).


  11.  Tips och knep



  11.1.  Omdirigera utdatan frn make- eller patch-kommandona

  Om du skulle vilja ha log-filer, om vad de dr `make'- eller
  `patch'-kommandona gjorde, s kan du omdirigera utdatan till en fil.
  Ta frst reda p vilket skal du kr: `grep root /etc/passwd' och leta
  efter ngonting i stil med `/bin/csh'.


  Om du anvnder sh eller bash, kr

      (kommando) 2>&1 | tee (output file)


  vilket placerar en kopia av (kommando)s utdata i filen `(output
  file)'.


  Fr csh eller tcsh, anvnd

      (command) |& tee (output file)




  Fr rc (Observera: du anvnder antagligen inte rc) r det

      (command) >[2=1] | tee (output file)





  11.2.  Villkorlig krn-installering

  Frutom att anvnda disketter, s finns det ett flertal metoder fr
  att prva en ny krna, utan att rra den gamla. I motsats till flera
  andra Unix-varianter s kan LILO starta en krna frn var som helst p
  hrddisken (om du har en stor (500 MB eller mer) hrddisk, ls igenom
  LILO-dokumentationen, om hur detta kan leda till problem). Allts, om
  du lgger till ngot i stil med

      image = /usr/src/linux/arch/i386/boot/zImage
          label = new_kernel


  till slutet av LILOs konfigurerings-fil, s kan du vlja att kra en
  nyligen kompilerad krna, utan att rra din gamla /vmlinuz (efter att
  du krt lilo naturligtvis). Det enklaste sttet att sga t LILO att
  starta en ny krna att trycka ner shift-tangenten d systemet startas
  (nr det str LILO, och inget annat, p skrmen), vilket ger dig en
  prompt. Nu kan du skriva `new_kernel' fr att starta den nya krnan.


  Om du vill ha flera olika krn-kllkodstrd p ditt system, p samma
  gng (detta kan ta upp en massa hrddisk-utrymme; var frsiktig), s
  r det vanligaste sttet att kalla dem /usr/src/linux-x.y.z, dr x.y.z
  r krn-versionen. Du kan sedan "vlja" ett kllkodstrd med en
  symbolisk lnk; t.ex. s skulle `ln -sf linux-1.2.2 /usr/src/linux'
  gra 1.2.2 till det aktuella trdet. Innan du skapar en sdan
  symbolisk lnk, se till s att det sista parametern till ln inte r en
  riktig katalog (gamla symboliska lnkar gr bra); resultatet kanske
  inte blir vad du vntat dig.



  11.3.  Uppdateringar av krnan


  Russell Nelson (nelson@crynwr.com) sammanfattar frndringarna i nya
  utgvor av krnan. Dessa r korta och du kan ta en titt p dem innan
  du utfr en uppgradering. De r tillgngliga via anonym ftp frn
  ftp.emlist.com i pub/kchanges, eller genom URLen


      http://www.crynwr.com/kchanges





  12.  Andra relevanta HOWTOn, som kan vara anvndbara


    Sound-HOWTO: ljud-kort och -verktyg

    SCSI-HOWTO: allt om SCSI-controllers och -verktyg

    NET-2-HOWTO: ntverk

    PPP-HOWTO: PPP-ntverk

    PCMCIA-HOWTO: om drivrutinerna till din brbara dator

    ELF-HOWTO: ELF: vad det r, konvertering...

    Hardware-HOWTO: versikt av stdd hrdvara

    Module-HOWTO: mer om krn-moduler

    Kerneld mini-HOWTO: om kerneld

    BogoMips mini-HOWTO: ifall du undrade


  13.  Diverse



  13.1.  Frfattare


  Frfattaren och utvecklaren av Linux Kernel-HOWTO r Brian Ward
  (bri@blah.math.tu-graz.ac.at). Var vnlig skicka mig kommentarer,
  tillgg, rttelser (rttelser r speciellt viktiga fr 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 frsker ta s mycket hnsyn som mjligt till e-post, var
  vnlig kom ihg att jag fr en massa e-post varje dag, s det kan ta
  ett tag att svara. Speciellt om du skickar mig en frga, frsk extra
  mycket att vara klar och detaljerad i ditt meddelande. Ifall du inte
  skriver om icke fungerande hrdvara (eller ngot t det hllet), s
  behver jag veta hur din hrdvaru-konfigurering ser ut. Om du
  rapporterar ett fel, sg inte bara "Jag frskte det hr men fick ett
  fel". Jag behver veta vad det var fr fel. Jag skulle ocks vilja
  veta vilka versioner av krnan, gcc och libc du anvnder. Om du bara
  sger att du anvnder den-eller-den distributionen, s sger det mig
  inte s mycket. Jag bryr mig inte om att du frgar enkla frgor; kom
  ihg att, om du inte frgar, s fr du aldrig reda p svaret!  Jag
  vill tacka alla som har gett mig respons.



  Om du har skickat mig ett e-brev och inte ftt ngot svar inom rimlig
  tid (tre veckor eller s), s finns det en mjlighet att jag av
  misstag har raderat ditt meddelande eller ngot (urskta mig). Frsk
  igen.


  Jag fr en massa e-brev om saker som faktiskt r hrdvaruproblem. Det
  r okej, men frsk komma ihg att jag inte knner till all hrdvara i
  hela vrlden och att jag inte vet hur hjlpsam jag kan vara;
  personligen anvnder jag en maskin med IDE- och SCSI-hrddiskar, SCSI
  CD-ROM, 3Com och WD ethernet-kort, seriella mss, moderkort med PCI,
  NCR 810 SCSI-controllers, AMD 386DX40 med Cyric hjlp-processor,
  AMD5x86, AMD 486DX4 och Intel 486DX4-processorer (detta r en
  verblick ver vad jag anvnder och knner till, definitivt inte en
  rekommendation, men om det r vad du vill ha s r du mer n vlkommen
  att frga :-)).

  Version -0.1 skrevs 3 oktober 1994. Detta dokument r tillgngligt som
  SGML, PostScript, TeX, roff och ren text.




  13.2.  Att gra

  "Tips och knep"-avsnittet r lite litet. Jag hoppas kunna utka det
  med frslag frn andra.

  Samma med "Ytterligare paket".

  Mer information om hur man klarar av avlusning/krash-terhmtning
  behvs.



  13.3.  Bidrag

  En liten del av Linux README (krn-hackning-alternativet) r
  inkluderad.  (Tack Linus!)

  uc@brian.lunetix.de (Ulrich Callmeier): patch -s and xargs.

  quinlan@yggdrasil.com (Daniel Quinlan): rttelser och tillgg i mnga
  avsnitt.

  nat@nat@nataa.fr.eu.org (Nat Makarevitch): mrproper, tar -p, mnga
  fler saker

  boldt@math.ucsb.edu (Axel Boldt): samlade beskrivningar av
  konfigurerings-alternativ p ntet; gav mig sedan listan

  lembark@wrkhors.psyber.com (Steve Lembark): flera uppstarts-frslag
  (boot suggestions) kbriggs@earwax.pd.uwa.edu.au (Keith Briggs): ngra
  rttelser och frslag

  rmcguire@freenet.columbus.oh.us (Ryan McGuire): make-tillgg

  dumas@excalibur.ibp.fr (Eric Dumas): fransk versttning

  simazaki@ab11.yamanashi.ac.jp (Yasutada Shimazaki): japansk
  versttning

  jjamor@lml.ls.fi.upm.es (Juan Jose Amor Iglesias): spansk versttning

  mva@sbbs.se (Martin Wahlen): svensk versttning

  jzp1218@stud.u-szeged.hu (Zoltan Vamosi): ungersk versttning

  bart@mat.uni.torun.pl (Bartosz Maruszewski): polsk versttning

  donahue@tiber.nist.gov (Michael J Donahue): skrivfel, vinnare i
  "skivat brd-tvlingen"

  rms@gnu.ai.mit.edu (Richard Stallman): dokumentation om "fri"
  dokumentation och kommentarer om detta

  dak@Pool.Informatik.RWTH-Aachen.DE (David Kastrup): NFS-saker

  esr@snark.thyrsus.com (Eric Raymond): diverse smsaker


  De som har skickat mig e-brev med frgor och problem har ocks varit
  ganska hjlpsamma.



  13.4.  Upphovsrtt, licens och sdana grejer

  Copyright  Brian Ward, 1994-1997.

  Tilltelse ges att gra och distribuera kopior av den hr manualen,
  frusatt att upphovsrtten och denna tilltelse bevaras i alla kopior.


  Tilltelse ges att kopiera och distribuera modifierade versioner av
  den hr manualen, under villkoren fr ordagrann kopiering, frutsatt
  att det hrledda verket distribueras under villkor som r identiska
  med dessa.  versttningar faller under kategorin "modifierade
  versioner".


  Garanti: ingen.


  Rekommendationer: Kommersiell vidaredistribuering r tillten och
  uppmuntras; det rekommenderas dock starkt att distributren tar
  kontakt med frfattaren innan vidaredistribueringen, fr att kunna
  hlla saker och ting aktuella (du kan grna skicka mig ett exemplar av
  saker du tillverkar nr du nd hller p).  versttare rekommenderas
  ocks att ta kontakt med frfattaren innan de verstter. Den tryckta
  versionen ser snyggare ut. teranvnd.





















