Gentoo Logo

Disclaimer : This document is not valid and is not maintained anymore.


Gentoo Linux Genkernel Vejledning

Indhold:

1.  Introduktion

Introduktion

Genkernel er designet til at tillade brugere, der ikke tidligere er vant til at kompilere en kerne, til at bruge opsætning der ligner den der er brugt på Gentoo installlations CD'erne, hvilke automatisk finder dit hardware.

Nogle brugere er måske også interesseret i at bruge genkernel til hardware som kræver aktivering og en fungerende kerne, før der skal genstartes. Fordi genkernel også automatisk samler dine kerne-moduler, tillader den således hardware, som kræver at blive hentet med modul-parametre.

Er genkernel noget for mig?

Genkernel er ofte et godt valg for dem der ikke er vant til at samle deres egen kerne eller dem der ikke er sikre på deres hardware-opsætning.

Fordi genkernel er designet til at bruge en generisk opsætning, så bør den være i stand til at understøtte alt dit hardware - men, fordi alle drivere og moduler også skal samles, så er det at samle sin egen kerne selv ofte meget hurtigere, givet at du ved hvad du har brug for.

Genkernel understøtter dog ikke pt. opstart fra LVM2/EVMS2 partitioner. Brugere anbefales at bruge en manuelt samlet kerne indtil videre.

At få fat i genkernel

Du kan få fat i genkernel ved bare at køre emerge genkernel. Glem ikke at bruge -k flaget til emerge, hvis du bruger binære pakker, f.eks. GRP. Pga. at GRP pakkerne har en ældre version af genkernel, er flagene anderledes. På grund af dette bør du læse Gentoo håndbogen og genkernel --help igennem.

Understøttede platforme

Fra og med genkernel 3.0.2, bør de følgende platforme være understøttet: alpha, amd64, parisc, parisc64, ppc, ppc64, sparc, sparc64, og x86.

2.  Brug af genkernel

Introduktion

Genkernel er designet til at virke på tre måder:

  • "all" mode: denne bygger kernen samt initrd
  • "kernel" mode: denne bygger kun kernen
  • "initrd" mode: denne bygger kun initrd

De fleste brugere vil kun bruge "all", som kører "kernel" mode og "initrd" mode for dig. Bemærk at "kernel" og "initrd" modes er pt. bare aliasser for "all", så de vil ikke give dig nogen speciel effekt.

Selvom at genkernel hovedsagelig er en kommando til at gøre dit liv nemmere, når du skal samle en kerne, så er genkernel også pakket fuldt med forskellige flag, som tillader dig at skræddersy hvordan din kerne bliver kompileret og konfigureret.

Genkernel samlings-flag

Genkernel understøtter de følgende flag, som sendes til de relevante applikationer imens din kerne bliver samlet:

  • --kernel-as=enAssembler: Dette specificerer en assembler som vil blive brugt til at samle din kerne.
  • --kernel-cc=enCompiler: Dette specificerer en compiler som vil blive brugt til at samle din kerne.
  • --kernel-ld=enLinker: Dette specificerer en linker som vil blive brugt til at samle din kerne.
  • --kernel-make=enMake: Dette specificerer en alternativ GNU Make som vil blive brugt til at samle din kerne.
  • --utils-as=enAssembler: Dette specificerer en assembler som vil blive brugt til at samle understøttelsesværktøjerne.
  • --utils-cc=enCompiler: Dette specificerer en kompiler som vil blive brugt til at samle understøttelsesværktøjerne.
  • --utils-ld=enLinker: Dette specificerer en linker som vil blive brugt til at samle understøttelsesværktøjerne.
  • --utils-make=enMake: Dette specificerer en alternativ GNU Make, som vil blive brugt til at samle understøttelsesværtøjerne.
  • --makeopts=-jJobs: Dette specificerer det flag der vil blive sendt til GNU Make når kernen og værtøjerne bliver samlet.

Genkernel kerne-flag

Genkernel understøtter de følgende flag, nogle af dem har --no-mulighed ækvivalente, der har indflydelse på samlingen af kernen:

  • --callback="echo Hello": Denne rutine kalder de specificerede argumenter efter at kernen og de relevante moduler er blevet bygget, men før at initrd er blevet bygget. Dette er nyttigt, når du måske ønsker eksterne moduler installeret til initrd, ved at emerge de relevante dele ved brug af callback og derefter omdefinering af en genkernel modul-gruppe.
  • --no-clean: Dette kører eller kører ikke make clean før den samler din kerne. Dette gør at alle objektfiler og afhængigheder bliver fjernet.
  • --no-mrproper: Dette kører eller kører ikke make mrproper før den samler din kerne. Dette gør at alle objektfiler, afhængigheder og din opsætning bliver fjernet.
  • --kerneldir=/sti/til/kildekode: Dette specificerer en alternativ placering af kernens kildekode, i stedet for standardplaceringen /usr/src/linux.
  • --kernel-config=/sti/til/config-file: Dette specificerer en alternativ kerneopsætning, som vil blive brugt; fremfor den ikke persistente /sti/til/kildekode/.config, som bliver brugt som standard.
  • --no-bootsplash: Dette tilføjer eller tilføjer ikke bootsplash understøttelse i den initrd, som genkernel bygger. Ikke alle arkitekturer understøtter pt. bootsplash, og en kerne der understøtter bootsplash kræves også.
  • --no-menuconfig: Dette kører eller kører ikke menu-baserede kerneopsætning før den bygger kernen, efter at make oldconfig er blevet kørt.
  • --no-initrdmodules: Dette kopierer ikke nogen moduler til den initrd, som genkernel laver.
  • --no-install: Dette installerer eller installerer ikke din kerne, dine moduler og initrd når samlingen er færdig.

