Linux Kernel Tutorial for nybegynnere

Linux Kernel Tutorial for nybegynnere

Bakgrunnsinfo om operativsystemer

Et operativsystem, forkortet som OS, er et programvare som kontrollerer maskinvarekomponentene i et system, det være seg en telefon, bærbar PC eller et stasjonært. Det er ansvarlig for kommunikasjonen mellom programvaren og maskinvaren. Windows XP, Windows 8, Linux og Mac OS X er alle eksempler på operativsystemer. Operativsystemet består av:

  • Bootloader: Programvare som har ansvaret for oppstartsprosessen på enheten din.
  • Kjernen: Kjernen i systemet og administrerer CPU-, minne- og perifere enheter.
  • DAEMONS: Bakgrunnstjenester.
  • Nettverk: Kommunikasjonssystemer for sending og henting av data mellom systemer.
  • Skallet: omfatter en kommandoprosess som tillater manipulering av enheten gjennom kommandoer som er lagt inn i et tekstgrensesnitt.
  • Grafisk server: Undersystemet som viser grafikken på skjermen.
  • Skrivebordsmiljø: Dette er hva brukerne vanligvis samhandler med.
  • Programmer: er programmer som utfører brukerens oppgaver som tekstbehandlere.

Kjerneplass og brukerområde

Kjerneplass: Kjernen finnes i en forhøyet systemtilstand, som inkluderer et beskyttet minneplass og full tilgang til enhetens maskinvare. Denne systemtilstanden og minneområdet blir helt referert til som kjerne-rom. Innen kjerneområdet administreres kjernes tilgang til maskinvare og systemtjenester og leveres som en tjeneste for resten av systemet.

Brukerplass: Brukerens applikasjoner utføres i brukerområdet, hvor de kan nå en delmengde av maskinens tilgjengelige ressurser via kjernesystemanrop. Ved å bruke kjernetjenestene som følger med kjernen, kan en brukernivåapplikasjon opprettes som et spill- eller kontorproduktivitetsprogramvare for eksempel.

Linux

Linux har fått i popularitet gjennom årene på grunn av at det er åpen kildekode, basert på en UNIX -lignende design, og portert til flere plattformer sammenlignet med andre konkurrerende operativsystemer. Det er et operativsystem, som indikert, som ligner et UNIX OS-et stabilt multi-u-tasking-operativsystem, og som har blitt samlet som en gratis og åpen kildekode-programvare for utvikling og distribusjon. Noe som betyr at ethvert individ eller selskap har tillatelse til å bruke, etterligne, studere og endre Linux -operativsystemet på noen måte de ønsker.

Linux -kjernen

Fra sin første utgivelse 17. september 1991 har Linux -kjernen trosset alle odds for å være Linuxs definerende komponent. Den ble utgitt av Linus Torvalds og benytter seg av GNU/Linux for å beskrive operativsystemet. Linux Kernel-baserte Android OS på smarttelefoner har fått Linux til å slå sin konkurranse for å være den største installerte OS-basen for alle generelle operativsystemer. Historien til Linux -kjernen finner du her.

En kjerne kan enten være monolitisk, mikrokernel eller hybrid (som OS X og Windows 7). Linux -kjernen er en monolitisk datamaskinoperativsystemkjerne som ligner UNIX -systemet. Linux -linjen med operativsystemer som vanligvis refereres til som Linux -distribusjoner er basert på denne kjernen. Den monolitiske kjernen, i motsetning til mikrokernelen, omfatter ikke bare den sentrale prosesseringsenheten, minne og IPC, men har også enhetsdrivere, systemserveranrop og filsystemadministrasjon. De er best til å kommunisere med maskinvare og utføre flere oppgaver samtidig. Det er av denne grunn at prosesser her reagerer med rask hastighet.

Imidlertid er de få tilbakeslagene det enorme installasjonen og hukommelsesavtrykket som trengs og utilstrekkelig sikkerhet ettersom alt fungerer i en veiledermodus. Derimot kan en mikrokernel reagere sakte på applikasjonssamtaler som brukertjenester og kjernen blir skilt separert. De er dermed mindre i størrelse sammenlignet med den monolitiske kjernen. Mikrokerneller er lett utvidbare, men mer kode er nødvendig for å skrive en mikrokernel. Linux -kjernen er skrevet på programmeringsspråk for C og montering.

Linux -kjerneforholdet til maskinvaren

Kjernen kan administrere systemets maskinvare gjennom det som blir referert til som avbrudd. Når maskinvaren ønsker å grensesnitt mot systemet, blir det utstedt et avbrudd som avbryter prosessoren som igjen gjør det samme med kjernen. For å gi synkronisering kan kjernen deaktivere avbrytelser, det være seg en eller alle av dem. I Linux kjører imidlertid ikke avbruddshåndtererne i en prosesskontekst, de kjører i stedet i en avbrytende kontekst som ikke er assosiert med noen prosess.Denne spesielle avbruddskonteksten eksisterer utelukkende for å la en avbryterbehandler raskt svare på et individuelt avbrudd og deretter til slutt avslutte.

Hva gjør Linux -kjernen forskjellig fra andre klassiske UNIX -kjerner?

Det eksisterer betydelige forskjeller mellom Linux -kjernen og de klassiske UNIX -kjernene; Som oppført nedenfor:

  1. Linux støtter dynamisk lasting av kjernemoduler.
  2. Linux -kjernen er forebyggende.
  3. Linux har en symmetrisk multiprosessorstøtte.
  4. Linux er gratis på grunn av sin åpne programvare.
  5. Linux ignorerer noen standard UNIX -funksjoner som kjerneutviklerne kaller “dårlig designet.”
  6. Linux gir en objektorientert enhetsmodell med enhetsklasser, hot-pluggable hendelser og et filsystem for brukerområde for brukerområder
  7. Linux -kjernen klarer ikke å skille mellom tråder og normale prosesser.

Architechture

Komponenter i Linux -kjernen

En kjerne er ganske enkelt en ressurssjef; Ressursen som administreres kan være en prosess, minne eller maskinvareenhet. Det administrerer og voldgift tilgang til ressursen mellom flere konkurrerende brukere. Linux -kjernen eksisterer i kjerneområdet, under brukerområdet, og det er her brukerens applikasjoner blir utført. For at brukerområdet skal kommunisere med kjerneområdet, er et GNU C -bibliotek integrert som gir et forum for systemanropgrensesnittet for å koble seg til kjerneområdet og tillate overgang tilbake til brukerområdet.

Linux -kjernen kan kategoriseres i tre primærnivåer:

  1. Systemanropsgrensesnittet; Dette er det øverste og foretar de grunnleggende handlingene som Read and Writ.
  2. Kjernekoden; Ligger under systemanropsgrensesnittet, det er vanlig for alle prosessorarkitekturene støttet av Linux, det er noen ganger definert som arkitekturuavhengig kjernekode.
  3. Den arkitekturavhengige koden; Det er under den arkitekturuavhengige koden, danner det som vanligvis omtales som en styrestøttepakke (BSP) - dette inneholder et lite program kalt bootloader som plasserer operativsystemet og enhetsdrivere i minnet.

Det arkitektoniske perspektivet til Linux -kjernen består av: System Call Interface, Process Management, The Virtual File System, Memory Management, Network Stack, Architecture and the Device Drivers.

  1. System Call Interface; er et tynt lag som brukes til å foreta funksjonssamtaler fra brukerområdet inn i kjernen. Dette grensesnittet kan være arkitekturavhengig
  2. Prosessledelse; er hovedsakelig der for å utføre prosessene. Disse blir referert til som tråden i en kjerne og representerer en individuell virtualisering av den aktuelle prosessoren
  3. Minnehåndtering; Minnet administreres i det som er kjent som sider for effektivitet. Linux inkluderer metodene for å håndtere det tilgjengelige minnet, så vel som maskinvaremekanismene for fysiske og virtuelle kartlegginger. Bytteplass er også gitt
  4. Virtuelt filsystem; Det gir en standard grensesnittabstraksjon for filsystemene. Det gir et koblingslag mellom systemanropgrensesnittet og filsystemene støttet av kjernen.
  5. Nettverksstabel; er designet som en lagdelt arkitektur modellert etter de spesielle protokollene.
  6. Enhetsdrivere; En betydelig del av kildekoden i Linux -kjernen finnes i enhetsdriverne som gjør en bestemt maskinvareenhet brukbar. Enhetsdriveropplæring
  7. Arkitekturavhengig kode; De elementene som er avhengige av arkitekturen de kjører, må derfor vurdere arkitektonisk utforming for normal drift og effektivitet.

Grensesnitt

Systemanrop og avbryter

Programmer gir informasjon til kjernen gjennom systemanrop. Et bibliotek inneholder funksjoner som applikasjonene fungerer med. Bibliotekene, gjennom systemanropgrensesnittet, instruerer kjernen til å utføre en oppgave som applikasjonen ønsker. Hva er en Linux -systemanrop?

Avbrudd tilbyr en måte som Linux -kjernen administrerer systemenes maskinvare. Hvis maskinvare må kommunisere med et system, gjør et avbrudd på prosessoren susen, og dette blir gitt videre til Linux -kjernen.

Linux -kjernegrensesnitt

