Linuxové jádro

Vysvětlil Makefile jádra Linuxu

Vysvětlil Makefile jádra Linuxu
Ve vývoji softwaru se proces vytváření a správy úložišť velkých kódů může snadno stát velmi složitým.

Pro správu a snížení této složitosti organizují vývojáři softwaru kód do malých souborů, které odkazují na konkrétní moduly. Vývojáři mohou každý z těchto souborů zkompilovat samostatně a poté je propojit a vytvořit finální spustitelný software.

Příkladem toho jsou projekty C vytvořené ze souborů zdrojového kódu v .c rozšíření a softwarová rozhraní ve Windows .h rozšíření. Každý zdrojový soubor se zkompiluje společně se soubory záhlaví, které se mají vytvořit. o objekty propojené pomocí knihoven, čímž vytvářejí spustitelné soubory.

K provedení tohoto procesu používají vývojáři softwaru nástroje, jako je Make, k automatizaci procesu sestavení a požadovaných závislostí souborů. Make používá Makefiles ke správě chování procesu kompilace.

Nástroje GNU Make poskytují sadu pravidel a konvencí používaných k vytváření souborů Makefiles a snižují složitost při zlepšování efektivity.

V tomto kurzu se budeme konkrétně zabývat Makefiles jádra Linuxu Kconfig a Kbuild.

Než začneme, je dobré si uvědomit, že tento článek nepředstírá, že učí vše o systému Kernel Build. Poskytujeme však přehled na vysoké úrovni o vytváření obrazu a modulů vmlinux.

Pokud chcete informace nad rámec tohoto tutoriálu, doporučujeme vám následující zdroj, který vám poskytne lepší informace:

https: // linkfy.do / goMakefilesDocs

https: // linkfy.do / gnuMake

Kernel Makefiles: Přehled

Systém sestavení jádra, nazývaný také konfigurační systém, je základním nástrojem pro ty, kteří jej potřebují, který už nějakou dobu existuje. Ne každý však bude tento systém používat; dokonce i řidiči a další vývojáři softwaru na nízké úrovni jej používají zřídka. Protože to čtete, znamená to, že se chcete dozvědět více o systému sestavení jádra.

Budeme tedy diskutovat o tom, jak se jádro kompiluje, a probereme systém Kbuild a Kconfig, abyste jim lépe porozuměli.

Kernel Makefile má pět základních komponent:

  1. Makefile: Toto je soubor nejvyšší značky umístěný ve zdrojovém kořenovém adresáři.
  2. arch / $ (ARCH) Makefile: Toto je arch Makefile; funguje jako doplněk k nejvyššímu Makefile.
  3. .konfigurace: Toto je konfigurační soubor jádra.
  4. Skripty / Makefile.*: Toto definuje nastavená pravidla pro všechny Makebuildy kbuild.
  5. Kbuild Makefiles: Existuje asi 500 Makebuild souborů Kbuild a není snadné je číst. Zvažte soubor, jako například:

https: // elixír.bootlin.com / linux / latest / source / scripts / Kbuild.zahrnout

Kconfig

Soubor Kconfig obsahuje moduly, které pomáhají při používání make * config. Pomáhá jádru provádět selektivní konfigurace, vytváří modularitu a přizpůsobitelnost procesu sestavování jádra.

Systém Kconfig určuje různé cíle konfigurace. K zobrazení dostupných cílů můžete použít nápovědu značky. Tyto cíle jsou zpracovávány různými programy poskytovanými jádrem během procesu sestavování.

Mezi cíle Kconfig patří:

udělat linux-windriver.gconfig
udělat linux-windriver.xconfig

POZNÁMKA: Chcete-li používat gconfig a xconfig, měli byste mít v hostitelském systému nainstalované vývojové nástroje QT.

Zvažte následující:

Snímek kódu defconfig z následujícího zdroje:

https: // elixír.bootlin.com / linux / v5.9 / zdroj / skripty / kconfig / Makefile # L98

1. defconfig: $ (obj) / conf
2. ifneq ($ (zástupný znak $ (srctree) / arch / $ (SRCARCH) / configs / $ (KBUILD_DEFCONFIG)),)
3. @ $ (kecho) "*** Výchozí konfigurace je založena na '$ (KBUILD_DEFCONFIG)'"
4. $ (Q) $< $(silent) --defconfig=arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) $(Kconfig)
5. jiný
6. @ $ (kecho) "*** Výchozí konfigurace je založena na cíli '$ (KBUILD_DEFCONFIG)'"
7. $ (Q) $ (VYDĚLAT) -f $ (srctree) / Makefile $ (KBUILD_DEFCONFIG)
8. endif
9.
10. % _defconfig: $ (obj) / conf
11. $ (Q) $< $(silent) --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig)
12.
13. configfiles = $ (zástupný znak $ (srctree) / jádro / configs / $ @ $ (srctree) / arch / $ (SRCARCH) / configs / $ @)
14.
15. %.config: $ (obj) / conf
16. $ (if $ (call configfiles) ,, $ (chyba U tohoto cíle na této architektuře neexistuje žádná konfigurace)))
17. $ (Q) $ (CONFIG_SHELL) $ (srctree) / skripty / kconfig / merge_config.sh-m .config $ (konfigurační soubory)
18. $ (Q) $ (VYDĚLAT) -f $ (srctree) / Makefile olddefconfig

Snímek kódu Oldconfig z následujícího zdroje:

https: // elixír.bootlin.com / linux / v5.9 / zdroj / skripty / kconfig / konf.c # L694

1. případ olddefconfig:
2. výchozí:
3. přestávka;
4.
5.
6. if (input_mode == savedefconfig)
7. if (conf_write_defconfig (defconfig_file))
8. fprintf (stderr, "n *** Chyba při ukládání defconfig na:% s \ n \ n",
9. defconfig_file);
10. návrat 1;
11.
12. else if (input_mode != listnewconfig && input_mode != helpnewconfig)
13. pokud (!no_conf_write && conf_write (NULL))
14. fprintf (stderr, "\ n *** Chyba při zápisu konfigurace.\ n \ n ");
15. výstup (1);
16.
17.
18. / *
19. * Vytvořit auto.conf, pokud neexistuje.
20. * Tím se zabrání GNU Make 4.1 nebo starší z vyzařování
21. * "zahrnout / config / auto.conf: Žádný takový soubor nebo adresář "
22. * v Makefile nejvyšší úrovně
23. *
24. * syncconfig vždy automaticky vytváří nebo aktualizuje.conf, protože to je
25. * použitý během sestavení.
26. * /
27. if (conf_write_autoconf (sync_kconfig) && sync_kconfig)
28. fprintf (stderr,
29. "\ n *** Chyba během synchronizace konfigurace.\ n \ n ");
30. návrat 1;
31.
32.
33. návrat 0;
34.

V systému Kconfig je spousta cílů. Mezi běžné patří konfigurace a menuconfig.

Jak již bylo zmíněno, cíle jsou zpracovávány různými programy v hostitelských systémech, a to buď poskytováním grafického uživatelského rozhraní nebo příkazového řádku. Nástroje Kconfig najdete v / scripts / Kconfig ve zdroji jádra.

https: // elixír.bootlin.com / linux / latest / source / scripts / kconfig

https: // elixír.bootlin.com / linux / latest / source / scripts / kconfig / Makefile

Prvním procesem je obvykle čtení souboru Kconfig v kořenovém adresáři, který se používá k vytvoření počáteční konfigurační databáze. Jak proces pokračuje, databáze se aktualizuje při čtení souborů v následujícím pořadí:

.konfigurace
/ lib / modules / $ (shell, uname-r) /.konfigurace
/ etc / kernel-config
/ boot / config - $ (shell, uname-r)
ARCH_DEFCONFIG
arch / $ (ARCH) / defconfig

.konfigurační soubor je poté spuštěn na syncconfig, který přijímá .konfigurační soubor jako vstup. Zpracovává soubor a vydává soubory, které jsou poté klasifikovány do různých kategorií, například:

Kbuild Files

Téměř všechny soubory jádra jsou soubory Kbuild Makefiles, které používají infrastrukturu Kbuild, což je funkce rekurzivní tvorby. Rekurzivní Make je způsob použití nástroje Make jako příkazu v Makefile. Rekurze je velmi užitečná při kompilaci velkého projektu.

Kbuild funguje odkazem na všechny soubory, které jsme zmínili ve výše uvedené části.

Systém Kbuild staví své komponenty pomocí špičkového Makefile, který obsahuje arch Makefiles s názvem arch / $ (ARCH) / Makefile v konfiguračních souborech. Rekurzivně sestupuje do podadresářů vyvolávajících Make na komponentách pomocí rutin ve skriptech / Makefile.*. Kbuild poté staví na sousedním objektu a spojuje je do objektů a vytváří vmlinux.

Další informace o syntaxi používané v Kbuild Makefiles najdete v dokumentaci.

Zvažte následující skript.

https: // github.com / torvalds / linux / blob / master / skripty / link-vmlinux.sh

Soubory objektů o použité k vytvoření vmlinuxu jsou nejprve zkompilovány do příslušných vestavěných .soubory jako var KBUILD_VMLINUX_INIT, MAIN, LIBS. Jsou složeny z vmlinuxu.

https: // github.com / torvalds / linux / blob / master / skripty / Makefile.stavět

Závěr

V této příručce jsme se podívali na systémy Kbuild a Kconfig v systému sestavení jádra a na jeho fungování. Jak jsme zmínili na začátku kurzu, diskutovaná témata jsou široká a nelze je zahrnout do jediného kurzu.

Jak změnit levé a pravé tlačítko myši na počítači se systémem Windows 10
Je úplnou normou, že všechna zařízení počítačových myší jsou ergonomicky navržena pro praváky. K dispozici jsou však myší zařízení, která jsou speciál...
Emulace kliknutí myší vznášením pomocí myši Clickless Mouse ve Windows 10
Používání myši nebo klávesnice ve špatném držení těla nadměrného používání může mít za následek mnoho zdravotních problémů, včetně napětí, syndromu ka...
Přidejte gesta myši do Windows 10 pomocí těchto bezplatných nástrojů
V posledních letech se počítače a operační systémy značně vyvinuly. Bývaly doby, kdy uživatelé museli procházet správci souborů pomocí příkazů. Stejně...