A rendszermag javítása anélkül, hogy újraindítaná a livepatch, a kpatch és a canonical livepatch szolgáltatást,

A legegyszerűbb példa: livepatch

Kezdjük egy nagyon egyszerű kísérletezéssel. Ehhez szükségünk van bármilyen Linux disztribúcióra a rendszermag 4.0 verziójával vagy újabb verziójával (ebben az esetben ez az Ubuntu 16.04, itt és mindegyik parancs példáján keresztül). Az új rendszermagverziókban a "leterhelt" javítások (az úgynevezett livepatch) hozzáadásának funkciója alapértelmezés szerint engedélyezett.
Annak ellenőrzéséhez, hogy működik, először meg kell adnunk a rendszermag fejlécét:

Ezután telepítse a debug rendszermag szimbólumokat:

A parancs végrehajtásakor az Ubuntu 16.04 programban a következő hibaüzenet jelenhet meg:

Ezután az előző parancs hiba nélkül fut le.

Minden készen áll a kísérletre, elkezdheti:

Letöltöttük a rendszermag modul kódját, amely megváltoztatja a fő rendszermag kódot, és módosítja a cat / proc / cmdline parancs kimenetét. Most ezt a modult össze kell állítani. Ehhez hozza létre a következő makefile-t:

Összegyűjtjük a modult, és beilleszti a rendszermagba:

Lássuk, mi történt. Végezzünk el:

A rendszermag paramétereinek standard információi helyett a következő szöveget fogjuk látni:

Amint láthatja, a tapaszt sikeresen alkalmazták.

A letöltött javításokkal kapcsolatos összes információ a / sys / kernel / livepatch könyvtárban található:

A javítást a következő paranccsal lehet kikapcsolni:

Kezdjük a szükséges függőségek beállításával:

A kpatch teljes körű munkája esetén kívánatos a ccache telepítése is.

Ez az, a függõségek fixek. Telepítheti a kpatch-ot:

Kísérletünkben a rendszermag forrásait javítjuk. Az adattárat az Ubuntu aktuális verziójának forráskódjával klónozzuk:

Ha a klónozás befejeződött, a forrásokat az ubuntu-xenial-kpatch könyvtárba másoljuk (ez szükséges a forráskód megváltoztatásához, majd a változtatások alapján létrehozni a javításokat):

Nyissa meg a ubuntu-xenial-kpatch / ubuntu-xenial / fs / proc / version.c fájlt, és tegye a következőket:

Hozzon létre egy javítást a következő paranccsal:

A javítás egy egyszerű szöveges fájl, amely felsorolja a végrehajtott módosításokat:

Ha javítást szeretne hozzáadni a rendszermaghoz, hajtsa végre a következőket:

Amint az az alább említett következtetésből látható, a kimeneten kapjuk a kernel modult. A javítás telepítéséhez csak ezt a modult kell hozzáadnia szabványos módon:

Lássuk, mi következett be:

Canonical Livepatch szolgáltatás

Néhány hónappal ezelőtt a Canonical elindította a hivatalos Canonical LivePatch Service szolgáltatást, amely egyszerű paranccsal segíti a "menet közben" kernelt. Ez a szolgáltatás elsősorban a vállalati szintű felhasználókra összpontosít, ezért felszámítható.
De a hétköznapi felhasználók gyorsan megkapják a legújabb kernelfrissítéseket. Ehhez be kell jelentkeznie az Ubuntu One programmal, és be kell szereznie a tokenet. A token lehetővé teszi, hogy 3 gépre telepítse a programot a canonical-livepatch programban, amely betölti és hozzáadja a javításokat.

Lássuk, hogyan működik a Canonical Livepatch szolgáltatás. Hagyjuk tovább a fenti linket, kapunk egy tokenet, és tovább fogjuk végrehajtani:

A telepítés befejezése után jelentkezünk ki a rendszerből, majd ismét bejelentkezünk és végrehajtjuk:

Ha mindent helyesen végeztünk el, a következő üzenetet kapjuk:

Ezután futtassa a parancsot:

A következtetés azt mutatja, hogy a canonical-livepatch működik, és a legfrissebb frissítések a kernelben vannak telepítve. További információért kérjük, használja a --verbose opciót:

A telepített javításokkal kapcsolatos információk a fent említett könyvtárban / sys / kernel / livepatchban is megtekinthetők:

Kpatch_livepatch_Ubuntu_4_4_0_47_68_generic_14 - ez az utolsó letöltött javítás. A javításnév (14) utolsó számjegyei megegyeznek a kanonikus-élőpatch status parancs kimenetén megadott verziószámmal (lásd fent).

Győződjön meg róla, hogy az új javítócsomag hozzá lett adva, és használhatja az lsmod parancsot:

következtetés

Ha mélyebbre szeretné tanulmányozni a témát, akkor vegye figyelembe a következő linkeket: