10.3.1. Installasjon av kjernen
Å bygge kjernen innebærer noen få trinn—konfigurasjon,
kompilering og installasjon. Les README
filen i kjernekildetreet for alternative
metoder til måten denne boken konfigurerer kjernen på.
Forbered deg på kompilering ved å kjøre følgende kommando:
make mrproper
Dette sikrer at kjernetreet er helt rent. Kjerne teamet anbefaler
at denne kommandoen utstedes før hver kjernekompilering. Ikke stol
på at kildetreet er rent etter utpakking.
Det er flere måter å konfigurere kjernealternativene på. Vanligvis,
gjøres dette for eksempel gjennom et menydrevet grensesnitt:
make menuconfig
Betydningen av valgfrie make miljøvariabler:
-
LANG=<host_LANG_value>
LC_ALL=
-
Dette etablerer lokalinnstillingen til den som brukes på
verten. Dette kan være nødvendig for et riktig menyconfig
ncurses grensesnitt linjetegning på en UTF-8 linux
tekstkonsoll.
Hvis brukt, sørg for å erstatte <host_LANG_value>
med
verdien av $LANG
variabel fra
verten din. Du kan alternativt bruke vertens verdi av
$LC_ALL
eller $LC_CTYPE
.
-
make
menuconfig
-
Dette starter et ncurses menydrevet grensesnitt. For andre
(grafiske) grensesnitt, skriv make help.
For generell informasjon om kjernekonfigurasjon se
https://www.linuxfromscratch.org/hints/downloads/files/kernel-configuration.txt.
BLFS har litt informasjon angående spesielle
kjernekonfigurasjonskrav for pakker utenfor av LFS på
https://www.linuxfromscratch.org/blfs/view/11.2/longindex.html#kernel-config-index.
Ytterligere informasjon om konfigurering og bygging av kjernen
finner du på http://www.kroah.com/lkn/
Note
Et godt utgangspunkt for å sette opp kjernekonfigurasjonen er å
kjøre make
defconfig. Dette vil sette grunnleggende
konfigurasjon til en god tilstand som tar din nåværende
systemarkitektur i betraktning.
Sørg for å aktivere/deaktivere/stille inn følgende funksjoner,
ellers kan systemet ikke fungere riktig eller starte opp i det
hele tatt:
General setup -->
[ ] Compile the kernel with warnings as errors [CONFIG_WERROR]
< > Enable kernel headers through /sys/kernel/kheaders.tar.xz [CONFIG_IKHEADERS]
Device Drivers --->
Graphics support --->
Frame buffer Devices --->
[*] Support for frame buffer devices ----
Generic Driver Options --->
[ ] Support for uevent helper [CONFIG_UEVENT_HELPER]
[*] Maintain a devtmpfs filesystem to mount at /dev [CONFIG_DEVTMPFS]
[*] Automount devtmpfs at /dev, after the kernel mounted the rootfs [CONFIG_DEVTMPFS_MOUNT]
Aktiver noen tilleggsfunksjoner hvis du bygger et 64-bit system.
Hvis du bruker menuconfig, aktiver dem i rekkefølgen CONFIG_PCI_MSI
først, deretter
CONFIG_IRQ_REMAP
, til
sist CONFIG_X86_X2APIC
fordi kun et alternativ vises etter at avhengighetene er valgt.
Processor type and features --->
[*] Support x2apic [CONFIG_X86_X2APIC]
Memory Management options --->
[ ] Enable userfaultfd() system call [CONFIG_USERFAULTFD]
Device Drivers --->
[*] PCI Support ---> [CONFIG_PCI]
[*] Message Signaled Interrupts (MSI and MSI-X) [CONFIG_PCI_MSI]
[*] IOMMU Hardware Support ---> [CONFIG_IOMMU_SUPPORT]
[*] Support for Interrupt Remapping [CONFIG_IRQ_REMAP]
Det er flere andre alternativer som kan være ønsket avhengig av
kravene til systemet. For en liste over nødvendige alternativer for
BLFS pakker, se
BLFS Indeks over kjerneinnstillinger
(https://www.linuxfromscratch.org/blfs/view/11.2/longindex.html#kernel-config-index).
Note
Hvis vertsmaskinvaren din bruker UEFI og du ønsker å starte opp
LFS-system med det, bør du justere noen kjernekonfigurasjon som
på følgende
BLFS side.
Begrunnelsen for de ovennevnte
konfigurasjonselementene:
-
Compile the
kernel with warnings as errors
-
Dette kan forårsake bygningsfeil hvis kompilatoren og/eller
konfigurasjonen er forskjellig fra kjernens utviklere.
-
Enable kernel
headers through /sys/kernel/kheaders.tar.xz
-
Dette vil kreve cpio for å bygge kjernen.
cpio is not
installed by LFS.
-
Support for
uevent helper
-
Å ha dette alternativet satt kan forstyrre enhetens
behandling ved bruk av Udev/Eudev.
-
Maintain a
devtmpfs
-
Dette vil opprette automatiserte enhetsnoder som er befolket
av kjerne, selv uten at Udev kjører. Udev kjører så på toppen
av dette, administrere tillatelser og legge til
symbolkoblinger. Denne konfigurasjonen element er nødvendig
for alle brukere av Udev/Eudev.
-
Automount
devtmpfs at /dev
-
Dette vil montere kjernevisningen til enhetene på /dev ved
bytte til rotfilsystem rett før start av init.
-
Support
x2apic
-
Støtte for å kjøre avbruddskontrolleren for 64-bit x86
prosessorer i x2APIC-modus. x2APIC kan være aktivert av
fastvare på 64-bit x86-systemer, og en kjerne uten dette
alternativet aktivert vil få panikk ved oppstart hvis x2APIC
er aktivert av fastvare. Dette alternativet har ingen effekt,
men gjør heller ingen skade hvis x2APIC er deaktivert av
fastvare.
-
Enable
userfaultfd() system call
-
Hvis dette alternativet er aktivert, er det et
sikkerhetsproblem som ikke er løst i Linux-5.19.2 som kan
utnyttes. Deaktiver dette alternativet for å unngå
sårbarheten. Dette systemanropet brukes ikke av LFS eller
BLFS.
Alternativt, make
oldconfig er kanskje mer hensiktsmessig i noen
situasjoner. Se README
filen for mer
informasjon.
Hvis ønskelig, hopp over kjernekonfigurasjonen ved å kopiere
kjernens konfigurasjonsfil, .config
,
fra vertssystemet (forutsatt at den er tilgjengelig) til den
utpakkede linux-5.19.2
mappen.
Derimot, vi anbefaler ikke dette alternativet. Det er ofte bedre å
utforske alle konfigurasjonsmenyer og lage kjernekonfigurasjonen
fra grunnen av.
Kompiler kjernebildet og modulene:
make
Hvis du bruker kjernemoduler, modulkonfigurasjon i /etc/modprobe.d
kan være nødvendig. Informasjon
knyttet til moduler og kjernekonfigurasjon er lokalisert i
Section 9.3,
“Oversikt over enhets- og modulhåndtering” og
kjerne dokumentasjon i linux-5.19.2/Documentation
mappen. Også,
modprobe.d(5)
kan være av interesse.
Med mindre modulstøtte er deaktivert i kjernekonfigurasjonen,
installere modulene med:
make modules_install
Etter at kjernekompileringen er fullført, er flere trinn nødvendig
for å fullføre installasjonen. Noen filer må kopieres til
/boot
mappen.
Caution
Hvis vertssystemet har en separat /boot partisjon, kopieres
filene nedenfor dit. Den enkleste måten å gjøre det på er å binde
/boot på verten (utenfor chroot) til /mnt/lfs/boot før du
fortsetter. Som root
user in the
vertssytemet:
mount --bind /boot /mnt/lfs/boot
Stien til kjernebildet kan variere avhengig av plattformen som er
brukt. Filnavnet nedenfor kan endres for å passe din smak, men
stammen av filnavnet skal være vmlinuz for å være kompatibel med det
automatiske oppsettet av oppstartsprosessen beskrevet i neste
avsnitt. De følgende kommandoene antar et x86 arkitektur:
cp -iv arch/x86/boot/bzImage /boot/vmlinuz-5.19.2-lfs-11.2
System.map
er en symbolfil for
kjernen. Den kartlegger funksjonsinngangspunktene til hver funksjon
i kjernens API, samt adressene til kjernedatastrukturene for
kjøringen av kjernen. Den brukes som en ressurs når man undersøker
kjerneproblemer. Utfør følgende kommando for å installere
kartfilen:
cp -iv System.map /boot/System.map-5.19.2
Kjernens konfigurasjonsfil .config
produsert av make
menuconfig steget ovenfor inneholder alle
konfigurasjonsvalgene for kjernen som nettopp ble kompilert. Det er
en god idé å beholde denne filen for fremtidig referanse:
cp -iv .config /boot/config-5.19.2
Installer dokumentasjonen for Linux kjernen:
install -d /usr/share/doc/linux-5.19.2
cp -r Documentation/* /usr/share/doc/linux-5.19.2
Det er viktig å merke seg at filene i kjernekildens mappen ikke
eies av root. Når en pakke
pakkes ut som bruker root
som vi gjorde inne i chroot), filene har bruker- og gruppe-IDer for
hva som helst de var på pakkerens datamaskin. Dette er vanligvis
ikke et problem for enhver pakke som skal installeres fordi
kildetreet blir fjernet etter installasjonen. Imidlertid er Linux
kildetreet ofte beholdt i lang tid. På grunn av dette er det en
sjanse at hvilken bruker-ID pakkeren brukte vil bli tildelt noen på
maskinen. Den personen ville da ha skrivetilgang til kjernens
kilde.
Note
I mange tilfeller må konfigurasjonen av kjernen være oppdatert
for pakker som vil bli installert senere i BLFS. I motsetning til
andre pakker, er det ikke nødvendig å fjerne kjernekildetreet
etter at den nybygde kjernen er installert.
Hvis kjernekildetreet skal beholdes, kjør chown -R 0:0 på linux-5.19.2
mappen å forsikre seg om at alle
filer eies av brukeren root.
Warning
Noe kjernedokumentasjon anbefaler å opprette en symbolkobling fra
/usr/src/linux
som peker på
kjernens kildemappe. Dette er spesifikt for kjerner før
2.6-serien og må ikke
opprettes på et LFS system, for det kan forårsake problemer for
pakker du kanskje ønsker å bygge når basis LFS systemet er
fullstendig.
Warning
Deklarasjonene i systemets include
mappe (/usr/include
) bør
alltid være de som Glibc
ble kompilert mot, det vil si de desinfiserte deklarasjonene
installert i Section 5.4,
“Linux-5.19.2 API Headers”. Derfor bør de
aldri erstattes av enten
de rå kjernedeklarasjonene eller andre kjernerensede
deklarasjoner.