Diverse Genkernel-flag

Genkernel understøtter også nogle forskellige flag, som ikke passer ind i de to andre kategorier:

  • --arch-override=enArch: Dette flag kan bruges til at omgå hvilken arkitektur genkernel tror du er på, hvis den automatiske detektering fejler (send venligst en bug, hvis den gør) eller hvis du ønsker at kompilere en kerne til en anden arkitektur.
  • --busybox-config=/sti/til/busybox-config: Dette omgår standard opsætningen af busybox ved den specificerede fil.
  • --busybox-bin=/sti/til/busybox-binær.tar.bz2: Ved at bruge denne mulighed, sikrer du at en busybox binær fil ikke bliver samlet og at den specificerede tarball vil blive brugt. Bemærk at busybox skal være statisk samlet!
  • --minkernpackage=/output/til/dinkerne.tar.bz2: Dette flag outputter en tarball af kernen, navngivet kerne og initrd navngivet initrd til den specificerede fil. Der vil ikke blive inkluderet nogen information omkring moduler i denne tarball.

At køre genkernel

Alt hvad der er nødvendigt for at køre genkernel er kun genkernel med de nødvendige flag som root. F.eks:

Kode oversigt 2.1: At køre genkernel

# genkernel --menuconfig --no-clean --no-install --bootsplash all
(Vil producere en kerne, ved at spørge dig hvordan den skal
opsættes, så det passer til dine ønsker, lade alle samlede
objektfiler være, slå bootsplash-understøttelse til, men uden at
installere noget som helst.)

Hvis du vil have genkernel til at også at installere din kerne, så skal du være sikker på at din /boot partition er mountet - nyere udgaver af genkernel vil automatisk forsøge at gøre dette for dig, hvis MOUNTBOOT er sat til "yes" i /etc/genkernel.conf.

Kode oversigt 2.2: At mounte din /boot manuelt

(Hvis /boot er en gyldig indgang i /etc/fstab:)
# mount /boot
(... ellers for IDE diske:)
# mount /dev/hda1 /boot
(... og for SCSI diske:)
# mount /dev/sda1 /boot

At sætte genkernel op til fungere med din bootloader

For at sætte genkernel op til at virke med din boot-loader, er tre eller fire ændringer nødvendige i din boot-loader-opsætning.

  1. Tilføj root=/dev/ram0 og init=/linuxrc til kerne parametrene som bliver sendte videre til kerne-billedfilen.
  2. Tilføj real_root=/dev/hda3, eksempelvis, til de kerne parametre der bliver sendt videre til kerne-billedfilen hvis /dev/hda3 indeholder din root partition.
  3. Hvis du bruger bootsplash, tilføj da en passende modeline såsom vga=0x317 til de parametre der bliver sendt videre til kernen og tilføj også splash=verbose eller splash=silent afhængigt af hvor meget feedback du vil have fra din bootsplash.
  4. Tilføj initrd afhængigt af hvordan din bootloader kræver det: se Gentoo Håndbogen for detaljer om hvordan du bør gøre det for din boot-loader.

Filer til opsætning af kernen

Genkernel vil gemme din kernekonfiguration i /etc/kernels og bruge den konfiguration når du kører genkernel igen. Hvis du vil starte med standarderne igen, så omdøb filen /etc/kernels. Genkernel vil så bruge kerne konfigurationen placeret i /usr/share/genkernel/<arch> i stedet for.

3.  At porte genkernel

Introduktion

Givet at din arkitektur har alle de krævede biblioteker og værktøjer, som genkernel kræver, hvilket inkluderer, men er ikke begrænset til, en fungerende kerne, til din arkitektur, et fungerende sæt, GNU make og en fungerende busybox distribution, så er du klar til at køre!

For enhver arkitektur bruger genkernel /usr/share/genkernel/$archNavn til opsætningsfiler for denne arkitektur.

Hvordan system-bootstrapningen virker

  1. Boot-loaderen henter genkernel-billedefilen, bygget til specifikationen af opsætningsfilerne i genkernel-bibliotekerne såvel som initrd, som bliver gjort klar af genkernel.
  2. Kernen starter op, allokerer den en lille mængde RAM, hvori busybox aktiveres, der undersøger systemet med modulerne i modules_load listen for arkitekturen.
  3. Når dette er gjort og givet at real_root parameteren er root boot-enheden som busybox ser tingene, bliver fundet, så bliver systemet bootet fra denne enhed.

Opsætningsfilerne

  • busy-config: Dette er den opsætning, som bliver brugt til at bygge busybox til din arkitektur.
  • config.sh: Dette er et shell-script, som sætter forskellige indre genkernel-variabler. Se en af config.sh-filerne for et eksempel.
  • modules_load: Dette er en fil der indeholder en liste, afgrænset af mellemrum, af moduler som bliver hentet for at få SCSI, FireWire, ATARAID og PCMCIA understøttelse. Hvis der ikke er nogen af disse der er tilgængelige til din platform, lad da disse felter være blanke. Se en af modules_load filerne for et eksempel.
  • kernel-config: En standard kerne-opsætning, der bruges for enhver kerneversion.
  • kernel-config-2.4: En standard kerne-opsætning, der bruges for 2.4 kerneserien.
  • kernel-config-2.6: En standard kerne-opsætning, der bruges for 2.6 kerneserien.


Udskriv

Opdateret 26. juni 2005

The original version of this translation is not maintained anymore

Opsummering: Denne vejledning har til formål at være en reference til alle de funktioner, der bliver sat til rådighed af genkernel.

Tim Yamin
Forfatter

Arne Mejlholm
Oversætter

Jesper Brodersen
Korrektur

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.