Gentoo Linux Genkernel Vejledning
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
|
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 |
# mount /boot
# mount /dev/hda1 /boot
# 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.
-
Tilføj root=/dev/ram0 og init=/linuxrc til kerne
parametrene som bliver sendte videre til kerne-billedfilen.
-
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.
-
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.
-
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
-
Boot-loaderen henter genkernel-billedefilen, bygget til specifikationen
af opsætningsfilerne i genkernel-bibliotekerne såvel som
initrd, som bliver gjort klar af genkernel.
-
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.
-
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.
Indholdet i dette dokument er autoriseret under en Creative Commons -
Attribution / Share Alike licens.
|