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