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: