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
.
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.
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.
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.
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.
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.
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.
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.
(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.
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.
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.
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).
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.
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...
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.
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.htmleller via anonym FTP från:
ftp://sunsite.unc.edu/pub/Linux/kernel/config/krnl_cnfg_hlp.x.yz.tgzDär
x.yz
är versionsnumret.
För senare (2.0.x och senare) kärnor har detta blivit integrerat i källkods-trädet.
>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.
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.