A linux kernel építése modern megközelítés (szabadúszó csapat)

Egy jó barátom azt mondta: "Nem bízom abban a Linux rendszergazdának, aki még soha nem fordította le a rendszermagot", és teljesen egyetértek vele, mert csak miután összeállította a rendszermagot és elindította a rendszert, van néhány a belső folyamatok megértése a rendszerben az OS terhelésének szakaszában (és a megvilágosodás jön).

A linux kernel építése modern megközelítés (szabadúszó csapat)

A legtöbb esetben a napi munka eléggé szabályos eloszlás csomag tartalmazza a már összeállított kernel és a mag szerelvényt csak akkor lehet hasznos, az alkalmazás-specifikus foltok vagy hozzon létre egy monolitikus mag fix sor illesztőprogramok beágyazott eszközök. A cikkben tárgyalt kérdések hasznosak lehetnek a jövőben, amikor optimalizált KVM virtualizációs csomópontot építünk ki.

A környezet előkészítése a Linux kernel kiépítéséhez

A rendszermagok Ubuntu Linux-ban történő telepítéséhez a következő csomagokat kell telepítenie:

# apt-get install build-essential checkinstall
# aptitude install libssl-dev libncurses5-dev

A rendszermag forráskódjának megszerzése

A rendszermag forráskódja többféleképpen érhető el:

Nem ajánlom az első opciót, mert ebben az esetben megkapja a legújabb verziót, ami nem tény, hogy még találkozik is, és ami eléggé buta, hogy ne csak a harci szervereken, hanem a munkaállomásokon is használható legyen.

Általában véve magadnak a LTS-verzió (hosszú támogatási ciklusú) használatát a harci kiszolgálókon, és az utolsó stabil változatot a kiszolgálókon kevésbé felelősek és a munkaállomásokon.

Egyébként ez a harmadik lehetőség (töltse le a csomagot a forráskódokról a disztribúciós tárból), mert a javítócsomagokat a disztribútorok karbantartói tartalmazzák, és ahogyan megértitek, megfontoljuk.

Töltse le a jelenlegi rendszermag forráskódját (ahonnan a rendszer jelenleg betöltött), és telepítse a környezetet a telepítéshez:

# mkdir / usr / src / kernel-build
# cd / usr / src / kernel-build
# apt-get forrás linux-image - $ (uname -r)
# apt-get build-dep linux-image - $ (uname -r)

Módosítsa az alapkonfigurációt

A konfiguráció módosítása, amikor a rendszermag-csomagot a fakeroot használatával állítja össze, egy kicsit eltér a tipikus felépítéstől a make menuconfig használatával:

# cd ./linux-4.4.0/
# chmod a + x debian / szkriptek / *
# chmod a + x debian / szkriptek / misc / *
# fakeroot debian / szabályok tiszta
# fakeroot debian / rules editconfigs

Az utolsó editconfigs parancs futtatásakor több alkalommal kérni fogja több konfigurációs fájl szerkesztését:

Szeretné szerkeszteni a config: i386 / config.flavour.generic? [Y / n] n
Szeretné szerkeszteni a config: i386 / config.flavour.lowlatency? [Y / n] n

Miután elérte a szükséges konfigurációs fájlt, és nyomja meg az Y billentyűt (a szerkesztési móddal egyetért), elindul a szokásos make menuconfig, amelyet fent említettünk.

A Linux kernelt egy deb csomagba gyűjtjük

Miután a konfigurációs fájlokat szerkesztették, futtassa a deb csomagot:

# fakeroot debian / szabályok tiszta
# fakeroot debian / rules bináris

Az összeszerelés (meglehetősen hosszú folyamat) eredményeképpen a szükséges deb csomagok a gyülekezési könyvtár gyökerében jelennek meg:

# ls * .deb
# linux-headers-4.8.0-17_4.8.0-17.19_all.deb
# linux-headers-4.8.0-17-generic_4.8.0-17.19_amd64.deb
# linux-image-4.8.0-17-generic_4.8.0-17.19_amd64.deb

A Linux kernel GIT verziójának létrehozása

A verzió letöltéséhez a GitHub programból a következő parancsot kell használni:

A kernel.org-ból történő indításhoz az archívumot ki kell kicsomagolni továbbá:

Az akciók további sorrendjét többféle internetes kiadványban írják le, és leegyszerűsödik egy egyszerű konzolparancssor végrehajtására:

# készíts oldconfig parancsot
# készíts xconfig parancsot
# make make_modules
# make modules_install telepítés

