Hvordan å kompilere Linux Kernel


Kompilering Linux-kjernen pleide å være en overgangsrite, eller bare en nødvendighet, for å kjøre Linux. Det er ikke noe de fleste brukerne trenger å gjøre noe mer, men hvis du virkelig ønsker å kompilere egen kjerne vil vi vise deg hvordan.

Selv om det ikke er nødvendig, mange brukere fortsatt ønsker å vite hvordan du kompilere Linux-kjernen. Dessverre er det ikke bare en
måte å gjøre det. Jeg skal vise én måte å bygge en kjerne fra kilde, men det kan være lurt å ta kontakt med distribusjons dokumentasjon for den riktige måten å bygge fra kilden for din distribusjon. Her skal vi bygge fra kilden og installere direkte uten å opprette en RPM eller Debian pakke for kjernen. Hvis det er mye etterspørsel, vil vi gjøre spesifikke tutorials på å lage kjerner for Ubuntu og Fedora.

advarsel

Da jeg først begynte å bruke Linux i 1996, var det nesten obligatorisk å kompilere din egen kjerne. Heldigvis, ting har endre mye
siden da. Det er svært sjelden at du
å kompilere egen kjerne i disse dager, med mindre du virkelig vet hva du gjør (i så fall, har du sannsynligvis ikke trenger denne opplæringen), ønsker å hjelpe til med kernel testing eller kjøre inn i en svært uvanlig situasjon.

Du kan
må kompilere moduler, som er noe annerledes. Fordi støtte for enheter kan kompileres som moduler i stedet for å kreve en kjerne gjenoppbygge, kan du bare kompilere moduler og sette dem inn i det eksisterende kernel.

Hvis du ønsker å hjelpe til med kernel testing, flott! Hvis du har et par timer, og kan kompilere og starte en kernel (de fleste problemene dukker opp med en gang), så vil du være å gjøre Linux-fellesskapet en tjeneste ved å teste det ut. Hvis du ønsker å kjøre en tilpasset kjerne på skrivebordet, laptop, eller servere, det er fint – men ikke forvent distribusjonen din leverandør eller prosjekt for å støtte det eller akseptere feilrapporter om en kjerne problem med mindre du kjører aksjen bygger som de gir. Hvis du kompilere en kjerne bare fordi du kan, det er flott – men ikke forvent noe teknisk support

Til slutt kjernen du får fra din distribusjon og kjernen som kommer fra kernel.org er generelt ikke til å være det samme &mdash!; selv om de er samme versjonsnummer. Dette er fordi nesten alle distribusjons skip en modifisert Linux kernel med sine egne patcher og tweaks.

Klargjøring å kompilere

Før kompilere kjernen, må du ha de utviklingsverktøy, og du vil trenger for å lage en konfigurasjonsfil som spesifiserer hva som skal (og bør ikke) være kompilert med kjernen. Også har tenkt å ha en time eller mer for hele øvelsen, avhengig av hvor rask maskinen er. Hvis du kompilere en kjerne på en quad-core Core i7 med masse RAM, vil det gå mye raskere. Hvis du kompilere kjernen på en Atom-basert netbook med 1 GB RAM, er det sannsynligvis ikke kommer til å være veldig rask – men trolig fortsatt mye raskere enn Pentium 133 MHz systemet jeg samlet min første kernel

Hvis du er ny til hele ". kompilere en kernel " ting, I sterkt
anbefaler at du ikke gjør dette på en produksjonsmaskin. Hvis du har VMware eller VirtualBox installert, kan du bruke dem til å kompilere den tilpassede kernel et par ganger. Hvis du har en ekstra boks, bruke den. Hvis du kommer til å kompilere kjernen på din produksjon desktop, server, laptop eller netbook første gang (mot mitt råd) sørge for at du har en backup Hotell og en redningsdisk hendig bare for å være på den sikre side. Oddsen er at du ikke trenger dem, men det er alltid bedre å ha sikkerhetskopier og slike og ikke trenger dem enn det motsatte

Til slutt, du trenger også kjernen kilde &mdash.; enten kilden for kjernen som fulgte med distro, eller en av de kjerner fra kernel.org. Vi kommer til å gjøre dette med en kernel.org kjernen.

På CentOS 5.5, må du installere ncurses-devel pakken, og Utviklingsverktøy gruppe av pakker, hvis du ikke har dem allerede. Legg merke til at jeg trakk noe av denne info fra CentOS wiki, for å gi kreditt der pga. For å installere disse pakkene, kjør:

