Kerneli lähtekoodid. Oma Linuxi tuuma loomine. Kerneli allika lahtipakkimine

Laadige alla mis tahes kaasaegne operatsioonisüsteem on keeruline mitmeetapiline protsess. Erinevates Linuxi distributsioonid allalaadimisprotsess võib veidi erineda, kuid üldine skeem on ligikaudu sama ja koosneb järgmistest etappidest:

    BIOS-koodi täitmine. Seadmete initsialiseerimine. Valik buutitav meedium. Alglaaduri RAM-i lugemine ja juhtimise üleandmine sellele. Alglaadur hõivab tavaliselt kettal ühe sektori ja on piiratud 384 baidiga (512 baiti on ketta sektor, miinus 128 baiti on partitsioonitabel). Sõltuvalt alglaadimisseadme tüübist saab alglaadimissektorit lugeda erinevatest kohtadest:

    • Disketilt või kõvakettalt käivitamisel loetakse alglaadurit füüsilise andmekandja esimesest sektorist;
    • CD/DVD-lt käivitamisel - CD andmestruktuuris asuva alglaadimisketta kujutise esimesest sektorist;
    • Võrgust käivitamisel serverist tftp-protokolli kaudu alla laaditud alglaadimisketta kujutise esimesest sektorist.

    Selles etapis kuvatakse ekraanil teavet selle kohta BIOS-i versioonid, leitud RAM-i kontrollimise protsess kõvakettad. Bootstrapperi kood on teabe printimise funktsiooni lisamiseks liiga väike, kuid see võib tekkida lühisõnumid vigade kohta.

    Peamise alglaaduri (GRUB, LiLo, NTLDR) mällu lugemine ja selle koodi käivitamine. Kuna alglaadur on väga väike, siis reeglina on selle koodi sisse kõvasti kodeeritud sektorid, millest tuleb välja lugeda peamise alglaaduri kood. Kõvakettal võib see olla ruum MBR-i ja ketta esimese partitsiooni vahel (rada null). Disketil ja ketta kujutise kasutamisel CD-lt ja võrgu kaudu käivitamisel võib peamine alglaadur asuda kohe pärast esmast alglaadurit ja hõivata kogu pildi mahu.

    Alglaadimise kernel (vmlinuz) ja abiketta kujutis (initrd). Pealaadur on piisavalt nutikas, et leida failisüsteemist üles konfiguratsioonifail, kerneli kujutise fail ja lisaketta kujutise fail. Vajadusel pakitakse kerneli kujutis lahti RAM-i, moodustatakse mäluala, mis sisaldab alglaadurist kernelile edastatud parameetreid, sealhulgas abiketta kujutise aadressi.

    Kaasaegse jaoks on abiketas vajalik Linuxi süsteemid kerneli modulaarsuse tõttu ja sisaldab põhifailisüsteemile juurdepääsu saamiseks vajalikke draivereid (ATA, NFS, RAID jne).

    Selles etapis luuakse protsess pid=1-ga, milles käivitatakse init-skript, mis asub abiketta juurkataloogis. Kernelile edastatud suvandid edastatakse tegelikult käsurea argumentidena initile.

    Skript sisaldab allalaadimist vajalikud draiverid kerneli moodulitena, luues ajutised failid/dev kataloogis olevaid seadmeid, et neile moodulitele juurde pääseda, skannige ketta partitsioonid RAID-ide ja loogiliste köite tuvastamiseks ja lähtestamiseks. Pärast loogiliste draivide initsialiseerimist proovitakse ühendada juurfailisüsteem, parameeter juur= . Kettata korral võrgu alglaadimine juurkataloogi üritatakse ühendada NFS-i kaudu.

    Ekraanil kuvatakse teated draiverite laadimise ja LVM-i alamsüsteemi virtuaalsete köidete otsimise kohta. Etapp lõpetatakse juurkataloogi uuesti ühendamisega põhifailisüsteemi ja põhiprogrammi /sbin/init (või selle ekvivalenti) laadimisega protsessi pid=1.

    Klassikalises UNIX "e" ja vanades Linuxi versioonid(umbes 2012. aastani) loeb programm init konfiguratsioonifaili /etc/inittab, lähtestab tekstikonsoolid ja tavaliselt käivitab vajalikud teenused, kasutades skriptide komplekti, mis asuvad failides /etc/init.d ja /etc/rc*.d kataloogid. Kaasaegsetes Linuxi distributsioonides sisaldab /sbin/init fail rohkem kaasaegne programm alustada teenuseid. Kõige populaarsem sarnased programmid on upstart ja systemd , mis võib selle alglaadimisetapi aega märkimisväärselt lühendada.

    Selles etapis kuvatakse ekraanil read, mis näitavad teenuste algust ja teavet edukuse kohta seda protsessi( või ).

GRUB alglaadur

Käivitage installikettalt taasterežiimi – päästerežiim. Selleks peate alglaadimise ajal alglaadimisviipale sisestama linux päästmise

Kui kõik läheb hästi, ühendatakse põhisüsteemi juurkataloog kataloogi /mnt/sysimage ja alglaadimiskataloog kataloogi /mnt/sysimage/boot . Pealegi praegused kataloogid/proc , /sys ja /dev ühendatakse nende vastavatesse /mnt/sysimage alamkataloogidesse. Kui seda ei juhtu, peate need toimingud käsitsi tegema.

Kui kõik kataloogid on ühendatud, saate juurkataloogi muuta

#kui selgub, et unustasite midagi ühendada, saate väljuda käsuga ^D chroot /mnt/sysimage

ja taasta initrd

#kopeeri vana fail cp -p /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak #loo uus dracut -f #kui tuuma versioon põhisüsteemis erineb praegustest versioonidest paigaldusketas, määrake see selgesõnaliselt dracut -f /boot/initramfs-2.6.32-358.el6.x86_64.img 2.6.32-358.el6.x86_64

#kopeeri vana fail cp -p /boot/initrd-$(uname -r).img /boot/initrd-$(uname -r).img.bak #loo uus mkinitrd -f -v /boot/initrd -$( uname -r).img $(uname -r) #kui põhisüsteemi kerneli versioon erineb installikettal olevast versioonist, määra see selgesõnaliselt mkinitrd -f -v /boot/initrd-2.6. 18-371.el5.img 2.6. 18-371.el5

cd/sünkroonimisseade 6

Täielik näide i2o_block draiveriga (Adaptec 2010S SCSI-adapter), mis ei laadita automaatselt. Näide töötab operatsioonisüsteemis CentOS 5, kuna standardne CentOS 6 kernel seda draiverit ei toeta.

Pärast CD-lt käivitamist päästerežiimis kuvatakse teade, et Linuxi partitsioonid ei leitud ja peate need ise paigaldama.

#Laadige insmod i2o_block draiver #Kontrollige, kas kõik töötas lsmod .... dmesg ... #Loo seadmefailid dmesg mkdir teabe põhjal /dev/i2o mknod /dev/i2o/hda b 80 0 mknod /dev/i2o/ hda1 b 80 1 mknod /dev/i2o/hda2 b 80 2 #Activate VolumeGroup lvm vgchange -a y #Mount volumes mkdir /mnt/sysimage mount /dev/mapper/VolGroup00-LogVol00 /mnt/sysima12 mnt/sysimage/boot #Mount erikataloogid mount --bind /proc /mnt/sysimage/proc mount --bind /dev /mnt/sysimage/dev mount --bind /sys /mnt/sysimage/sys

Edaspidi, vastavalt juhistele, ainult ketta kujutise loomisel, peate määrama programmi mkinitrd lisavõimalus--preload=i2o_block ja keelake ettelugemisteenused, kuna need põhjustavad draiveri i2o_block hangumise:

chkconfig early-readahead off chkconfig later-readahead off

Viimati rääkisime sellest, mis juhtub Linuxi käivitamisel: esiteks käivitub alglaadur, laadib kerneli ja laiendab ajutise ketta muutmälu, käivitab kernel init-protsessi, init leiab tõelise juurketta, sooritab sellise keerulise riigipöörde – ajutise asemel virtuaalne ketas päris ketas paigaldatakse juurkataloogi samasse kohta, sellelt päris kettalt laadib init protsess teise initi mis sellel asub päris ketas. Pärast kõiki neid toiminguid siseneb UNIX tavatöö olekusse.

Selles loengus selgitan, mida klassikaline programm init koos System V-stiilis rc.d skriptidega. Süsteem V on klassikaline versioon UNIX, millele kommerts UNIX on ehitatud.

Nagu nimigi ütleb, on rc.d kataloog. On selline UNIX-i traditsioon - kui millegi kogu konfiguratsioon mahub ühte faili ja see annab nimeks config, siis kui see jagatakse eraldi failideks, mis on põhifailiga ühendatud, loovad nad samanimelise kataloogi ja lisavad selle nimi.d - konfiguratsioon.d. Täht d tähendab, et tegemist on kataloogiga ja seal asuvad konfiguratsioonifaili abiosad. Algkonfiguratsiooni failivormingul on kaks traditsiooni: System V variant, mis hoiab iga konfiguratsiooni detaili eraldi failis rc.d kataloogis, ja traditsioon. BSD süsteemid, millel on üks /etc/rc fail, mis sisaldab palju skripte ja muutujaid, mis vastutavad süsteemi käitumise eest.

Igal juhul loome süsteemi käivitumisel protsessi PID=1, milles töötab programm nimega init. Nagu eelmisel korral nägite, kui init-programm suletakse, satub kernel paanikasse ja peatab kogu töö.

Klassikaline System V init loeb faili /etc/inittab ja täidab mitmeid sellesse faili kirjutatud juhiseid. Käivitage see tekstifail mille iga rida on tegelikult üks käsk või mingi käitumisreegel. vahekaart init näeb välja selline:

id:3:initdefault:

si::sysinit:/etc/rc.d/rc.sysinit

l3:3:oota:/etc/rc.d/rc3

ca::ctrlaltdel:/sbin/shutdown -t3 -r nüüd

Rea alguses on silt. Mis on selle sildi suur tähendus, ma ei saa tegelikult aru. Võime eeldada, et see on lihtne tekst ja kõik. Teine punkt on kas nn koormustase või tühi väärtus. Koormustase on kas üksik number vahemikus 0 kuni 6 või komadega eraldatud numbrite loend. Järgmisena tuleb tegevus. Toimingud on järgmised: oota, respawn, sysinit, ctrlaltdel. On ka teisi toiminguid, kuid neid kasutatakse enim. Lõpuks kirjutatakse rea lõppu teatud käsk koos käivitatava faili nimega ja argumendid, mis tuleb sellele käsule edastada.

Toiming sysinit käivitatakse üks kord süsteemi käivitamisel.

Toiming ctrlaltdel pole tegelikult toiming – see on juhtklahvide otseteede töötleja alt del. Süsteemi tuum püüab kinni ajakirjanduse enda ja selle kohta saadetakse teave init-protsessile, mis peab täitma teatud käsu. Näiteks saab seda teha väljalülitamise käsk, mis lülitab arvuti välja. Põhimõtteliselt saab siia kirjutada mis tahes muu programmi, näiteks echo, mis pärast control alt del vajutamist väljastab mingisuguse teate süsteemi kõikidele terminalidele. kaminakonsool nii

Ootetoiming tähendab, et peate käsu käivitama, ootama, kuni see lõpeb, ja alles siis jätkake töötlemist järgmised read. Ma ei tea, kas selliseid aktsioone saab paralleelselt korraldada. Suure tõenäosusega ei.

Respawn toiming tähendab, et peate programmi käivitama ja selle lõppemist ootamata minema edasine tegevus. Kui see programm hiljem lõpeb, tuleb see taaskäivitada.

Niisiis on üks täitmine tulemuste ootusega ja asünkroonses režiimis mitu täitmist - nad alustasid, ootasid, kuni see lõppeb, ja alustasid sõnu.

Koormustasemed on kokkulepe, mis võimaldab teil kontrollida, milliseid teenuseid laaditakse. Lähim analoog akendes on laadimine turvarežiim ainult laadimisel piiratud arv käivitub draiverid ja minimaalne teenuste arv, laadimine koos silumisega, kui iga toiming on täiendavalt logitud, ja tavaline täislaadimine.

Linuxil on traditsiooniliselt 6 alglaadimisvalikut. See jaotus on pigem tingimuslik.

0 ja 6 on välja lülitatud. 0 - täielik väljalülitamine elekter ja 6 - taaskäivitusrežiim.

4 jäetakse Linuxis üldiselt vahele

Laadimistaset on neli:

1 - ühe kasutaja režiim. Kui lähete alglaadurisse märksõnaüksik, siis oleme ühe kasutaja režiimis, kus töötab ainult üks protsess ja see on süsteemiadministraatori kest. Seda režiimi kasutatakse süsteemi taastamiseks.

3 - tavaline mitme kasutaja tekstirežiim, kui kõik teenused töötavad, võrk töötab, kõik draiverid töötavad.

2 - ka tekstirežiim, kuid ilma ühenduseta võrgudraivid. Fakt on see traditsiooniline võrgufail nfs süsteem, mida kasutatakse UNIXis, on võrgukahjustuste suhtes äärmiselt vastupidav. Kui me välja lülitaksime failiserver või ära lõigata võrgukaabel, siis nfs-võrgu failisüsteem teeb arvukalt taastamiskatseid ja need katsed on nii pikad, et ma ei jõudnud kunagi oodata, millal veateade lõpuks ilmus. Võib-olla juhtub see tunni või võib-olla 6 tunni pärast. Kogu selle aja hoiab nfs-draiver arvutit, mitte ei lase sul midagi teha. Seega, kui meie võrk või failiserver on seadistustes kukkunud, kirjutatakse, et käivitamisel tuleb paigaldada välised draivid, siis katse laaditakse sisse täisrežiim viib selleni, et kõik jääb teie jaoks rippuma. Sel juhul pakutakse teist alglaadimisvalikut - kõik on sama, mis kolmandas, ainult võrgukettad pole ühendatud. mina ise Võrguadapter töötab, IP-aadress on määratud, Internet on saadaval.

5 - sama mis 3, kuid x akna käivitamisega - graafiline liides.

režiim 2 sisaldab 1 + mitmikmängu režiimi. 3 sisaldab 2 + võrgukinnitust failisüsteemid. Lõpuks 5 sisaldab 3+ käivitamist graafika alamsüsteem. Kas seda rakendatakse järjepidevalt või mitte, on levitamise küsimus. Üldiselt saavad administraatorid inittab-faili iseseisvalt seadistada nii, et need režiimid käivituvad järjestikku, või saate teha kõik täiesti iseseisvaks - lülituda järgmisele režiimile, eemaldada kõik eelmises etapis tehtu ja seadistada kõik nullist.

Mõelge tõelise faili ridadele. Need on väga lihtsad.

l3:3:oota:/etc/rc.d/rc3

Käivitatakse mõni programm, mis peaks kõike tegema vajalikud toimingud, mida oodatakse kolmandal tasemel. Tõenäoliselt peate kolmandal tasemel konfigureerima võrguliidesed, käivitama terminalidraiveri ja käivitama mõned teenused. Alles pärast seda, kui see kõik on lõpule viidud, saame süsteemis töötada. Kuna peame ootama käivitamise lõpetamist, valime ootamise toimingu.

Käivitaja kannab nime rc ja seda käivitatakse parameetrina tasemenumbriga. Init programm ise on üsna lihtne. Ta saab oma faili rida-realt lihtsa süntaksiga lugeda ja mõnda käivitades uusi protsesse alustada abiprogrammid. Kogu koormustaseme loogika on rc-s peidetud. Käivitades rc parameetriga 3, läheme kolmandale tasemele, parameetriga 5 - viiendale.

rc programm on samuti väga lihtne. See on skript, mis käivitab kõik failid laadimistasemele vastavates kataloogides, nt /etc/rc3.d/. Need kataloogid sisaldavad käivitatavad failid, mis võtavad ühe parameetri – kas start või stop. Kui fail käivitatakse parameetriga start, siis see käivitab teenuse, kui stop parameetriga, siis peatab selle. Näiteks võrgukäivitus konfigureerib võrguliidesed ja võrguseiskamine paneb liidesed maasolekusse. Välja arvatud võrguliidesed seal on skriptid võrgu failisüsteemide ühendamiseks / lahtiühendamiseks, teenuste käivitamiseks / peatamiseks jne.

Failinimed teatud reeglite järgi ehitatud kataloogides. Need algavad tähega K või S, millele järgneb number ja teenuse nimi.

rc-skript vaatab läbi rc3 kataloogi sisu ja valib sealt kõik failid, mis algavad tähega K (kill). Failid järjestatakse numbrite kasvavas järjekorras ja käivitatakse parameetriga stopp. Seejärel tehakse samad toimingud S-tähega (start) algavate failidega, mis käivitatakse stardiparameetriga. Üldiselt on see kogu teatud tasemele liikumise protseduur.

Võib eeldada, et kataloogis /etc/rc0.d/ on ainult K-tähega algavad failid, kuna sulgemisel tuleb kõik peatada ja kataloogis /etc/rc1.d/ on üks fail S-vihikul administraatorikonsooli käivitamiseks.

Programmeerimise hõlbustamiseks on eraldi kataloog /etc/init.d/, mis sisaldab samu faile ainult ilma numbritäheta nime alguses. Tegelikult on tasemekataloogides olevad failid vaid sümboolsed lingid põhifailidele. Nii et /etc/rc3.d/S10apache on link /etc/init.d/apache. Linkide nimedes olevaid tähti ja numbreid on vaja selleks, et rc-skript kutsuks neid õiges järjekorras ja õigete argumentidega.

Selle põhimõtte järgi ehitatud süsteemides peate kataloogis /etc/init.d/ mis tahes teenuse käivitamiseks või peatamiseks leidma sellele vastava faili ja käivitama selle parameetriga start või stop. Teenuste sellisel käivitamisel ei meeldi skriptide selgesõnaline kutsumine. Asi on selles, et käsus line linux automaatne täitmine töötab suurepäraselt. Selle abil saate väga kiiresti sisestada käivitusfaili tee.

Konkreetse teostuse kasutaja eest varjamiseks kirjutatakse skriptide ja sümboolsete linkide süsteemi peale kaks abiprogrammi.

Programm chkconfig võimaldab teil manipuleerida sümboolsed lingid vastavatele skriptidele. Et näha, mis igal tasemel algab ja mis peatub, võite kasutada käsku ls ja loetleda skriptid vastavasse kataloogi, kuid lihtsam on kasutada käsku chkconfig --list. Programm chkconfig läbib kõik rc-kataloogid ja loetleb, mis igal tasemel algab ja peatub. Kui tahame, et miski käivitaks süsteemi käivitamisel automaatselt teatud teenuse, käivitame käsu chkconfig<имя службы>sisse ja skript loob käivitamiseks lingi soovitud kataloog ja koos õige nimi. Käivitage chkconfig<имя службы>off põhjustab alguslingi eemaldamise ja peatamislingi loomise. Seega võimaldab programm chkconfig hallata teenuste loendit, mis käivituvad süsteemi käivitamisel.

Teenuste käsitsi käivitamiseks ja peatamiseks kasutatakse teist programmi, teenust. Teenus on ümbris, mis võimaldab teil mitte skriptile otse juurde pääseda, vaid määrata teenuse nime ja öelda, et tahame selle käivitada või peatada. Minu kasutataval bashil puudub teenusekäsu automaatne lõpetamine, seega on mul lihtsam skriptide tee tippida.

Käivitusskriptides tuleb algus- ja lõppargumente tõrgeteta töödelda. Lisaks võite tuua välja mõned oma argumendid, mis teevad midagi kasulikku.

Enamik skripte rakendab olekuvalikut, mis näitab, kas teenus töötab või mitte. Käivituse käivitamisel saab skript pärast teenuse edukat käivitamist oma PID-i ja kirjutab selle konkreetne fail. Stop-käsk kustutab faili. Tavaliselt luuakse sellised failid kataloogis /var/run/. Staatuse käsk kontrollib, kas selline fail on olemas. Seda pole seal, see teatab, et teenus ei tööta. Kui fail on olemas, eraldab see sellest protsessi ID ja kontrollib praegust protsesside loendit. Kui see identifikaator on olemas, kõik töötab, kui programm mingil põhjusel katki läheb, siis olek näitab, et seda teenust üritati käivitada - fail on olemas, kuid teenus ise ei tööta.

Taaskäivitamise suvand täidab skriptis järjestikku kaks käsku – esmalt stopp ja seejärel start. See on täiesti vabatahtlik käsk – lihtsalt mugavus. Lõpuks on olemas teenused, mis võimaldavad teil mõnda konfiguratsioonifaili liikvel olles uuesti lugeda. Nende jaoks lisatakse taaslaadimiskäsk, mille ülesandeks on saata teenusele signaal, et konfiguratsioon on muutunud. üksikjuhtum, salvestage ja laadige tulemüüri konfiguratsiooni salvestamiseks käsud.

Kui süsteemiadministraator soovib üksikute teenuste peatamise või käivitamise asemel viia kogu süsteemi teatud tasemele, saab seda saavutada kahel viisil. Saate otse kutsuda /sbin/init programmi. Kui helistatakse teatud arv parameetrina, siis täidab ta kõik inittab-faili juhised, millele vastav tase oli ette nähtud. Kui käivitate näiteks / sbin / init 1, leiab init oma konfiguratsioonifail kõik read, millel on tase 1, ja täidavad need. Mõnes süsteemis rakendatakse seiskamiskäsku kui /sbin/init 0, kuna tase 0 on süsteemi väljalülitamine. IN Hiljuti tasandite vahel liikumiseks ilmus eriprogramm nimega telinit, mis on link initi. Selle ülesanne on saata init-protsessile signaal, et administraator soovib minna teatud tasemele. telinit q käsib init inittab faili uuesti lugeda. Vanemates süsteemides saavutati see SIGHUP signaali saatmisega protsessile PID=1 (kill -HUP 1).

Inittabis veel paar rida, see on terminalide käivitamine

1:2345:respawn:/sbin/mingetty tty1

Süsteemile interaktiivse juurdepääsu pakkumiseks võib teil inittabes olla mitu seda tüüpi rida. 2345 on tasemed, millel käsk tuleks käivitada, respawn tähendab, et programm tuleks katkestamise korral taaskäivitada. Getty programm on terminalihaldusprogramm. Traditsiooniliselt nimetatakse UNIX-i terminali teletüüpideks, kuna esimesed terminalid olid elektrilised kirjutusmasinad. Vastavalt sellele on tty lühend sõnadest teletype. Mingetty on programm, mis töötab sisse lülitatud virtuaalterminalidega personaalarvuti. See saab konfigureerida terminalidraiverit ja parameetritena saab konfigureeritava terminaliseadme nime. Kataloogis /dev/ on seadmefail tty1, mis vastab esimesele virtuaalsele terminalile. Kui meil oleks modem ja tahtsime seda alglaadimise ajal initsialiseerida, võiksime kutsuda getty parameetriga ttyS0, mis vastab COM1-pordile. Modemi initsialiseerimisel sai seadistada Lisavalikud: ühenduse kiirus 19200 boodi, 7 või 8 bitti baidi kohta, paarsus, stoppbittide arv.

S0:2345:respawn:/sbin/getty ttyS0 19200 8 n 1

Viimati joonistasin ahela, milles protsess teeb endast koopia kutsudes fork, alamkoopia laadib oma mällu teise programmi, kutsudes välja exec, ja pärast lõpetamist teavitab sellest vanemprotsessi.

Tekstikasutajate seansid on paigutatud sellistesse ahelatesse: esiteks teeb init endast koopia ja käivitab selles programmi mingetty. Mingetty lähtestab terminali ja klaviatuuri ning seejärel käivitab sama protsessi käigus sisselogimisprogrammi. Login kuvab viipasid nime ja parooli sisestamiseks ning kui kõik läks hästi, määrab ta endale kasutajaõigused ning käivitab samas protsessis ennast üle kirjutades kasutajatõlgi, näiteks bash. Kui kasutaja tippib väljumiskäsu, lõpetab tõlk selle protsessi elutee. Kui protsess lõpeb, saab init selle kohta signaali. Init vaatab, mida ta peaks tegema, näeb taassünni toimingut, käivitab uuesti mingetty programmi, mis lähtestab terminali uuesti ja kogu asi kordub. Seega on iga seanss ühe protsessi sees. Niipea kui seansist lahkusime, meie protsess lõppes ja kohe käivitus programm, mis puhastab meie eest terminali ja taastab kõik vaikeseaded.

Failis inittab on veel üks spetsiaalne märksõna initdefault – vaiketase. Kui initi kernel sai ühe parameetri kerneli kaudu, siis käivitame alglaadimise tasemele 1. Kui alglaadurist ei lastud midagi läbi, kasutatakse vaikeväärtust. Kui pärast paigaldamist graafiline kest selgus, et meie arvuti on graafika jaoks nõrk, siis saate seada vaiketasemeks 3 ja pärast järgmist taaskäivitamist jõuame kolmandale tasemele - see tähendab tekstirežiimi. Installitud süsteem ilma graafika režiim, siis installisime kõik paketid x akna jaoks, muutsime vaiketasemeks 5 ja pärast järgmist taaskäivitamist läksime kohe graafikarežiimi.

Selles skriptimissüsteemis soovite mõnikord midagi ise teha, näiteks kustutada käivitamisel kõik failid /tmp/ kataloogis. Selle jaoks on olemas eraldi fail nimega /etc/rc.local, mis jookseb pärast kõiki teisi. See on lihtsalt parameetriteta skript, kuhu saab kirjutada kõike, mida tahad. Näiteks ühes minu ruuteris kirjutatakse süsteemi käivitamise ajal sellesse faili marsruutimistabelid. Olin liiga laisk otsima, kus distributsioonist vastavad standardskriptid asuvad ja rc.localis osutus käskude kirjutamine lihtsamaks.

Selles samm-sammult juhendõpid, kuidas õigesti ehitada ja installida >2.6 haru kernelit Ubuntu OS-i perekonnale.

1. samm: hankige kerneli allikas

Ubuntu kerneli allikaid saab hankida kahel viisil:

    Installides arhiivi hoidlast koos uusimate ametlike paikade automaatse ülekattega. See laadib alla ~150 MB suuruse paketi. praegune kaust. Kerneli allika hankimiseks, mille versioon on arvutisse installitud, käivitage käsk: apt-get source linux-image-`uname -r`

    Või saate "uname -r" asemel määrata konkreetse versiooni hoidlas saadaolevatest versioonidest.

Hoidlas saadaolevate versioonide loendit saab näha, kui sisestate käsu: "apt-get source linux-image-" ja vajutage kaks korda ilma sisestusklahvi vajutamata Tabeldusklahv.

Ärge unustage lubada üldine juurdepääs hoidlas olevatele allikatele (Süsteemi sätted → Programmid ja värskendused → Tarkvara Ubuntu → Lähtekood). Seda saab teha konsoolist, eemaldades /etc/apt/sources.list failis deb-src algavad read ja seejärel värskendades käsuga: "sudo apt-get update".

    Kõige värske versioon kernel on saadaval giti kaudu. Allalaaditava paketi suurus on ~500-800 Mb. git kloon git://kernel.ubuntu.com/ubuntu/ubuntu- .git

    Kus - väljalase nimi, näiteks:

    Giti kloon git://kernel.ubuntu.com/ubuntu/ubuntu-xenial.git

Muud südamikud

On ka tuumasid, mille töö Ubuntu all ei ole garanteeritud. Näiteks on teada probleem paljude populaarsete süsteemirakendused(eriti nVidia draiverid, VirtualBox), mis installimisel kompileeritakse installitud kernel. Seetõttu võib nende installimiseks tuumale, mis on selle Ubuntu versiooni jaoks mittestandardne (näiteks Ubuntu 16.04-ga on kaasas 4.4.0 kernel), võib olla vaja need käsitsi eraldi kompileerida või spetsiaalseid plaastreid ja uusimad versioonid kernel.org-i kerneleid, mida rakendus ei pruugi üldse toetada.

    Arhiiv alates põhiversioon ilma plaastriteta, st. nt "4.8.0", "4.8.10": sudo apt-get install linux-source

Pakkige saadud arhiiv lahti, kasutades käske:

Cd ~/ tar -xjf linux-2.6.x.y.tar.bz2

Või linux-source puhul:

Cd /usr/src tar -xjf linux-source-2.6.x.y.tar.bz2

2. samm: ehitamiseks vajalike pakettide hankimine

See samm on vajalik ainult siis, kui kernelit ehitatakse arvutisse esimest korda.

Põhipakettide installimiseks käivitage järgmised käsud:

sudo apt-get update sudo apt-get build-dep linux sudo apt-get install kerneli pakett

    konfig - traditsioonilisel viisil konfiguratsiooni. Programm kuvab konfiguratsiooniparameetrid ükshaaval, paludes teil määrata igaühe jaoks erinev väärtus. Ei soovita kogenematutele kasutajatele.

    vana konfiguratsioon- konfiguratsioonifail luuakse automaatselt selle alusel praegune konfiguratsioon tuumad. Soovitatav algajatele.

    defconfig- konfiguratsioonifail luuakse automaatselt vaikeväärtuste alusel.

    menüükonfiguratsioon- pseudograafiline liides käsitsi seadistamiseks, ei nõua parameetrite väärtuste järjestikust sisestamist. Soovitatav kasutada terminalis.

    xconfig- graafiline (X) liides käsitsi seadistamiseks, ei nõua parameetrite väärtuste järjestikust sisestamist.

    gconfig- graafiline (GTK+) käsitsi seadistamise liides, ei nõua parameetrite väärtuste järjestikust sisestamist. Soovitatav kasutada GNOME keskkonnas.

    localmodconfig- automaatselt loodud konfiguratsioonifail, mis sisaldab ainult antud jaoks vajalikku konkreetne seade. Kui seda käsku kutsutakse, moduleeritakse suurem osa kernelist

Juhul kui soovite kasutada konfig, vana konfiguratsioon, defconfig, localmodconfig või localysconfig, ei vaja te enam lisapakette. Ülejäänud kolme variandi puhul tuleb paigaldada ka lisapaketid.

menüükonfiguratsioon käivitage järgmine käsk:

sudo apt-get install libncurses5-dev

Kasutamiseks vajalike pakettide installimiseks gconfig käivitage järgmine käsk:

sudo apt-get install libgtk2.0-dev libglib2.0-dev libglade2-dev

Kasutamiseks vajalike pakettide installimiseks xconfig käivitage järgmine käsk:

Enne Ubuntu 12.04: sudo apt-get install qt3-dev-tools libqt3-mt-dev

sudo apt-get install libqt4-dev

3. samm. Plaastrite paigaldamine

See samm on valikuline.

Allikatele on ametlikud paigad juba rakendatud, kui kernel saadi ülalkirjeldatud käsuga:

apt-get source linux-image-`uname -r`

Kui te pole kunagi varem lähtekoodile plaastreid rakendanud, käivitage järgmine käsk:

sudo apt-get installi plaaster

See käsk installib paigaprogrammi, mis on vajalik paikade rakendamiseks. Nüüd laadige paigafail alla kausta, kus kerneli lahti pakkisite. See võib olla kumbki arhiivifail(nt Bzip2 või Gzip) või tihendamata paigafail.

Peal Sel hetkel eeldatakse, et olete faili juba salvestanud kausta, kus kerneli varem lahti pakkisite ja paigaprogrammi installisite.
Kui allalaaditud fail oli Gzip-vormingus (*.gz), käivitage arhiivi sisu ekstraktimiseks järgmine käsk:

Gunzip plaaster-2.6.x.y.gz

Kui allalaaditud fail oli Bzip2 (*.bz2) vormingus, siis käivitage arhiivi sisu ekstraktimiseks järgmine käsk:

Bunzip2 plaaster-2.6.x.y.bz2

kus 2.6.x.y on kerneli paiga versioon. Vastavad käsud pakivad paigafaili kerneli lähtekausta lahti. Enne plaastri paigaldamist peate veenduma, et see töötab ilma vigadeta. Selleks käivitage käsk:

Patch -p1 -i plaaster-2.6.x.y -- kuivkäivitus

kus 2.6.x.y on kerneli paiga versioon. See käsk simuleerib plaastri rakendamist ilma faile endid muutmata.

Kui selle täitmise ajal vigu ei esine, saab muudatusi failides endas turvaliselt rakendada. Selleks käivitage käsk:

Patch -p1 -i plaaster-2.6.x.y

kus 2.6.x.y on kerneli paiga versioon. Kui vigu ei esinenud, rakendati plaaster edukalt lähtekoodile.

Tähelepanu! Enne paiga rakendamist tehke järgmist: 1. Laadige saidilt http://www.kernel.org alla teie allikatega sama versiooni plaaster. 2. Käivitage järgmine käsk: patch -p1 -R

kus 2.6.x.y on paiga versioon ja teie allikad

Samm 4. Tulevase kerneli ehituse konfigureerimine

Liikuge käsu käivitamisega kausta, kus kerneli lahti pakkisite

Cd ~/linux-2.6.x.y

kus 2.6.x.y on allalaaditud kerneli versioon.

Siinkohal peaksite olema juba otsustanud tuuma seadistamise meetodi (kui mitte, vaadake neid jaotisest Ehitamiseks vajalike pakettide hankimine. Sõltuvalt sellest käivitage järgmine käsk, et käivitada teie valitud konfiguratsioonimeetod:

    konfig- traditsiooniline konfigureerimisviis. Programm kuvab konfiguratsiooniparameetrid ükshaaval, paludes teil määrata igaühe jaoks erinev väärtus. Kutsutakse välja käsuga make config

    vana konfiguratsioon- konfiguratsioonifail luuakse automaatselt praeguse kerneli konfiguratsiooni alusel. Soovitatav algajatele. Kutsub välja käsk make oldconfig

    defconfig- konfiguratsioonifail luuakse automaatselt selle konkreetse arhitektuuri vaikeväärtuste alusel. Kutsub välja käsk make defconfig

    menüükonfiguratsioon- pseudograafiline liides käsitsi seadistamiseks, ei nõua parameetrite väärtuste järjestikust sisestamist. Soovitatav kasutada terminalis. Helista: make menuconfig

    gconfig Ja xconfig- graafilised konfiguraatorid käsitsi seadistamiseks. Helista: make gconfig

    Tee xconfig

    vastavalt

    localmodconfig Ja localysconfig- automaatsed konfiguraatorid. Konfiguratsioon luuakse praegu kutsutavate moodulite ja töötava kerneli põhjal. Nende kahe konfiguraatori erinevus seisneb moodulite arvus. Esimesel juhul on tuumast vähemalt 50% ja teisel mitte rohkem kui 2 moodulit. Helista: tee localmodconfig

    Tehke localesconfig

    vastavalt

Pärast kõnet käivitatakse vastav konfiguratsiooniprogramm. Tehke vajalikud seadistused vastavalt oma vajadustele, salvestage konfiguratsioonifail ja jätkake järgmise sammuga.

5. samm Kerneli loomine

Seega on ettevalmistused lõppenud. Nüüd saate alustada kerneli ehitamise protsessi. Selleks käivitage käsk:

Fakeroot make-kpkg -j 5 --initrd --append-to-version=-custom kernel_image kernel_headers #-j<количество ядер процессора>+1

Kerneli ehitamine võib sõltuvalt tuuma konfiguratsioonist ja arvuti tehnilistest parameetritest võtta aega 20 minutist mitme tunnini. Mitmetuumalisele protsessorile ehitamine võib olla mitu korda kiirem

6. samm Kerneli piltide ja päiste installimine

Kui kerneli ehitamine on lõppenud, ilmub teie kodukausta kaks deb-paketti. Need tuleb paigaldada. Selleks käivitage käsud:

Cd ~/ sudo dpkg -i linux-image-2.6.x.y-custom_2.6.x.y-custom-10.00.Custom_arc.deb sudo dpkg -i linux-headers-2.6.x.y-custom_2.6.x.y-custom-10.00. Kohandatud_arc.deb

kus 2.6.x.y on ehitatud kerneli versioon, arc on protsessori arhitektuur (i386 – 32-bitine, amd64 – 64-bitine).
Kui te ei tea täpset paketi nime, loetlege oma kodukataloogis olevad failid käsuga

ja leidke just need kaks pakki.

Samm 7 Genereerige esialgne RAM-ketas

Ubuntu vajab korrektseks tööks esialgset RAM-i kettatõmmist. Selle loomiseks käivitage käsk:

sudo update-initramfs -c -k 2.6.x.y-custom

kus 2.6.x.y on kerneli kerneli versioon.

8. samm GRUB-i alglaadija konfiguratsiooni värskendamine

Uue kerneli versiooni valimiseks arvuti käivitamisel käivitage järgmine käsk:

sudo update-grub

Faili menu.lst (GRUB versioon 1) või grub.cfg (GRUB versioon 2) värskendatakse, et kajastada installitud operatsioonisüsteeme ja kerneli kujutisi.

9. samm Kerneli kontrollimine

Kerneli kompileerimine ja installimine on edukalt lõpule viidud! Nüüd taaskäivitage arvuti ja proovige süsteemi uue kerneliga käivitada. Veendumaks, et süsteem on käivitatud uue tuumaga, käivitage käsk

Uname -r

See kuvab kasutatava kerneli versiooni.

Kui see on õigesti tehtud, saate oma kodukaustas kustutada lähtearhiivid ja kogu linux-2.6.x.y kataloogi. See vabastab teie kõvakettal umbes 5 GB (vabanenud ruumi suurus sõltub ehitusvalikutest).

Sellega on montaaži- ja paigaldusprotsess lõpule jõudnud, palju õnne!

Kokkupanek Linuxi tuumad
Tere kallid lugejad. Täna räägin sellisest huvitavast õppetunnist kuidas luua linuxi kernelit. Miks peate kerneli ise ehitama? Tegelikult võib põhjuseid olla palju: vajadus kasutada täiendavaid kerneli funktsioone, optimeerida kerneli arvuti jaoks, värskendada kerneli uusimale versioonile. Selles artiklis demonstreerin allikate hankimise, Linuxi kerneli konfigureerimise, kompileerimise ja installimise protsessi osana ülesandest lisada tuumasse krüptoloopi (silmuskrüpteerimisseadmed) tugi.

Lähtekoodi hankimine
Esiteks peame saama allikas, saab seda teha erineval viisil ja erinevatest allikatest. Teen ettepaneku kaaluda ainult kahte: süsteemihoidlad, ametlik kerneli sait. Tõenäoliselt on hoidlates kerneli versioonid, mis on vanemad kui ametlikul veebisaidil, kuid need allikad peaksid sisaldama teie Linuxi distributsiooni tootja plaastreid ja parandusi. See lähenemine on eelistatavam, välja arvatud juhul, kui vajate uut tehnoloogiat või funktsiooni, mida toetavad ainult uuemad tuumad. Saate vaadata kõiki oma süsteemi hoidlates sisalduvate kerneli allikate versioone, tippides terminali (kehtib Ubuntu Linuxi jaoks, teistel distributsioonidel võib olla erinev paketinimi):

apt-cache otsing linux-source

Käsk loetleb saadaolevad paketid:


Nagu näete, on mul ainult praeguse versiooniga pakett ja versiooniga 3.5 (tegelikult on praegune kerneli versioon ka 3.5). Sel viisil saadaolevate tuumade loendi laiendamiseks tasub ühendada täiendavaid hoidlaid. Kerneli saame käsuga: sudo apt-get install linux-source

linux-source on lähtekoodi paketi nimi, see võib teie puhul erineda.
Pärast käsu lõpetamist ilmub kataloogi /usr/src fail, minu puhul linux-source-3.5.0.tar.bz2. Läheme kausta, pakkime arhiiv lahti ja loome mugavuse huvides sümboolse lingi:

Cd /usr/src sudo tar -xjvf linux-source-3.5.0.tar.bz2 sudo ln -s linux-source-3.5.0 linux

Kui vajate kerneli uusimat versiooni, saate selle alati alla laadida saidilt kernel.org. Väärib märkimist, et sait sisaldab nii tuumade stabiilseid versioone kui ka testimiseks ja täiustamiseks mõeldud versioone (tavaliselt sisaldab nende nimi lühendit "RC" - väljalaskekandidaat). Kui te ei soovi süsteemiga tarbetuid probleeme, soovitan teil alla laadida stabiilne versioon:

Salvestage lähtearhiiv kausta /usr/src. Saadud arhiivi lahtipakkimiseks peate võib-olla installima täiendavaid utiliite:

sudo apt-get install xz-utils

Nüüd, nagu kerneli hoidlatest allalaadimise puhul, peame lähtearhiivi lahti pakkima ja looma lingi:

Cd /usr/src sudo tar -xpJf linux-3.8.5.tar.xz sudo ln -s linux-3.8.5.tar.xz linux

konfigureerimine ja koostamine.
Siin jõuame kõige huvitavama juurde. Enne alustamist installime mõned lisapaketid:

sudo apt-get install build-essential kernel-pakett libncurses-dev

Loome uue konfiguratsiooni, mis põhineb praegu süsteemis kasutataval tuumal:

Cd /usr/src/linux sudo make oldconfig

Kui seadistate kerneli uuemat versiooni, kui süsteemis saadaval on, siis on tõenäoline, et sellel on parameetreid, mida praeguse kerneli konfiguratsioonis ei ole. Sel juhul palub programm teil teha valiku, vaikeväärtused saate jätta lihtsalt sisestusklahvi vajutades. Igal juhul pole konfiguratsioon veel lõppenud. Nüüd saame konfiguratsioonimenüü kaudu teha vajalikud seaded:

sudo make menuconfig

Terminal käivitab konfiguratsiooniprogrammi:

Siin on konfiguratsioonivalikud jagatud osadeks, et nendes oleks lihtsam navigeerida. Nagu ma eespool ütlesin, pean tuumasse lisama krüptoloopi toe. Selleks minge jaotisse "Seadmedraiverid" ja sealt alamjaotisse "Seadmete blokeerimine".

Leiame parameetri “Cryptoloop Support”, selle kõrval on täht “M”, mis tähendab, et krüpteerimisseadmete tugi lisandub kerneli moodulina, mida saab sisse lülitada käsuga modprobe. Peame lisama selle tehnoloogia toe otse kernelisse, et seda alati toetada. Liigutage fookus parameetrile "Cryptoloop Support" ja vajutage tühikuklahvi. Täht "M" tuleks asendada sümboliga "*", mis tähendab, et selle tehnoloogia tugi "õmmeldakse" tuuma sisse. Olge ettevaatlik, tühik tähendab, et tehnoloogiat ei toetata üldse.

Vajutage klahvi "Tab" ja vajutage nuppu "Välju", kuni teil palutakse muudatused salvestada:

Vastame "jah". Oleme seadistamise edukalt lõpetanud!
Alustame koostamist. Esiteks eemaldame eelmistest ehitustest alles jäänud failid, kui käivitad ehitamist esimest korda, ei ole vaja seda käsku käivitada: sudo make-kpkg clean

Alustame kompileerimist:

sudo make-kpkg -j4 --initrd --append-to-version=-mykernel kernel_image kernel_headers

J4 on lipp, mis määrab, mitu lõime kompileerimiseks kasutada. See kiirendab oluliselt mitmetuumaliste protsessorite kompileerimist. Number 4 tähistab siin 4 voogu. Seadistage nii palju lõime, kui palju teie protsessori tuumasid süsteemi "näevad".
-mykernel - eesliide, mis näitab, et kernel on käsitsi ehitatud, saate seda muuta, tegelikult see ei mõjuta midagi.

Siin algab kompileerimisprotsess. See võib kesta 10 minutit kuni mitu tundi, olenevalt teie arvuti võimsusest.

Kerneli installimine süsteemi

Pärast kompileerimise lõppu peaks kataloogi /usr/src ilmuma kaks faili laiendiga "deb". Need on meie uue kerneli installipaketid ja neid saab installida utiliidi dpkg abil:

sudo dpkg -i linux-image-3.8.5-mykernel_3.8.5-mykernel-10.00.Custom_i386.deb
sudo dpkg -i linux-headers-3.8.5-mykernel_3.8.5-mykernel-10.00.Custom_i386.deb

Palju õnne! Kernel on installitud, nüüd käivitub süsteem vaikimisi selle tuumaga, kuid kui teil on probleeme uue kerneliga, saate alati käivitada vanaga, valides selle alglaadimiskuval - Grub. Sellega lõpetan tänase artikli ja soovin teile edu, kallid lugejad!

Suures GNU/Linuxil põhinevate operatsioonisüsteemide perekonnas. Kindlasti olete kuulnud, et need koodid on avatud, vabalt levitatavad ja tasuta. Öelge, võtke, kes tahate, kuid järgige ainult GPL-i litsentsi tingimusi, mis pole sugugi keeruline. Kuid vähesed inimesed selgitavad piisavalt selgelt, mis on selle nähtuse olemus, mis on selle tähendus. Seetõttu proovime sellist selgitust.

Alumine rida

Kõik sai alguse 1991. aastal, kui Soome tudeng Linus Torvalds tegi avalikult kättesaadavaks uue Linuxi operatsioonisüsteemi tuumakoodid. Miks avamaal? Sest ta toetas. Kuid seda te ilmselt juba teate (või kergesti õpite). Pöörame tähelepanu punktidele, mis nõuavad selget liigitust.

Linux

Linux ei ole operatsioonisüsteem, vaid lihtsalt kernel. Tarkvaralahenduste komplekt, mis on vajalik arvuti käivitamiseks ja selle komponentide ("riistvara") toimimiseks, teiste programmide toimimise aluseks.

GNU

GNU on lihtsate rakenduste komplekt, mis on eksisteerinud juba enne ülalmainitud kerneli tulekut. Need programmid võimaldavad inimesel arvutiga vähemalt veidi suhelda, mitte ainult ekraani vahtida. Loomulikult on ka lähtekoodid avatud.

GNU/Linux on juba OS, mitte ainult kernel. GNU asemel võib olla midagi muud, näiteks Androidi Dalvik.

Autojuhid

Tehnika areneb, arvutiriistvara hulk kasvab, seadmed arenevad. Ja iga toode vajab töötamiseks draiverit. Seega on mõned draiverid otse kerneli külge keeratud. Kui need on tasuta (tasuta tarkvara), nagu GNU ja Linux, on koodid tingimata avatud lähtekoodiga.

Noh, kui sobivaid tasuta draivereid pole, siis ei saa midagi teha, peate installima patenteeritud draiverid. See, kas nende koodid on avatud, sõltub ainult riistvaratootjatest.

Rakendused

Avatud lähtekoodiga kategooriasse kuuluvaid kasutajarakendusi tehakse sageli erinevate operatsioonisüsteemide jaoks mõeldud versioonides. Need ei ole Linuxi osad. Tõsi, mõned on teatud distributsiooni või graafilise kesta jaoks standardsed, kuid ei sisaldu kernelis.

Loomulikult on kõikide variantide koodid avatud – kõikide toetatud operatsioonisüsteemide jaoks. Sama olukord - erinevate kommunaalteenustega.

Kes teeb

Rühm entusiaste täiustab Linuxi tuuma. Mõnikord teeb kaasa Linus Torvalds ise. Arhiveeritud kerneli koodi saab iseseisvaks kompileerimiseks alla laadida saidilt kernel.org.

Autojuhid, kui need on tasuta, valmistavad sageli ka kogukonnad. Printerile, skannerile, videokaardile, Wi-Fi adapterile... Üldiselt palju asju.

Näiteks Gutenprinti pakett, mis on terve komplekt draivereid paljudele printerimudelitele. Lisaks on prindikvaliteet sageli võrreldav tootjate "natiivsete" draiverite kasutamisel välja antud näitajatega.

Mõnikord avavad riistvaratootjad ise koodi mõne sobiva litsentsi, sama GPL või BSD all. Sellised sündmused tekitavad avatud lähtekoodi toetajatele tavaliselt kirjeldamatut rõõmu.

Nagu võite arvata, loovad kohandatud rakendusi ka kogukonnad või üksikud entusiastid. Kuid ka äriettevõtetele meeldib end reklaamida, pakkudes avalikkusele mõnda oma toodet vaba tarkvara kujul. Ilmekas näide: OpenOffice.org kontorikomplekti on toonud Oracle juba pikka aega.

Lisaks teevad mõned ettevõtted isegi terveid väljamakseid. Red Hat, SuSE, Xandros võtavad raha kasutusvalmis binaarehituse eest, kuid neil ei ole lubatud koode peita. See tähendab, et need koodid, olenemata sellest, kuidas neid ümber töödeldakse, peavad jääma avatuks. See on GPL-i litsentsi nõue.

Kes seda kasutab

Programmeerija vaatab tarkvara ja mõtleb: "See on hea asi, kuid seda saab teha paremini!" See laadib arendaja saidilt alla koodiga arhiivi ja täiustab seda. Sellega liitub grupp spetsialiste, kes soovivad osaleda – ja sünnibki uus projekt.

Nii ilmuvad “kahvlid” (inglise keelest “fork”, mis antud juhul tõlkes tähendab “haru”). Uued programmid olemasolevate koodide baasil.

Näiteks heast helipleierist Amarok tegi veelgi paremaks - Clementine. Ja kontorirakenduste paketist OpenOffice.org - LibreOffice, mis on kiiresti arenev ja paljulubav.

Seega kloonitakse selle põhimõtte kohaselt terved operatsioonisüsteemid. Tasuta OS CentOS on koostatud tasulise Red Hat Enterprise Linuxi lähtekoodidest. Muidugi närivad Red Hati ülemused ilmselt pettunult küünarnukist, aga nad ei saa midagi teha, sest lähtekood ei kuulu neile.

Kuid sel juhul taandub revideerimine peamiselt registreeritud logode väljalõikamisele, kuid ilma koodi kohustusliku avatuseta oleks CentOS-i olemasolu põhimõtteliselt võimatu.

Järeldus

Avatud lähtekoodi kood on nii konkreetselt Linuxi kui ka üldiselt kogu vaba tarkvara põhikontseptsioon. Koode saab kasutada oma projektide jaoks, kogukonna turvalisust kontrollida, uurida, arenduses osaledes oma oskusi täiendada, parandada ja aidata inimesi nende õilsal eesmärgil.

Kas konkreetse GNU/Linuxi distributsiooni jaoks on teie jaoks oluline binaarne tarkvaraversioon? Kas draiver pole tuuma osa? Võtsime arhiivi koos lähtekoodiga, pakkisime lahti, lugesime montaažijuhiseid, koostasime, installisime – ja kasutame. Te ei sõltu tootjast, ei ole seotud konkreetse operatsioonisüsteemiga – see on tõeline vabadus.

Varasemad väljaanded:

Ma kuulen sageli, et inimesed viitavad Linuxi tuumale kui Linuxi tuuma näidisele ja ma ei leia ühestki otsingumootorist vastust, miks seda pildiks nimetatakse.

Kui ma mõtlen pilt, Ma mõtlen ainult kahele asjale, kas plaadi koopiale või fotole. Muidugi, pagan, see pole fotopilt, miks siis seda pildiks nimetatakse?

5 Lahendused koguvad veebivorme "Miks nimetatakse Linuxi kernelit "pildiks"?"

Unixi alglaadimisprotsessil oli (oli) ainult piiratud võimalused programmide intelligentseks laadimiseks (teekide teisaldamine, laadimine jne). Nii et algne programm oli kettale salvestatud täpne pilt, mis tuli mällu laadida ja kerneli saamiseks "kutsuda".

Alles palju hiljem lisati sellised asjad nagu (de-comp) ja kuigi nüüd on installitud võimsamad laadijad, on pildi nimi kinni jäänud.

Sõnal pilt on ka definitsioon "Fail, mis sisaldab kogu reaalajas töökoopia loomiseks vajalikku teavet."

See ei tähenda, et "pilt" oleks lihtsalt plaadi 1:1 koopia. Sest fotograafia on reaalsus täpselt Niisiis sama, nagu püüdmise puhul, on käivitatava programmi (või kerneli) kujutis programmi olekus, kus seda saab laadida (või lahti pakkida) süsteemimällu täpselt, sellisena, nagu see on, ja seejärel antakse selle üle kontroll. See programm saab seejärel sellest olekust järjepidevalt töötada. Seega on Linuxi kerneli kujutis Linuxi tuuma kujutis (olekupilt), mis võib töötada iseseisvalt, andes sellele kontrolli.

Praegu laeb bootloader sellise pildi kõvaketta failisüsteemist (vaja on draiverit), asendab selle ja annab seega ka kontrolli. Arvuti käivitamise protsess viiakse läbi mitu korda, kuni operatsioonisüsteem hakkab tööle. Seda nimetatakse kettlaadimiseks. Või kui väiksem programm (ahel) laadib keerukama, nimetatakse seda bootstrapiks.

BIOS laadib alglaaduri, mis on ühtlasi pilt, näiteks boot.img faili grub puhul. See boot.img ei ole fail (kui grub on installitud); see on selle osa nimi, mis on põhikäivituskirjes (MBR). Kui laadite faili faili, siis on see pilt failina, mida ei kirjutata kõvakettale, vaid kirjutatakse faili. See on ka esitus (kujutis) varaseimast olekust, milles grub saab ülejäänud osa laadida. grubil on siis oma mehhanism, kuidas ennast teiste piltide laadimisega täielikult käivitada. Seda tähistavad grubi erinevad etapid. Seejärel laadib alglaadur kerneli kujutise, asendades end selle faili ekstraktitud sisuga.

Iidne ajalugu. termin "image" pärineb vanast "Digital Equipment Corporation" terminist kompilaatori->linkeri väljundi jaoks. fail on pilt, mis on loodud koodi jne tõlgendamisel linkeri kaudu, et luua teie kujundusest käivitatav "pilt".

Matemaatikas on tuum mõne vastenduse kujutise alamhulga pöördkujutis, olenemata sellest, kas alamhulk oli võrdne kooddomeeni identiteedielemendiga. Olen kindel, et need nimed on tuletatud matemaatilistest mõistetest, kuna need on oluliselt seotud erinevad valdkonnad matemaatika. Arvestades, et Unix võeti vastu akadeemilises keskkonnas, on võimalik, et selle tuuma kasutamine ja nende sõnade kujundlikkus on sama.

Kui teil on kogum, mis on teatud tasemel teavet "täieliku" OS-i kohta, kui see teave moodustab ka rühma, saate selles komplektis määratleda rühma homomorfismi või põhimõtteliselt vastendada teiste komplektidega, mis on erineva suurusega, siis originaalkomplekt, kui nad "austavad" originaalkomplekti struktuuri, mis sellest bändi tegi. Näete, et see võib muutuda kõrvale, et sobitada komplekt väiksema hulgaga või mõne komplekti alamhulk, kus alamhulk on väiksem.

Pilt. Grupi homomorfismi kuvand ja ühised funktsioonid ja vastendused on vaid mingi hulga alamhulk, mille elemendid on tegelikult sobitatud. Seda funktsiooni ei saa kuvada iga elemendi puhul ja neid elemente ei kaasata pildile.

Tuum on põhimõtteliselt ainult lähtekomplekti elemendid, mis on pildiga sobitatud, kuid kuvavad ainult pildi identiteedielementi. Põhimõtteliselt meeldivad pildil olevad elemendid, mis kuvavad 0.

Kui pilt on väiksema suurusega kui algne komplekt, siis näeme, et ühele elemendile tuleks vastendada mitu elementi. Näiteks võib tuumast olla mitu elementi, mis on pildile vastendatud, ja me juba teame, et need kõik peaksid vastama 0-le.

Näeme, et kui valime algse hulga binaarsete või 1 ja 0 lõplike jadadena ning koodomeen (vastandatud hulk) on samuti binaarsed jadad, siis saame selliseid asju konstrueerida siis ja ainult siis, kui sobiv rühmastruktuur suudab olema kindlaks määratud (see on natuke sügavam ega ole seotud küsimusega).

Seetõttu näeme täie kindlusega, et OS-i "tuum" ja "pilt" on täielikult määratletud ja neil on matemaatiline tähendus. Sõltumata võib-olla muudest terminite kasutusviisidest.