Nästa Föregående Innehållsförteckning

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.

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.

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.

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.

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.

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.

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.

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.

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.

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).

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.

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...

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.

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 (axel@uni-paderborn.de), 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.

"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.


Nästa Föregående Innehållsförteckning