Módosítanunk kell a rendszermag Linux
Gyakran Ismételt Kérdések Linux kernel listán - ez felragasztani a tapaszt a kernel, vagy pontosabban, hogyan patch egy kernel alkalmas. Ebben a dokumentumban, annak az a magyarázata.
Amellett, hogy a magyarázatot, hogyan kell alkalmazni, és megszünteti foltok, itt van egy rövid leírást a szerkezet a különböző ágazatok a mag (és példát, hogyan kell alkalmazni az egyedi tapaszok).
Mi a tapasz (tapasz)?
Patch, vagy tapasz - egy kis szöveges dokumentum, amely tartalmazza a lényege a változás két különböző változatai forráskód. A tapaszok segítségével létrehozott „diff” program. A helyes alkalmazását a tapasz, amit tudnod kell a melyek alapján jött létre, és amelyben egy új változata a patch fog fordulni a kernel forrásokat. Mindkét is képviselteti magát a metaadatfájlt és a tapasz a neve.
Hogyan alkalmazza vagy elveti a tapasz?
A tapaszt egy „patch” programot. Ez a program beolvassa a különbség fájlt (vagy tapasz) és változtatásokat tesz a megfelelő helyeken a forráskódot.
Foltok a Linux kernel generálja képest a szülő könyvtárat tartalmazó kernel forrásokat.
Ez azt jelenti, hogy a megadott elérési út a patch fájl tartalmazza a könyvtár nevét kernel forrásból származik, amely a tapasz keletkezett (vagy más könyvtár nevek, mint a #xab; a / # xbb; vagy #xab; b / # xbb;).
Mivel ez a név nem valószínű, hogy megfeleljen a nevét a gépen könyvtárba kernel forráskód (bár gyakran segít, hogy a patch jött létre egy kernel), akkor bemegy a könyvtárba, amely a rendszermag forráskódját, majd öntsük el az első elem a utazás fájlnevek a patch fájlt annak használata előtt (mert ez a legfontosabb, hogy p1 „patch” program).
Hogy megszünteti az alkalmazott tapasz, a gomb -R. Például, ha a tapaszt az alábbiak szerint:
majd törölni, akkor:
Hogyan fájlmásoláshoz tapasz / patch „patch” programot?
Ez (és más Unix-szerű operációs rendszerek) is történhet több módon. Az összes alábbi példában a, adok a fájlt (csomagolja egy) programot a szabványos bemenetre, a következő szintaxis:
Program „patch” is át a fájl nevét a -i kapcsolót, mint a következő példa:
Ha a patch fájlt tartalmazza az archívumban gzip vagy bzip, és nem akarja, hogy csomagolja ki előre, akkor hívja a „patch” az alábbiak szerint:
Ha a patch fájlt tartalmazza az archívumban, és azt szeretnénk, hogy bontsa ki manuálisan használat előtt (az alábbi példákban azt feltételezzük), megteheti:
Ez ad egy sima szöveges fájl, akkor át a program patch "a szabványos bemenet vagy a -i kapcsolót, amit akar.
Többek között érdekes kulcsok „patch” program -s, arra kényszerítve a program nem jeleníti meg az üzeneteket, kivéve a hibaüzeneteket, amely lehetővé teszi számukra, hogy jobban megfigyelni és kulcsfontosságú --dry-run ami a program könnyű, hogy egy listát, hogy mi fog történni, de valójában semmi sem változott. Végül --verbose kapcsoló hatására a program patch "a maximális kimenő adatok igényeit, hogy mi történik.
alapvető hibák
Amikor a „patch” programot alkalmazza a javítást, megpróbálja ellenőrizni a fájl különböző módon. Különösen azt ellenőrzik, hogy a fájl érvényes patch fájlt, és a kódot környező bitek módosítani kell, összhangban a keretében a tapaszt.
Ha a „patch” programot úgy véli, hogy a tapasz valami nem stimmel, ő választhat egyet a lehetőségek közül a viselkedés - megtagadja elvégzi a változtatásokat és kilép, vagy meg kell találnia a módját, hogy a tapaszt néhány változtatással.
Egy példa a helyzet #xab; hogy valami nincs rendben # xbb;, melyik program megpróbálja kijavítani - az, amikor a kontextus változások vannak jelen, a sorok, de van másik szobában. Így megtörténhet, például, ha a „patch” program lehetővé teszi változások a fájl közepén, de valamilyen oknál fogva, egy pár sort a fájl elején került vagy eltávolítani. Ha minden más rendben van, a program tipikusan beállítja sorszámok és alkalmazza a javítást.
Amikor egy „patch” program hatálya tapaszt előtti módosítását, azt mondja, hogy a tapasz alkalmazásának a „fit” ( „pihe”).
Óvatosnak kell lenned ezekkel a változásokkal, mert még ha minden jobbra néz, ez nem mindig van így, és valami baj lehet.
Ha a program futása a változásokat, hogy ő nem is ezt a roham, a lány visszautasítja őket, és létrehoz egy kiterjesztésű fájl .rej (elutasításához fájl). Akkor olvasd el, hogy megtudja, pontosan milyen változtatásokat nem lehetett alkalmazni, és rögzíteni valamit, ha akar.
Ha nem vonatkoznak a forráskódját kernel hivatalos javítások és csak a javítások a kernel.org erőforrás, azok alkalmazására a megfelelő sorrendben, és nem teszik jogosulatlan módosítását a kernel forrást, akkor soha nem fogja látni az üzenetet „fuzz” vagy „elutasítják 'a program' patch”. Ha ők ki, ez azt jelzi, kár, hogy a helyi forrás vagy a letöltött patch. Meg kell próbálnia újra feltölteni a foltot, és ha ez nem oldja meg a problémát, töltse le a teljes forráskódját a kernel.org.
Nézzük meg más jelentések is létrehoz egy „patch” programot.
Ha a program leáll, és megjelenik a következő üzenet: „Fájl javítás”, akkor nem tudta megtalálni a patch fájlt. Ez általában azt jelenti, hogy elfelejtette, hogy meghatározza -p1 kulcs, vagy nem a megfelelő könyvtárban. De néha ez történik, ha alkalmazza a tapaszt, amelyre szüksége van a kulcs -p0 nem -p1 (vizsgálja meg egy patch fájlt érte, és ha igen, ez egy emberi hiba, hozzon létre egy tapasz, és ez javítható).
Ha olyan üzenetet kap, „Hunk # 2 sikerrel járt 1887 pihe 2 (offset 7 sor).” vagy hasonló, ami azt jelenti, hogy a „patch” programban szabályozott alkalmazni változások (ebben az esetben kellett költöznie 7 sor attól a helytől, ahol voltak, hogy a rájuk vonatkozó vált lehet alkalmazni). Az eredményül kapott fájl viszont jó vagy rossz attól függően, az okokat, amelyek a forrás fájl nem ugyanaz volt, mint várták. Mivel gyakran előfordul, ha megpróbálják felragasztani a tapaszt a rossz kernel.
Ha olyan üzenetet kap, „Hunk # 3 kudarcot 2387.”, ez azt jelenti, hogy a program nem tudta alkalmazni a tapaszt még az illeszkedést. Ebben az esetben a generált fájl .rej információt nem cserélik, valamint kiterjesztésű fájl .orig tartalmazó eredeti szöveg, amelyet nem lehet cserélni.
Üzenet „fordított (vagy korábban alkalmazott) tapasz észlelt! Tételezzük -R? [N]” azt jelenti, hogy a program megállapította, hogy a tapasz már alkalmazták.
Ha igazán alkalmazzák ezt a javítást, és a második alkalmazás - ez egy hiba, nyomja meg a [n] és a teljes program. Ha használt, és most szeretné törölni, egyszerűen elfelejti, hogy adja -R gombot nyomja meg a [y]. Ez arra is vonatkozik, amikor az emberek a patch létrehozásához megfordította a forrás és a cél könyvtárat, és ebben az esetben a használata a tapasz és visszatérve.
Amint azt korábban jeleztük, ezek a hibák nem fordulnak elő, ha alkalmazza a hivatalos javítások kernel.org erőforrás a megfelelő sorrendben, és nem változtatta meg a kernel forrást. Tehát, ha ez történik javítások a kernel.org, ez jelenti a torzítás tapasz letöltött, illetve a forráskódot a gépen, és ha kell teljesen újra pumpálni a kernel forrást vagy a foltot, amit kíván alkalmazni.
Van „tapasz” program alternatívákat?
Ez akkor ismét megy, például 2.6.12.2 a 2.6.12.3 egy lépésben. Flag -z interdiff program lehetővé teszi, hogy működjön együtt foltok levéltárában gzip és bzip2 eltávolítása nélkül őket előre kézzel használata nélkül zcat és bzcat.
Azonban, míg a program fogja menteni egy-két lépést, akkor ajánlott alkalmazni az összes lépést, mert bizonyos esetekben interdiff meghiúsulhat.
További érdekes eszközök diffstat, ami azt mutatja, a módosítások összegzése által szoftver patch; lsdiff, amely megjeleníti egy rövid listát a fájlok, amelyek meghatározzák az érintett patch fájlt, együtt változó számú sor; és grepdiff, bemutatva egy listát a módosított fájlokat tapasz, amelyre a foltozóelemekben tartalmazza a megadott reguláris kifejezés.
Hol találok a javításokat?
Ehelyett használhatsz ftp.kernel.org ftp.cc.kernel.org. ahol cc - az ország kódját. Egy tükör segítségével, hogy letöltse a közel az ország lehetővé teszi a gyorsabb betöltés, csökkenti a globális forgalom és csökkenti a terhelést a kernel.org szerveren. Ezért, ha lehetséges, használjon tükröt.
kernel 2.6.x
Vannak alapvetően stabil kiadások által kiadott Linus Torvalds. Minél nagyobb a szám, annál újabb kiadás.
Ha kimutatható regressziót vagy egyéb súlyos hátrányokat korrigáló tapasz -stable (lásd alább) termelnek ezek a bázis kiadások. Amint van egy új kiadás 2.6.x kernelbe és kiadott egy javítást, amely lehetővé teszi számára, hogy az előző kiadás.
Alkalmazni a tapasz 2.6.11 a 2.6.12, akkor a következőket kell tennie (megjegyzés, hogy ezek a foltok nem alkalmazzák a magok 2.6.xy változat, akkor lehet alkalmazni, csak az alapváltozat 2.6.x kernel - Ha azt akarjuk, hogy menjen 2,6-ról 2.6.xy .x + 1, először is meg kell felhelyezni a tapaszt, hatályon kívül 2.6.xy, azaz visszatér a 2.6.x).
Íme néhány példa:
kernel 2.6.x.y
Kernel verzió számok chetyrehtsifrennymi nevű -stable. Ezek tartalmazzák a minimális kritikus javítások kapcsolatos biztonsági problémák, illetve jelentős regressziót felfedezett adott atommag 2.6.h.
Ez az ág, amelyek számára ajánlott, akik szeretnék, hogy egy stabil mag, és nem érdekli a fejlesztés és a tesztelés kísérleti verziók.
Ha nincs elérhető 2.6.x.y mag, a jelenlegi verzió stabil magja a legtöbb 2.6.x.
Megjegyzés: -stable fejlesztőcsapat általában elérhetővé teszi nemcsak tapaszok utolsó nagy kiadás, de járulékos javításokat. Azonban az alábbiakban én csak beszélek semmiféle járulékos javításokat. Inkrementális azonos foltok elérhető ftp://ftp.kernel.org/pub/linux/kernel/v2.6/incr/
Nem egyedi tapasz segítségével, például, hogy a patch 2.6.12.3 frissítés az alapváltozat 2.6.12, de nem a köztes verzió 2.6.12.2. Felragasztani a tapaszt a meglévő kernel 2.6.12.3 2.6.12.2, először meg kell szakítani a tapasz 2.6.12.2 (visszamenni verzió 2.6.12), majd alkalmazza a tapaszt 2.6.12.3.
Íme egy példa:
Kernel -rc: Release Candidate mag
Ők tapasztalt mag által termelt Linus, amikor úgy ítéli meg, hogy a jelenlegi git fa (forráskód menedzsment alkalmazás kernel) olyan állapotban van, nagyon alkalmas a vizsgálatra.
Ezek a magok nem stabilak, és meg kell várni az időszakos problémákat, ha azok fognak futni. Azonban ezek a legstabilabb az összes tapasztalt magelágazásokra, és ezenkívül, akkor végül pedig egy stabil magja. Így fontos, hogy teszteljék azokat a sok ember.
Ez egy jó választás azok számára, akik szeretnék kipróbálni az új kernel, de valójában nem akar kísérletezni. (Ezek az emberek olvassák el a következő fejezetet, és -git -MM alább).
Foltok -rc - nem inkrementális, azok alkalmazásáról az alap kernel 2.6.x. mint tapaszok 2.6.x.y, fentebb. Része a kernel verziószámát -rcN utótag jelzi a kernel verziószáma, ami a végén, mindent vált.
Így 2.6.13-rc5 azt jelenti, hogy ez az ötödik jelölt bocsátás 2.6.13 kernel és a tapaszt kell alkalmazni verzió 2.6.12.
Íme három példa kivetésének a javítást:
Ezek a napi pillanatképek Linus kernelfába (made in lerakat git, így a neve).
Ezek a foltok általában naponta, és képviseli a jelenlegi állapotában a Linus változat. Ők több mint kísérleti -rc rendszermag automatikusan generált anélkül, hogy egy felületes pillantást a teljesítményüket.
Foltok -git - nem egyedi, és azt a bázist kernel 2.6.x kernel vagy bázis 2.6.x.rc, ami nyilvánvaló a nevüket. Patch nevű 2.6.12-git1 vonatkozik kernel 2.6.12, és egy patch a neve 2.6.13-rc3-git2 - a 2.6.13-rc3.
Íme néhány példa az alkalmazási tapasz:
Ez a kísérleti kernel termelt Andryu Mortonom (Andrew Morton).
-MM ág valamiféle kísérleti terepet kialakulásának foltok új funkciók és más kísérleti funkciókat.
Miután néhány folt bizonyítja, hogy érdemes -MM ág alatt néhány alkalommal, Andrew kínál, hogy Linus felvétele a fővonal.
Bár a megállapított szabályok szerint, ezek a foltok küldött Linus keresztül -MM ága, ezeket a szabályokat nem mindig tartják be. Karbantartók alrendszerek (vagy fejlesztők) esetenként küldjék javításokat közvetlenül Linus, akkor is, ha egyesítjük és teszteltük a -MM (és néha még előzetes vizsgálat -MM).
Annak érdekében, hogy a maximális vizsgált esetek többségében, akkor arra törekszenek, hogy javításokat keresztül -MM.
Ez az ág a folyamatos fejlődés és számos kísérleti funkciók; van egy csomó hibakeresés tapaszok nem alkalmas fő ága, stb Ez a legtöbb kísérleti valamennyi ága a jelen dokumentumban leírt.
Ezek rendszermag nem alkalmas olyan rendszerekben való felhasználásra, amelyeket meg kell stabil, használatuk nagyobb kockázatot, ha foglalkoznak a magok bármely más ága (ne feledkezzünk meg hát - meg kell tenni segítségével bármilyen kísérleti kernel, stb több, amikor dolgozik ágak -MM mag).
Mert ezek a magok, amellett, hogy az összes többi kísérleti tapaszok általában támogatja a különböző változások a főág magok -git atommagok, hogy kiadja az időben.
Test magok -MM nagyon dicséretes és foglalkozásszerűen gyom regresszió hibák, adatvesztés (vagy más hiba), mielőtt azokat Linus fő ága. De tesztelők -MM ág kell értenie, hogy ezek a változatok több hibát, mint bármely más.
-MM magokat nem megjelent bármely csoportja terv, de ez rendszerint verziókhoz -Rc ki több változatban -MM kernel (általában 1-3). -MM tapaszok ágak alkalmazzuk a bázis kernel 2.6.x (kiléphet -rc változat), illetve a fióktelep -rc Linus.
Íme néhány példa, hogyan kell használni őket:
Ezen a listán a pontosítást a különböző kernel fákat lehet kitölteni.
Remélem most már világos, hogyan kell alkalmazni a különböző javítások és segítséget teszt magok.
Külön köszönet Rendi Danlep (Randy Dunlap) Rolfe Eike Beru (Rolf Eike Beer), Linus Torvalsu (Linus Torvalds), Isten Eggert (Bodo Eggert), Johannes Stezenbahu (Johannes Stezenbach), Grant Cody (Grant Coady), Paul Machek (Pavel Machek) és mások, amelyek elfelejtettem megadni, azok segítettek elkészíteni ezt a dokumentumot.