Linux -kjernen tilbyr forskjellige grensesnitt til brukerplassapplikasjonene som utfører en rekke oppgaver og har forskjellige egenskaper. To distinkte applikasjonsprogrammeringsgrensesnitt (API) eksisterer; de Kjerne-brukerplass og kjerne intern. Linux API er Kernel-Brukerspace Api; Det gir tilgang til programmer i brukerområdet i systemets ressurser og tjenester til kjernen. Det består av systemanropsgrensesnittet og underrutinene fra GNU C -biblioteket.

Linux Abi

Dette refererer til kjerne-brukerens rom ABI (applikasjons binærgrensesnitt). Dette forklares som grensesnittet som eksisterer mellom programmoduler. Når man sammenligner API og ABI, er forskjellen at ABI brukes til å få tilgang til eksterne koder som allerede er samlet mens API er strukturer for å administrere programvare. Definere en viktig ABI er hovedsakelig arbeidet med Linux -distribusjoner enn det er for Linux -kjernen. En spesifikk ABI bør defineres for hvert instruksjonssett, for eksempel x86-64. Sluttbrukere av Linux-produkter er interessert i ABIS i stedet for API.

System Call Interface

Som tidligere diskutert, spiller dette en mer fremtredende rolle i kjernen. Det er et kirkesamfunn av hele delen av alle eksisterende systemanrop.

C Standard Library

Alle systemanropene til kjernen er innenfor GNU C -biblioteket, mens Linux API består av systemanropsgrensesnittet og GNU C -biblioteket, også kalt GLIBC.

Bærbart operativsystemgrensesnitt (POSIX)

POSIX er et kollektivt begrep for standarder for å opprettholde kompatibilitet blant operativsystemene. Den erklærer API sammen med verktøygrensesnitt og kommandolinjeskall. Linux API har ikke bare de brukbare funksjonene definert av POSIX, men har også flere funksjoner i sin kjerne:

  1. Cgroups delsystem.
  2. Direct Rendering Manager -systemet ringer.
  3. EN Readahead trekk.
  4. Getrandom Ring som er til stede i V 3.17.
  5. Systemanrop som som futex, Epoll, Splice, dnotify, fanotify og inotify.

Mer informasjon om POSIX Standard er her.

Den modulære kjernen

Tidligere versjoner av Linux -kjernen var på en slik måte at alle delene deres var statisk fikset til en, monolitisk. Moderne Linux -kjerner har imidlertid mesteparten av sin funksjonalitet i moduler som legges inn i kjernen dynamisk. Dette i motsetning til monolitiske typer, blir referert til som modulære kjerner. Et slikt oppsett lar en bruker laste eller erstatte moduler i en kjørekjerne uten behov for å starte på nytt.

Linux Lastable Kernel Module (LKM)

Den grunnleggende måten å legge til kode i Linux -kjernen er gjennom introduksjonen av kildefiler til kjernekildetreet. Imidlertid kan det være lurt å legge til en kode mens kjernen kjører. Koden lagt til på denne måten blir referert til som en lastbar kjernemodul. Disse spesielle modulene utfører forskjellige oppgaver, men er spesifisert i tre: enhetsdrivere, filsystemdrivere og systemanrop.

Den lastbare kjernemodulen kan sammenlignes med kjerneforlengelsene i andre operativsystemer. Du kan legge en modul i kjernen ved å enten laste den som en LKM eller binde den inn i basekjernen.

Fordelene med LKMs over binding i basekjernen:

  • Å gjenoppbygge kjernen din er ofte ikke nødvendig, sparer tid og unngår feil.
  • De hjelper til med å finne ut systemproblemer som feil.
  • LKMer sparer deg for plass, da du bare har dem lastet når du trenger å bruke dem.
  • Gi mye raskere vedlikehold og feilsøkingstid.

Bruk av LKMS

  1. Enhetsdrivere; Kjernen utveksler informasjon med maskinvare gjennom dette. En kjerne må ha en enhets driver før du bruker den.
  2. Filsystem drivere; Dette oversetter innholdet i et filsystem
  3. Systemanrop; Programmer i brukerområdet bruker systemanrop for å skaffe tjenester fra kjernen.
  4. Nettverksdrivere; tolker en nettverksprotokoll
  5. Kjørbare tolker; laster og administrerer en kjørbar.

Å sammenstille Linux -kjernen

I motsetning til hva de fleste sier, er det en enkel oppgave å sammenstille Linux -kjernen. Følgende er en trinn-for-trinns illustrasjon av prosessen ved hjelp av en av Linux-distribusjonene: Fedora 13 KDE. (Det anbefales å ta sikkerhetskopi av dataene og gruben.Konf bare i tilfelle noe går galt)

  1. Fra http: // kjerne.org nettsted, last ned kilden.
  2. Mens du er i nedlastingskatalogen, kan du trekke ut kjernemilden fra arkivet ved å legge inn følgende kommando i terminalen:
    TAR XVJF Linux-2.6.37.tjære.BZ2
  3. Bruk kommandoen Lag MrProper for å fjerne byggeområdet før noen sammenstilling.
  4. Bruk en konfigurasjon Si Xconfig, disse konfigurasjonene er designet for å gjøre det lettere å kjøre et hvilket som helst program i Linux.
  5. Spesifiser modulene og funksjonene du ønsker at kjernen din skal inneholde.
  6. Etter å ha anskaffet .konfigurasjon fil, neste trinn er å gå til Makefile
  7. Kjør kommandoen for make og vent til samlingen skal gå gjennom.
  8. Installer modulene ved hjelp av kommandoen Mak Modules_install
  9. Kopier kjernen din og systemkartet til /oppstart.
  10. Kjør den nye-kernel-PKG for å bygge listen over modulavhengigheter og sånt som ting som grub.konf

Oppgradering av kjernen

Det er mulig å oppgradere en Linux -kjerne fra en eldre versjon til en nyere, mens du beholder alle konfigurasjonsalternativene fra den tidligere versjonen. For å oppnå dette, må man først sikkerhetskopiere .konfigurasjon fil i Kernel Source Directory; Dette er i tilfelle noe går galt når du prøver å oppgradere kjernen din. Trinnene er:

  1. Få den siste kildekoden fra hovedkjernen.org nettsted
  2. Bruk variasjonene på det gamle kildetreet for å bringe det opp til den nyeste versjonen.
  3. Konfigurer kjernen på nytt basert på den foregående kjernekonfigurasjonsfilen du hadde sikkerhetskopiert.
  4. Bygg den nye kjernen.
  5. Nå kan du installere nybygg kjernen.

Last ned den nye kilden; Linux -kjerneutviklerne forstår at noen brukere kanskje ikke vil laste ned hele kildekoden for kjerneoppdateringene, da dette vil kaste bort tid og båndbredde. Derfor gjøres en oppdatering tilgjengelig som kan oppgradere en eldre kjerneutgivelse. Brukere trenger bare å vite hvilken oppdatering som gjelder en bestemt versjon, siden en kjerneoppdateringsfil bare vil oppdatere kildekoden fra en spesifikk utgivelse. De forskjellige oppdateringsfilene kan brukes på følgende måter;

  1. Stabile kjerneoppdateringer som gjelder basekjerneversjonen.
  2. Basekjerneutgivelseslapper gjelder bare for den forrige base -kjerneversjonen
  3. Inkrementell oppdateringsoppgradering fra en bestemt utgivelse til neste utgivelse. Dette gjør at utviklere unngår maset med å nedgradere og deretter oppgradere kjernen deres. I stedet kan de bytte fra sin nåværende stabile utgivelse til neste stabile utgivelse.

Her er mer detaljerte trinn for prosessen for å oppdatere kjernen din fra Source on Debian, og fra forhåndsbygde binærfiler på Centos og Ubuntu.

Konklusjon

Linux -kjernen fungerer hovedsakelig som en ressurssjef som fungerer som et abstrakt lag for applikasjonene. Applikasjonene har en forbindelse med kjernen som igjen samhandler med maskinvaren og tjenesten applikasjonene. Linux er et multitasking -system som lar flere prosesser utføre samtidig. Linux -kjernen er populær på grunn av sin open source -natur som lar brukere endre kjernen til det som passer for dem og deres maskinvare. Derfor kan det brukes på en rekke enheter, i motsetning til andre operativsystemer.

Den modulære egenskapen til Linux -kjernen gir mer spenning til sine brukere. Dette er på grunn av det store utvalget av modifikasjoner som kan gjøres her uten å starte systemet på nytt. Fleksibiliteten gir brukerne et stort rom for å aktualisere fantasiene sine.

Dessuten er den monolitiske naturen til kjernen en stor fordel ettersom den har en høy prosesseringsevne enn mikrokernelen. Det viktigste tilbakeslaget med Linux -typen kjerne er at hvis noen av tjenestene mislykkes, så går hele systemet ned med det. Siste versjoner er designet på en måte som hvis en ny tjeneste legges til, det er ikke behov for å endre hele operativsystemet. Dette er en forbedring sammenlignet med tidligere versjoner.

Kilder

  1. Wikipedia Linux -kjerne
  2. Wikipedia Linux Kernel -grensesnitt
  3. Linux lastbar kjernemodul Hvordan
  4. Linux.com nybegynnere guide
  5. https: // www.Quora.com/hva-er-god-tutorials-to-learn-linux-kernel
  6. https: // unix.Stackexchange.com/spørsmål/1003/Linux-Kernel-Good-Beginners-tutorial
  7. https: // www.Howtogeek.com/howto/31632 // what-is-the-linux-kernel-and-what-does-it-do/