Vegye figyelembe, hogy először használjuk a make oldconfig parancsot. Ez a parancs az aktuális rendszermag paramétereket tartalmazza (a build alatt megadott), és automatikusan alkalmazza őket a létrehozott konfigurációra, és a régi rendszermag új paramétereinek értékeit még nem kérte, és az alapértelmezett értékeket javasolják.

*
* Control Group támogatás
*
Control Group támogatás (CGROUPS) [Y /?] Y
Memóriavezérlő (MEMCG) [Y / n /?] Y
Swap vezérlő (MEMCG_SWAP) [Y / n /?] Y
A Swap vezérlő alapértelmezés szerint engedélyezve van (MEMCG_SWAP_ENABLED) [N / y /?] N
IO vezérlő (BLK_CGROUP) [Y / n /?] Y
IO vezérlő hibakeresés (DEBUG_BLK_CGROUP) [N / y /?] N
*
* CPU vezérlő
*
CPU vezérlő (CGROUP_SCHED) [Y /?] Y
Csoportos ütemezés a következőhöz: SCHED_OTHER (FAIR_GROUP_SCHED) [Y] y
A CPU sávszélességének beállítása a következőhöz: FAIR_GROUP_SCHED (CFS_BANDWIDTH) [Y / n /?] Y
Csoportos ütemezés SCHED_RR / FIFO (RT_GROUP_SCHED) számára [N / y /?] N

A parancs az xconfig egy kényelmes grafikus konfigurátort indít, amely kényelmes, kontextusérzékeny figyelmeztetést tartalmaz a modulok és opciók paramétereiről.

A linux kernel építése modern megközelítés (szabadúszó csapat)

A telep konzol verziójában természetesen szükség van egy másik konfigurációs változatra is:

Ez nem olyan kényelmes, de a konzolban működik. Miután beállította a rendszermagot ízlésének és színének megfelelően, futtassa az utolsó két parancsot, és várja meg az építmény befejezését.

A telepítés befejezése után a rendszermag be lesz telepítve a rendszerbe, és megpróbálhatja újraindítani a kiszolgálót (vagy a munkaállomást). A letöltési szakaszban válassza ki az összeszerelt rendszermagot, és ujjaival keresztezi a rendszerindítást.

A Linux kernel optimalizálása egy munkaállomás számára

Ezért arra a kérdésre jutottunk, hogy valójában hogyan lehet csavarodni.

Ez csak egy kis része azoknak a paramétereknek, amelyeket megfordíthat, és őszintén szólva ezek a legfontosabb paraméterek, amelyek befolyásolhatják a munkaállomás teljesítményét.

BFS / BFQ - nem fogadható el a fő munkaállomás-ütemezőben

Ehhez járul, hogy a szélsőséges, két további BFS ütemező és BFQ (ütemező sorban műveletek és IO-ütemezés), ezek nem fogadják be a kernelbe, bár a felhasználók megerősítik a növekedés válaszidőlecsökkenhet amikor használja őket. Használja őket saját veszélyével és kockázatával.

Ezek egyszerűen telepítve vannak.

BFQ javítások letöltése:

Töltse le a CFQ javításokat:

# patch -p1 <./4.8-sched-bfs-512.patch
# patch -p1 <./0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r11-4.11..patch
# patch -p1 <./0002-block-introduce-the-BFQ-v7r11-I-O-sched-for-4.11.0.patch
# patch -p1 <./0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r11-for.patch
# patch -p1 <./0004-blk-bfq-turn-BFQ-v7r11-for-4.11.0-into-BFQ-v8r11-for.patch

Aktiválja az új ütemezőket a make xconfig segítségével.

A linux kernel építése modern megközelítés (szabadúszó csapat)

BFQ - nem választhatja ki, hogy melyiket használja alapértelmezés szerint, és a munkaállomás betöltésekor át kell váltania.

A linux kernel építése modern megközelítés (szabadúszó csapat)

BFS - viszont a javítás alkalmazása után alapértelmezés szerint aktiválódik.

megjegyzés

A modern Linux-rendszermagokban számos további összeszerelési és konfigurálási módszer létezik.

  • make allmodconfig - Minden lehetséges opció aktiválva van, és mindent, ami be van állítva a modul üzemmódba
  • helyi eyeconfig - Minden betöltött modul átkapcsol a beágyazási módra a rendszermagban

Elég gyakran megkérdeznek, hogyan kell változtatni az alapértelmezett kernel Grub2 és ott őszintén nem olyan egyszerű, mint volt az első Grub és komfort Grub2 beállításokat a munkaállomások jobb, hogy egy ügyes segédprogram grub-testreszabót.

A Grub testreszabás lehetővé teszi az alapértelmezett rendszermag kiválasztását és a grub2 tervének módosítását. A segédprogram telepítéséhez használja a következő parancsokat: