Linuxové jádro: vývoj, popis procesu vývoje, sestavení, instalace, aktualizace. Jak upgradovat jádro Linuxu?

10. 6. 2019

Samozřejmě, nejběžnější jsou dnes operační systémy Windows, vydané společností Microsoft, ale ne všichni uživatelé vědí, že to není vlastně první a určitě ne jediný OS na světě. Jak víte, operační systémy byly původně vyvinuty již v 60. letech minulého století, ale kvůli mnoha specifickým vlastnostem počítačové distribuce v té době se nestaly tak běžnými a představovaly výhradně akademické projekty.

Jak se Linux objevil?

linuxové jádro

Prvním systémem, který přesahoval hranice svého rodiče, je Unix, který se okamžitě rozšířil do různých vzdělávacích institucí a měl zcela otevřenou povahu. Během času bylo rozhodnuto, že zdrojový kód Unixu se skrývá jako obchodní tajemství v důsledku toho se vývojáři museli spokojit s teorií samotnou. Situace se mohla dramaticky změnit po vydání operačního systému Minix, stejně jako jeho nástupce nazvaný Linux. Hlavním rysem těchto operačních systémů je, že obsahují plně otevřený zdrojový kód, jádro Linuxu je přístupné všem uživatelům. Z tohoto důvodu je tento OS dnes druhý nejběžnější.

Co je o něm známo?

V moderní literatuře nelze nalézt tolik konkrétních informací o tom, jak fungují jednotlivé subsystémy, což významně komplikuje vývoj a další zlepšení tohoto OS, jak konstatuje tvůrce předchůdce, studuje pouze teorii, studenti začínají vytvářet příliš jednostranný pohled na to, jak může vypadat jako plnohodnotný operační systém. Opravdu smysluplné věci mohou být jednoduše vynechány, protože teorie se do nich nedostává hluboko.

Stojí za zmínku, že uživatelé vyjadřují velmi velký zájem o fungování jádra Linuxu a v zásadě o celý operační systém. Tak, krátce po zjevení Minix se objevila i samostatná zpravodajská skupina nazvaná USENET, určená výhradně pro diskusi o tomto systému. Po několika týdnech měla tato skupina více než 40 000 odběratelů, z nichž většina se snažila přidat do systému mnoho příležitostí a snažila se je mnohem větší a lepší. Každý den stovky lidí po celém světě přemýšleli o tom, jaké další nápady a fragmenty kódu mohou být navrženy.

Mnozí se však ptají, proč je v jádře Linuxu k dispozici tak málo literatury, ale ve skutečnosti to může být několik základních důvodů.

Obchodní hodnota dokumentace

jak aktualizovat linuxové jádro

Po vydání Unixu byly jeho kódy známým masám, v důsledku čehož byly aktivně studovány po celém světě. Nejslavnější knihou popisující tento systém byl Lions Commentary on Unix, který byl poprvé publikován již v roce 1977. Tato kniha popsala práci tohoto operačního systému co nejpodrobněji, v důsledku čehož byla použita v různých univerzitních kurzech věnovaných studiu operačních systémů. V průběhu času se však ukázalo, že Unix se postupně stává komerčním produktem, v důsledku čehož bylo úplně zakázáno studovat zdrojový kód na různých kurzech, takže by nebylo ohroženo postavení obchodního tajemství.

Jak říkají odborníci, abyste vytvořili předpoklady pro skutečně úspěšnou soukromou firmu, musíte nejprve vytvořit úplně uzavřenou komerční infrastrukturu, pomocí níž můžete porozumět kódu a měla by fungovat výhradně pro společnost. Jakékoli utajení informací o architektuře je velmi efektivní strategie pro řízení projektu, kde existují otevřené zdrojové kódy.

Obtížné zvládnutí textů

Popis jádra linuxu

Křivka nákladů potřebná pro detailní studium jádra Linuxu se stává strmějším a delším, protože systém se neustále stává složitějším a jeho objem se zvyšuje.

Správná interpretace programů je dnes spíše vážným problémem a spočívá ve skutečnosti, že není vždy dost jen pro získání vlastních zdrojů. V případě, že je systém nebo program napsán v poměrně nízkém jazyce, jako je například Cobol, Fortran nebo C, a také má špatnou kvalitu dokumentace, pak se veškerá hlavní konstrukční řešení úplně rozpustí do kódovacích triviálů, v důsledku čehož vyžadují kompletní rekonstrukci. V takových případech může být hodnota efektivnější dokumentace, včetně podrobného popisu architektury a specifikace rozhraní, nakonec dokonce vyšší než hodnota samotného zdrojového textu.

Bylo navrženo jeden možný přístup Linus Torvalds, který byl vývoj Linuxového jádra. Navrhl úplnou srozumitelnost zdrojového kódu, tj. Poskytnutí mimořádně srozumitelné struktury, uživatelsky přívětivých rozhraní, jakož i dodržování zásady "udělej trochu, ale udělej to kvalitativně".

Pokud hovoříme o přístupu navrhovaném Andrewem Mortonem, nabízíme zde další komentáře přímo v samotném zdrojovém kódu, aby čtenář pochopil konečný záměr programátora.

Jaké jsou rozdíly mezi jádrem Unixu a Linuxem?

Samozřejmě, popis jádra Linuxu se výrazně liší od základního popisu Unixu, ale mnoho neví, jaké jsou tyto rozdíly.

Kvůli stejnému rozhraní API i společnému původu jsou moderní jádra Unixu velmi podobné a výjimkami jsou některé monolitické statické binární soubory, které existují jako velké spustitelné obrázky, které běží pouze jednou a používají jednu kopii adresního prostoru. Aby bylo zajištěno běžné fungování systému Unix, je nutné zajistit kompletní systém s řadičem paměti stránkovací paměti, pomocí něhož bude možné v systému zajistit účinnou ochranu paměti, a každý jednotlivý proces poskytne svůj vlastní virtuální adresový prostor.

Linuxové jádro není založeno na konkrétním systému Unix a je zcela monolitické. Navzdory tomu jeho struktura poskytuje určité vlastnosti mikronucleární architektury.

Rozdíly

instalace jádra linuxu

Existuje několik rozdílů, které vám umožní pochopit, jak rozpoznat Linuxové jádro:

  • Za prvé stojí za zmínku možnost podporovat dynamicky načtené moduly. Navzdory skutečnosti, že jádro tohoto operačního systému je zcela monolitické, je dále podporována schopnost dynamicky načítat a uvolňovat kód v případě takové potřeby. Tato funkce se původně objevila ve verzi 0.99 a přispěla k tomu Peter MacDonald.
  • Jádro je schopné podporovat symetrické vícenásobné zpracování. V drtivé většině komerčních verzí operačního systému Unix je tato funkce podporována, ale v tradičních implementacích je tato podpora častěji nepřítomná.
  • Linuxové jádro je preemptivní, to znamená, že dokáže úplně vytáhnout úlohu, i když pracuje v režimu daného jádra. Mezi většinou komerčních implementací má preemptivní jádro operačního systému Unix pouze systémy IRIX, Solaris a Unix.
  • V Linuxu bylo obvyklé používat úplně jiný přístup k implementaci vláken, v důsledku čehož se prakticky neliší od standardních procesů. Pokud je z pohledu jádra uvažujeme, lze říci, že všechny procesy jsou zcela totožné, jen některé se vyznačují dostupností společných zdrojů.
  • Linuxové jádro, které popisuje, který vývojový proces bude zobrazen později, nemá některé funkce Unixu, které byly špatně implementovány. To platí zejména pro STREAMS a některé další.

Moduly

jak rozpoznat linuxové jádro

I přes skutečnost, že systém je monolitický, může být použit pro dynamické vkládání nebo odstranění kódu jádra v době operace. Jádrové načítané objekty jsou moduly jádra Linuxu.

Základem modulu je standardní program, protože má také vstupní a výstupní body a je umístěn v binárním souboru. Je však třeba poznamenat, že moduly mají přímý přístup k různým funkcím a jádrovým strukturám. U programů, které jsou umístěny v uživatelském prostoru, je tento přístup omezen pomocí rozhraní knihovny kompilátorů.

Moduly se účastní řady procesů, s nimiž je operační systém spojen, včetně aktualizace jádra Linuxu. Některé funkce mohou být k dispozici výhradně pro ty moduly, které jsou distribuovány pod licencí GPL, zejména to znamená schopnost pracovat s frontami procesů.

Montáž

Linuxové jádro je vytvořeno pomocí specializovaného programu Make. Jakmile získáte zdrojový kód jádra, musíte rozbalit archiv linux-2.6.18.tar.bz2, který se provádí pomocí speciálního nástroje Tar, který se otevírá jménem superuživatele.

Příkaz make defconfig vám umožní použít standardní konfiguraci pro tuto architekturu, ale měli byste pochopit, že ve většině případů to nestačí, takže musíte ručně konfigurovat jádro. Pro volání konfiguračního programu jádra zadejte příkaz make menuconfig. Všechny další informace týkající se parametrů příkazu make se nacházejí v samostatném souboru README.

Chcete-li spustit jádro v minimální konfiguraci, postačí jednoduše určit ovladač řadiče IDE, který používáte v části "Podpora čipové sady PCI IDE". Dále byste měli věnovat pozornost části "Souborové systémy", kde by měly být označeny současné systémy souborů.

Vytvoření jádra se spustí po stisknutí příkazu make. Ve většině případů se používá příkaz make -j2, protože bude možné aktualizovat jádro Linuxu mnohem rychleji. V tomto případě parametr -j2 označuje, že se spouštějí současně dvě spouštěcí vlákna.

Pozor

linuxové moduly jádra

Provádění experimentů s jádrem může vést k velmi odlišným škodlivým procesům, protože ne každý odborník může aktualizovat jádro linuxu. Důsledky mohou být nejzávažnější, včetně úplného selhání systému a úplného zničení informací na vašem disku. Z tohoto důvodu je pro zajištění maximální bezpečnosti doporučeno používat pouze samostatnou distribuci, která je nainstalována na virtuálním stroji.

Kromě zabezpečení můžete jej použít k dosažení jednotné konfigurace všech počítačů, které byly zapojeny do tohoto postupu. Doporučujeme používat Slackware Linux jako takovou distribuci, protože používá nemodifikované softwarové komponenty. VMware nebo QEMU mohou fungovat jako virtuální počítač, ale to není nutné.

Instalace jádra Linuxu trvá asi 20 minut, zatímco stojí za zmínku, že sestavení jádra, které je postaveno podle standardní konfigurace, lze provést bez vytvoření diskety RAM, protože v tomto případě nedojde k vytvoření žádných důležitých ovladačů bootování.

Vývoj

vývoj linuxového jádra

Jádro je sada rozhraní nazývaných systémová volání, která zajišťuje interakci mezi různými aplikačními programy, které pracují v uživatelském prostoru, stejně jako hardware systému. Například při práci s jednotlivými soubory nástroje nemusí brát v úvahu typ pevného disku a souborový systém, který se na něm používá.

Prostřednictvím systémových volání je zajištěna záruka stabilního a bezpečného provozu systému. Vzhledem k tomu, že jádro je prostředníkem mezi různými programy a systémovými zdroji, mohou rozhodovat o udělení přístupu v plném souladu s právy uživatele, stejně jako řada dalších kritérií.

Vývoj aplikačních programů se provádí pomocí specializovaných rozhraní softwarových aplikací. V tomto případě není potřeba provést korelaci mezi rozhraními, které používají aplikace, a rozhraními poskytovanými samotným jádrem. Pro několik operačních systémů může existovat naprosto totožná rozhraní API, zatímco její implementace může být vynikající. Například Linux a systém FreeBSD, o kterých je známo, že plně vyhovují standardu POSIX, v důsledku čehož většina aplikací napsaných speciálně pro jeden operační systém může být v případě potřeby později převedena na jinou.

V určité části je rozhraní s funkcemi systému poskytováno pomocí knihovny C. Funkce printf vám například umožňuje vytvořit řádek odpovídající zadanému formátu, v důsledku čehož se tento dřez přenese do volání systému zápisu, který ho odešle na standardní výstupní zařízení, což může být například terminál .

Navíc samostatná knihovna jazykových funkcí C také poskytuje poměrně velkou část standardu POSIX API. Zejména pomocí příkazu strace, je-li to nutné, lze podrobně sledovat výzvu konkrétního programu na jádro, pokud se provádí pomocí systémových volání. Z tohoto důvodu se tento příkaz často používá při výskytu chyb, ladění je a také zjištění příčiny jejich výskytu.

Mimo jiné je třeba poznamenat, že Linux má naprosto jedinečnou implementaci podprocesů, protože neexistuje žádný rozdíl mezi vlákny a procesy. Multithreading je organizován jako proces se sdílenými zdroji, zatímco v jádře jsou také samostatné podprocesy, které se tam provádějí výhradně. Nicméně jejich plánování a provádění se provádí stejným způsobem jako u standardních procesů. Kdykoliv je to možné, všechny programy spouštěné v jádře jsou označovány jako samostatné úlohy, zatímco programy spuštěné v uživatelském režimu se nazývají procesy.

Za zmínku stojí, že v moderních systémových procesech používají současně dva virtuální zdroje.