yum groupinstall " Utviklingsverktøy " yum install ncurses-devel yum install qt-devel yum install unifdef

Neste er det på tide å opprette kataloger der du kommer til å kompilere kilden. Du kommer til å kompilere kjernen som en vanlig bruker, og deretter installere kernel som root. Jeg holder en src katalog i mitt hjemmeområde, vil du sannsynligvis ønske å gjøre det samme. Last ned kildekoden for kjernen i src katalogen, og deretter pakke det:

tjære -jxvf linux-2.6.35.4.tar.bz2

Versjonsnummeret vil trolig variere. Nå cd inn i linux-2.6.35.4 katalogen. Kjernen har en imponerende rekke verktøy for å bidra til å skape din config. Du kan bruke standard make config for å få en rekke spørsmål, eller gjøre menuconfig for en ncurses (tekst) grensesnitt for å kompilere kjernen. Alternativt kan du bruke en GUI til å gå gjennom menyene, som make xconfig.

Hvis dette er første gang du har forsøkt en kernel kompilering, kan menyene være litt skremmende. Det er vanskelig å gi noen råd om hvilke alternativer du bør eller ikke bør velge fordi dine grunner for å kompilere en kjerne kommer til å være annerledes enn min.

Du vil kanskje begynne med config-fil som din distribusjon bruker. Grab kilden RPM for kjernen og installere det:

rpm -i http://mirror.centos.org/centos/5/updates/SRPMS/kernel-2.6.18-194.11.3.el5. src.rpm

Nå ser under /usr /src /kjerner, er gruven ligger på /usr/src/kernels/2.6.18-194.11.3.el5-x86_64 men dette vil variere avhengig av arkitektur og versjonsnummer . Under denne katalogen er det en .config. Kopiere den til katalogen med kildekoden for Linux. Kjør gjøre xconfig og legg i .config du kopierte over. Gjør eventuelle endringer i konfigurasjonen du wan til, og deretter lagre konfigurasjonen.

Fremdeles med meg? Det er på tide å gjøre noen compilin '! Kjør gjøre, og gjør deg klar til å lene seg tilbake for en stund. Det vil ta en stund for kernel å kompilere. Virkelig, selv på en rask maskin, er det fortsatt vil ta kjernen litt tid for å kompilere.

Når kjernen er ferdig kompilering, må du installere kernel og moduler, og deretter konfigurere grub. Du må bytte til root eller bruk sudo her:

lage moduler installere make install

Nå sjekke grub.conf henhold /boot/grub/grub.conf og sørg for at du har konfigurasjonen for kjernen. Tidligere har jeg hatt å hånd redigere grub eller LILO, men da jeg skrev dette opp fant jeg ut at det make install prosessen hadde tydeligvis gjort det for meg. Du bør se noen linjer som dette:


 # boot = /dev /sdadefault = 1timeout = 5splashimage = (hd0,0) /grub/splash.xpm.gzhiddenmenutitle CentOS (2.6.35.4 ) root (hd0,0) kernel /vmlinuz-2.6.35.4 ro root = /dev /VolGroup00 /LogVol00 initrd /initrd-2.6.35.4.imgtitle CentOS (2.6.18-194.11.3.el5) root (hd0,0) kernel /vmlinuz-2.6.18-194.11.3.el5 ro root = /dev /VolGroup00 /LogVol00 initrd /initrd-2.6.18-194.11.3.el5.imgtitle CentOS (2.6.18-194.el5) root (hd0 , 0) kernel /vmlinuz-2.6.18-194.el5 ro root = /dev /VolGroup00 /LogVol00 initrd /initrd-2.6.18-194.el5.img 

Merk at grub teller fra 0 og ikke 1, så du må endres tilsvarende. Og tid til å starte på nytt!

Finishing Up

Dersom alt gikk bra, du er nå i gang en tilpasset kjerne du kompilert selv. Gratulerer! Hvis ikke, kan du starte på nytt og velge en av de kjente gode kjerner og starte på nytt. Hvis du ønsker å rapportere en feil i kjernen, kan du se dette notatet.

Kompilering en kjerne kan være en fin måte å finjustere systemet eller aktivere støtte for eksperimentelle funksjoner, etc. Men, jeg kan ' t understreke nok at det er egentlig ikke nødvendig
å gjøre dette med mindre du ønsker å hjelpe teste kernel eller har en god grunn til å kompilere din egen. Aksje kjerner som tilbys av de fleste distribusjoner er helt fint. Men hvis du liker å mekke med kjernen, for all del ha det!