downloadDownload FAQFAQ
Site Navigation:
 
 

8. Linux-kärnan

Denna sektion täcker ändringar och viktig information angående den 2.6.18-baserade kärnan i Fedora Core 6. 2.6.18-kärnan inkluderar:

8.1. Version

Fedora Core kan innehålla fixar för förbättringar och felrättningar eller fler funktioner. Därför kan Fedora Core kärnan inte vara identisk rad-för-rad med den så kallade vanilj-kärnan från kernel.org webbplatsen:

http://www.kernel.org/

För att få tag i en lista över programfixar, ladda ner RPM-paketet med källkoden och kör följande kommando mot den:

rpm -qpl kernel-<version>.src.rpm

8.2. Ändringslogg

För att få en logg med de ändringar i paketet som gjorts kan du köra följande kommando:

rpm -q --changelog kernel-<version>

Om du behöver en användarvänlig version av ändingsloggen, gå till http://wiki.kernelnewbies.org/LinuxChanges. En kort och full diff av kärnan är tillgänglig från http://kernel.org/git. Kärnans version i Fedora är baserad på Linus-trädet.

Anpassningar gjorda för versionen av Fedora är tillgängliga från http://cvs.fedora.redhat.com.

8.3. Kärn-varianter

Fedora Core 6 inkluderar följande kärnbyggen:

  • Grundkärna, för användning i de flesta systemen. Konfigurerade källkoder finns i paketet kernel-devel-<version>.<arch>.rpm.

  • kärn-PAE, för användning i 32-bit x86 system med > 4GB RAM eller med CPUer som har funktionen 'NX (No eXecute)'. Denna kärna stöder både uniprocessor och multiprocessorsystem.

  • Virtualiseringskärnor för användning med paketet Xen-emulator. Konfigurerade källkoder finns i paketet kernel-xen-devel-<version>.<arch>.rpm.

  • Kdump-kärna för användning med kexec/kdump-kapacitet. Konfigurerade källkoder finns i paketet kernel-kdump-devel-<version>.<arch>.rpm.

Du kan installera kärnhuvudfiler för alla varianter av kärnan på samma gång. Filerna installeras under trädet /usr/src/kernels/<version>-[xen|kdump]<arch>/. Använd följande kommando:

su -c 'yum install kernel-{PAE,xen,kdump}-devel'

Välj en eller flera av dessa varianter, separerade med komman och inga mellanslag, som det passar. Ange root lösenordet när så krävs.

[Notera]Standardkärnan stöder SMP

Det finns ingen separat SMP-kärna tillgänglig för Fedora Core 6 på i386, x86_64 och ppc64. Multiprocessorstöd är nu tillgängligt i grundkärnan.

[Notera]Stöd för kärna på PowerPC

Det finns inget stöd för Xen eller kdump för PowerPC arkitekturen i Fedora Core 6. 32-bit PowerPC har fortfarande en separat SMP-kärna.

8.4. Rapportera fel

Gå till http://kernel.org/pub/linux/docs/lkml/reporting-bugs.html för information om felrapportering i Linux-kärnan. Du kan också använda http://bugzilla.redhat.com för att rapportera fel som är specifika för Fedora.

8.5. Följer vanliga textböcker

Många av handledningarna, exemplen och textböckerna om utveckling för Linux-kärnan förutsätter källkoden för kärnan är installerad under katalogen /usr/src/linux/. Om du skapar en symbolisk länk, som beskrivs nedan, så ska det vara möjligt att använda läromaterielet med Fedora Core paket. Installera lämplig källkod för kärnan, som beskrevs tidigare och kör sedan följande kommando:

su -c 'ln -s /usr/src/kernels/<version>.<språk>-<arkitektur> /usr/src/linux'

Ange lösenordet för root när det efterfrågas.

8.6. Förberedelser för kärnutveckling

Fedora Core 6 innehåller inte paketet kernel-source utgivet i äldre versioner eftersom nu krävs bara kernel-devel paketet för att bygga externa moduler. Konfigurerad källkod finns, enligt beskrivning i denna sektion om kärnvarianter.

[Notera]Instruktionerna hänvisar till den aktuella kärnan

För att förenkla följande instruktioner har vi förutsatt att du vill konfigurera källkoden för kärnan att matcha din nuvarande kärna. I stegen nedan hänvisar uttrycket <version> till kärnans version som visas av kommandot: uname -r.

Användare som kräver åtkomst till källkoden för originalkärnan för Fedora Core, kan hitta dem i paketet kernel .src.rpm. För att skapa ett uppackat källkodsträd från denna fil, utför följande steg:

