Välja en kärna
Slackware.SE Wiki
4.2 Välja en Kärna
Kärnan är den del av operativsystemet som sörjer för hårdvaruåtkomst, processkontroll och kontroll över systemet som helhet. Kärnan innehåller stöd för din hårdvara, så att välja en kärna för ditt system är ett viktigt steg i installationen.
Slackware tillhandahåller mer än ett dussin förkompilerade kärnor som du kan välja mellan, varje med en standardsamling av drivrutiner och ytterligare hårdvaruspecifika drivrutiner. Du kan köra en av de förkompilerade kärnorna, eller så kan du bygga din egen ifrån källkod. I båda fallen måste du vara säkar på att kärnan har det hårdvarustöd som ditt system behöver.
4.2.1 Katalogen /kernels på Slackware CD-ROM:en
De förkompilerade kärnorna finns tillgängliga i katalogan /kernels på Slackwareskivan, eller på FTP i Slackwares huvudkatalog. Tillgängliga kärnor ändras när nya släpps och dokumentationen i den katalogen är alltid officiell källa. Katalogen /kernels har underkataloger för varje tillgänglig kärna. Underkatalogerna har samma namn som deras bootdisk och i varje katalog kommer du att hitta dessa filer:
Filer Syfte System.map The system map file for this kernel bzImage The actual kernel image config The source configuration file for this kernel
För att använda en kärna, kopiera system.map och konfigurationsfiler till din /boot katalog, och kopiera kernel-avbildningen till /boot/vmlinuz. Kör sedan /sbin/lilo(8) för att installera LILO för den nya kärnan, sedan startar du om ditt system. Det är allt du behöver göra för att installera en ny kärna.
Kärnor som slutar med ett .i är IDE-kärnor, vilket betyder att de inte har stöd för SCSI i baskärnan. Kärnor som sluar med ett .s är SCSI-kärnor. De har samma stöd för IDE som i kärnan .i, men även stöd för SCSI.
4.2.2 Kompilera en kärna från källkod
Frågan "ska jag kompilera en kärna för mitt system?" är ofta ställd av nybörjare. Svaret på den frågan är definitivt kanske. Det finns några få exempel på när du behöver kompilera en specifik kärna för ditt system. De flesta användare kan använda en förkompilerad kärna och laddbara kärnmoduler för att uppnå ett fullt fungerande system. Du kommer att vilja kompilera en kärna för ditt system om du ska uppgradera kärnan till en version till en som inte Slackware för tillfället inte erhåller, eller om du har patchat källkoden till kärnan för att få stöd för speciell hårdvara som inte är med i den vanliga källkoden till kärnan. Alla med ett SMP system brukar definitivt vilja kompilera kärnan med stöd för SMP. Många användare märker att en egenkompilerad kärna körs mycket fortare på deras maskin. Du kanske märker att det är användbart att kompilera kärnan med optimering för just din specifika processor i din maskin.
Att bygga sin egen kärna är inte så svårt. Det första steget är att se till så att du har källkoden för kärnan installerad på ditt system. Kontrollera så att du installerade paketen från K serien under installationen. Du måste också vara säker på att du installerade paketen i serien D, speciellt C kompileraren, GNU make och GNU binutils. Generellt är det en bra idé att ha hela serien D av paket installerat om du tänkt att börja programmera. Du kan också ladda hem den senaste källkoden för kärnan på http://www.kernel.org/mirrors.
4.2.2.1 Linux Kärn version 2.4.x kompilering
% su - Password: # cd /usr/src/linux
Första steget är att föra källkoden för kärnan till bastillstånd. Vi använder detta kommando för att göra så (notera, du kanske vill ta en backup på .config-filen eftersom detta kommando tar bort den utan förvarning):
# make mrproper
Nu kan du börja konfigurera kärnan för ditt system. Med den här kärnan finns det tre sätt att göra det på. Det första är det textbaserade originalsystemet med frågor och svar. Det ställer en hel del frågor och sedan bygger den konfigurationsfilen. Problemet med den här metoden är om du klantar till det så måste du starta om på nytt. Den metod de flesta föredrar är den menystyrda. Till sist finns även ett X-baserat konfigureringsverktyg. Välj vilken du vill genom något av dessa kommandon:
# make config (text-based Q&A version) # make menuconfig (menu driven, text-based version) # make xconfig (X-based version, make sure you are in X first)
Figure 4-1. Kärnans konfigureringsmeny
Bild:Http://www.slackbook.org/html/system-configuration/make-menuconfig-w.png
Nybörjare kommer nog underfund med att menuconfig är den lättaste att använda. Hjälp finns tillgänglig som förklara de varierande delarna av kärnan. Efter att du konfigurerat din kärna avslutar du konfigureringsprogrammet. Den kommer nu att skriva nödvändiga konfigureringsfiler. Och det är nu vi kan förbereda källkodsträdet för att bygga.
# make dep # make clean
Nästa steg är att kompilera kärnan. Men först använder du kommandot bzImage som nedan.
# make bzImage
Detta kan ta lite tid beroende på din processorhastighet. Under byggprocessen kommer du att få se kompileringsmeddelanden. Efter att du byggt kärnan så bör du också bygga de delar du flaggade som modulära.
# make modules
Så där nu kan vi installera kärnan och modulerna du kompilerade. För att installera kärnan på ett Slackware system, så använder man dessa kommandon:
# mv /boot/vmlinuz /boot/vmlinuz.old # cat arch/i386/boot/bzImage > /vmlinuz # mv /boot/System.map /boot/System.map.old # cp System.map /boot/System.map # make modules_install
Nu bör du rediggera /etc/lilo.conf och lägga till en sektion för att kunna boota på din gamla kärna ifall den nya inte fungerar. och när du gjort det så kör du /sbin/lilo för att installera det nya bootblocket. Så nu kan du starta om och köra med din nya kärna.
4.2.2.2 Version 2.6.x av Linux Slackware kärnan
Kompileringan av kärnan 2.6 skiljer sig lite från en 2.4 eller 2.2 kärna, och det är viktigt att du förstår skillnaden innan du dyker på det. Man behöver inte längre köra make dep och make clean, kärkompileringen är inte lika detaljerad i 2.6 serien. Detta resulterar i att byggprocessen är lättare att förstå. Om du har problem med att bygga kärnan, så rekommenderar vi att du slår på detaljerat läge tillbaka. Du gör det lättast genom att lägga till växeln V=1 när du bygger. Detta låter dig logga mer information som kan vara bra för utvecklaren eller en vän som hjälper dig att lösa problemet.
# make bzImage V=1
4.2.3 Att använda kärnmoduler
Kärnmoduler är ett annat namn för drivrutiner som kan läggas på en kärna som körs. Dessa låter dig att utöka stödet för hårdvara med din kärna utan att behöva välja en annan kärna eller för den delen kompilera en själv.
Moduler kan också när som helst avaktiveras, även när systemets körs. Detta gör arbetet mycket enklare för en administratör att uppgradera drivrutiner. En ny modul kan kompileras, en gammal tas bort och den nya aktiveras, allt detta utan att ens behöva starta om maskinen.
Modulerna ligger lagradet i versionskatalogen /lib/modules/kernel på ditt system. De kan laddas under uppstarten av maskinen i filen rc.modules. Den här filen är bra kommenterad och erbjuder exempel för de flesta hårdvarukomponenterna. För att se en liste av aktiva moduler, använd då kommandot lsmod(1):
# lsmod Module Size Used by parport_pc 7220 0 parport 7844 0 [parport_pc]
Här kan du se att jag bara en modul för parallellporten laddad. För att ta bort en modul så används kommandot rmmod(1). Och moduler kan laddas med dessa kommandon modprobe(1) eller insmod(1). modprobe är vanligen säkrast för att den försöker att ladda de moduler som den önskade modulen är beroende av.
Många användare behöver aldrig ladda eller ta bort moduler manuellt. De använder istället kärnans autoladdare. Som standard så kommer Slackware med kmod inbyggt i kärnan. kmod är ett tillval som låter känran att automatiskt ladda moduler som efterfrågas. För mera information om kmod och hur det är konfigurerat, läs då filen /usr/src/linux/documentation/kmod.txt. Obs du måste ha paketet med källkoden för kärnan eller ladda hem källkoden ifrån http://kernel.org
Mer information kan hittas i mansidorna för respektive kommando, samt filen rc.modules.
Klart men någon vänlig skäl kan väl skumma igenom detta efter fel, och rätta så klart (Delvis korrigerad av SwiperII)
--Dartanjang 12 juli 2006 kl.10.54 (CEST)