[Notera]Bygg inte paket som superanvändaren (root)

Bygga paket som superanvändaren är farligt och krävs inte, inte ens för kärnan. Dessa instruktioner beskriver hur du kan installera källkoden till kärnan som en vanlig användare. Många informationsplatser refererar till /usr/src/linux i deras instruktioner för kärnan. Om du använder dessa instruktioner, ersätt med ~/rpmbuild/BUILD/kernel-<version/linux-versionarkitektur.

  1. Förbered en miljö för att bygga RPM-paket i din hemkatalog. Kör följande kommandon:

    su -c 'yum install rpmdevtools yum-utils' 
    rpmdev-setuptree
  2. Ange lösenordet för root när det efterfrågas.

  3. Ladda ner kernel-<version>.src.rpm filen. Aktivera lämpliga källdatalager, som t.ex. Core, Updates eller Testing, med flaggan -e:

    yumdownloader -e core-source -e updates-source --source kernel
  4. Ange lösenordet för root när det efterfrågas.

  5. Installera kernel-<version>.src.rpm genom använda följande kommando:

    rpm -Uvh kernel-<version>.src.rpm
  6. Detta kommando skriver RPM-innehållet till ${HOME}/rpmbuild/SOURCES och ${HOME}/rpmbuild/SPECS, där ${HOME} är din hemkatalog.

    [Notera]Utrymme som krävs

    Den fullständiga byggprocessen för kärnan kan kräva flera gigabyte med extrautrymme på filsystemet som innehåller din hemkatalog.

  7. Förbered källkoden för kärnan med hjälp av dessa kommandon:

    cd ~/rpmbuild/SPECS 
    rpmbuild -bp --target $(uname -m) kernel-2.6.spec
  8. Kärnans källkodsträd finns i katalogen ${HOME}/rpmbuild/BUILD/kernel-<version>/linux-<version>.<arkitektur>.

    Konfigurationer för de specifika kärnor som levererades i Fedora Core 6 finns i katalogen ~/rpmbuild/BUILD/kernel-<version>/linux-<version>.<arkitektur>/configs/. Till exempel, i686-konfigurationsfilen kallas ~/rpmbuild/BUILD/kernel-<version>/linux-<version>.<arkitektur>/configs/kernel-<version>-i686.config. Kör följande kommando för att placera önskad konfigurationsfil på rätt plats för byggnation:

    cp configs/<önskad-konfig-file> .config
  9. Varje kärna får ett namn baserat på dess versionsnummer. Detta är värdet som uname -r kommandot visar. Kärnans namn definieras av de fyra första raderan in kärnans Makefile .Makefile har ändrats så att den genererar en kärna med ettannat namn från det som den aktiva kärnan har. För att accepteras av den aktiva kärnan, måste en modul kompileras för en kärna med korrekt namn. För att göra det måste du ändra i kärnans Makefile .

    Till exempel, om uname -r returnerar strängen 2.6.17-1.2345_FC6 , ändra EXTRAVERSION definitionen från detta:

    EXTRAVERSION = -prep 

    till detta:

    EXTRAVERSION = -1.2345_FC6

    Det innebär, ersätt allt från det sista tankestrecket och framåt.

  10. Kör följande kommando:

    make oldconfig

    Du kan sedan fortsätta som vanligt.

[Notera]Bygga kärnbinär-RPM:er

Normalt sett byggs kärnor för Fedora genom använda tillbehöret rpmbuild och en specfil. Ditt resultat kan variera om du använder kärnans inbyggda mål make rpm.

8.7. Bygga endast kärnmoduler

Ett uppackat källkodsträd krävs inte för att bygga en kärnmodul, som t.ex. din egna drivrutin för en enhet, för den nuvarande kärnan. Endast paketet kernel-devel krävs för att bygga externa moduler. Om du inte valde det under installationen, använd Pirut för att installera det, gå till ProgramLägg till/Ta bort Program eller använd yum för att installera det. Kör följande kommando för att installera kernel-devel paketet med yum.

su -c 'yum install kernel-devel' 

Till exempel, för att bygga foo.ko modulen, skapa följande Makefile i katalogen som innehåller filen foo.c:

obj-m := foo.o 

KDIR  := /lib/modules/$(shell uname -r)/build
PWD   := $(shell pwd)

default:
    $(MAKE) -C $(KDIR) M=$(PWD) modules

Kör kommandot make för att bygga modulen foo.ko.