Hagyjátok abba a Linux kernellel kapcsolatos elmebajt!

Címkék

``Stop the Linux kernel madness'' tárggyal írt levelet a 4Front Technologies vezetője az LKML-re. A levélben arról ír, hogy nagy problémának érzi, hogy a SuSE szisztematikusan forkolja a Linux kernel forrását, rendszeresen szállítja a disztribúcióiban a változtatásokat (a vanilla kernelhez képest), és ennek ellenére azt állítja, hogy a módosított kernele 2.6.5-ös (például).

A vezető szerint vagy az eredeti kernelt (kernel.org-os kernelt) kellene a SuSE-nak szállítania, vagy be kellene fejeznie a kernelét 2.6.5-ösnek hívni.A fejlesztő azt állítja, hogy a SuSE megváltoztatja a kernel headereket, amely azt eredményezi, hogy csak a SuSE által készített szoftverek működnek a kernellel (magyarul nem lehet a kernelhez 3party drivert készíteni, amert az nem fordul le a módosított headerek miatt. a gyártó cég a fejlesztéskor a kernel.org-os forrást veszi alapul, amely jelentősen eltér a SuSE forrásától).

A fejlesztő cég vezetője elmondja, hogy ez szerintük nem az ő problémájuk, mert az általuk fejlesztett szoftver tökéletesen működik Fedora/Debian/Gentoo/Mandrake/Redhat/stb. disztribúciók alatt. Szerinte a SuSE hazudik, amikor azt állítja, hogy a kernele 2.6.5-ös, hiszen tele van változtatásokkal.

A vezető sürgős segítséget kér ahhoz, hogy a disztribúciók fejezzék be a Linux kernel forkolását, mert a kis fejlesztők, mint például ők így nem tudják a szoftvereiket frissíteni.

Persze a levélből óriási flame lett. Sokan egyetértenek a fejlesztő cég vezetőjével, sokan nem. A thread itt kezdődik.

Hozzászólások

Szerintem teljesen korrekt... nem tudom, minek kell a kernelt piszkálgatni minden disztribnek, és közben úgy nevezni, mint az eredeti. A fejlesztő pedig legyen a talpán, ha kernelmodult ír, és küldik a bugreport -ot, hogy a driver/modul nem forul le egy adott verzio alatt. Aztán ilyenkor találd ki, hogy mi a fene baja lehet, és hogyan lehet áthidalni.

Az már csak egy másik dolog, hogy egyre inkább úgy érzem, a Linux (mint olyan) egyre inkább szétdarabolódik, szükségtelenül. Már nem igazán beszélhetünk olyanról, hogy a "Linux előretörése", hanem az egyes terjesztések aratnak sikert, nem egyszer a másik rovására. Talán még a kernel az, amely valamelyest összefogja a dolgokat, de mint látható, már az is egyre kevésbé.

Már pedig összefogás (és kordináció) nélkül a Linux a célegyenesben fog elhalálozni, akkor, amikor egyre nagyobb szükség lenne bizonyos informatikai megoldások nyílt forráskódú megfelelőire...

Mert az igény megvan, egyre erősebben. Csak a rendszer hullik szét darabjaira.

Szerintem a konklúzió lett a legjobb: 4Front elfelejtett doksit olvasni. Nem az a gond, hogy SuSE patchelte a kernelt (mindenki azt teszi), hanem az, hogy /lib/modules/VERSION/build alatt alkönyvtárak voltak, és azokban voltak a headerek. Ez egy README-ben ott a környéken dokumentálva is van, 4Front meg nem tud olvasni.



Megoldást lásd itten [marc.theaimsgroup.com].



Szóval halál triviális a dolog megoldása, és 4Front nem tud olvasni. Big news.



Btw, SuSE nem azt állítja, hogy 2.6.5-ös a kernele, hanem 2.6.5-ön alapszik. Nem ugyanaz, itt is ferdítettek egy picit 4Fronték...

A kernelt, mint minden más programot, szerintem nyugodtan piszkálhatják a distribek, amíg az kompatibilis marad a többivel (ez általában így is van, a hiedelmekkel ellentétben. Max az egyiken forgatott modulok nem mennek a másikkal. Nagy ügy, az ember újraforgatja. Binary compatibilityt senki nem ígért). Továbbá a legtöbb distrib, így a SuSE is, azt állítja, hogy 2.6 alapú a kernel, nem azt, hogy 2.6.x a kernel.org-ról. A tisztelt 4Front Technologies ezt benézte. Mint ahogy a doksit sem tudta elolvasni, hogy hogyan forgasson SuSE alatt kernel modult.

A szétdarabolódáshoz én annyit fűznék hozzá, hogy third party programot, ha lefordítok egy adott modern linux disztriben, az menni fog a többin is, ha megvannak a libek megfelelő verziói. Ez pedig általában nem szokott gondot okozni. Legalábbis jóideje nem láttam már ilyesmi hibát. Max olyat, hogy glibc CVS snapshothoz forgattak valamit, és az nem ment sarge-on.. Node ha az ember binary cuccot csinál, akkor azt nem bleeding edge libekhez forgatja, hanem egy általában elérhető verzióhoz.

Az össefogásról pedig lást Linux Standard Base - van itt összefogás, és úgy-ahogy működik is.

Ettol fuggetlenul Andrew Morton is azt szeretne ha tobb erofeszitest latna a kenrel verziok kozeledesere:

"I would like to see a little more all-round effort to reduce the variation

between kernels, and perhaps Suse moved onto 2.6 a little later than they

should and have a resourcing problem. Hopefully we'll be seeing more

patches from them soon."

Es valoban erezni azt a problemat, amit a BSD rajongok oly sokszor felvetnek, miszerint ahany vendor, annyifele implementacio. Ez persze jo, mert szinesedik a fejlesztes, csak a problema ott jelentkezik, mikor sajat hazon belul tartogatnak bizonyos patcheket a disztributorok ahelyett, hogy azokot submit-elnek a karbantartoknak. Egyebkent attol, hogy a 4Front nem tud olvasni a problema valos lehet (nem ebben az esetben). A SuSE mindig egy kicsit mashogy csinal mint masok.

> mert az általuk fejlesztett szoftver tökéletesen működik

> Fedora/Debian/Gentoo/Mandrake/Redhat/stb.

> disztribúciók alatt

hm. a fedora default kernelével sem megy az nvidia driver... ;-)

Ezért nevettem jót valamelyik régebbi threaden amikor valaki azt állította, hogy a BSD-nél csomó minden forkolva van, bezzeg a linuxnál mennyire egységes a kernel... :)

Közel sem. Az LSB-certified linuxok tényleg különösebb probléma nélkül tudják egymás csomagjait használni. A filesystem felépítés (magyarul könyvtárstruktúra), az architekturák nevei is a legtöbb distribben LSB szerint vannak megcsinálva.

Egységes is. Fogj egy random userspace progit, és egy random linuxot. Tedd át a programot egy másik distribre, más kernellel, de ugyanazokkal a libekkel: menni fog.

Fogj egy BSD-t, ugyanazt a programot. Próbáld meg kicserélni a kernelt egy másik BSD kernelre. Bzzzt.

A linux kernel "forkok" azért kompatibilisek egymással, user-space programok szintjén binárisan is (magyarul ha lecseréled a kernelt egy másik "fork"-ra, a bináris gond nélkül megy). A kernel modulok szintjén általában forrás szinten (hiba nélkül újrafordulnak). A binary-only kernel modulok viszont nem kompatibilisek. De ez dokumentált feature.

Szóval a linux kernel igenis egységes, kivéve ha binary-only modult csinálsz. De akkor utálunk és dögöljél meg amúgy is :) (Vagy csinálja okosan az ember: legyen egy binary-only rész, ami kernel független, meg egy open-source glue code, ala vmware)

Ha elolvasod figyelmesen a threadet, láthatod, hogy a SuSE kernel amire 4Front panaszkodott, alig tartalmaz eltérést a kernel.org-os változattól. Semmi olyat, amitól egy adott modul ne tudna lefordulni (kivéve a symlinket, de az sem forrás modosulás, csak 1 path változott).

Én nem érzem úgy, hogy a linux kernelből annyiféle változat lenne, ahány vendor. Lehet, hogy egyes kernelek kicsit mások, lehet, hogy a binary-only driverek egyikkel működnek, másikkal nem. De itt meg is áll kb az inkompatibilitás (ha nem, akkor az valóban bug, és reportolni kell) tapasztalatom szerint.


Nomeg, senki nem kötelez senkit, hogy a distrib kernelt használja :) Ezzel az esetlegs inkompatibilitások el is tüntek egy újraforgatással.

Miért? Az volt az eredeti állítás, hogy a linux kernel szanaszétebb van forkolva, mint a BSD kernelek. Példám szerintem azt mutatja, hogy ez nem így van (max, ha a binary-only drivereket nézed, amelyek valóban gázosak, de ezért senki ne sírjon, ez azóta így van, amióta linux supportál kernel modulokat. Cirka 1996 óta ezt tudni lehetett, hogy így lesz, a binary-only drivereket író cégek azóta kidolgozhattak volna olyan wrappert, ami megoldja a problémat. Nem tették, ígyjártak. Dokumentálva volt, emiatt sírni eléggé hülyeség szerintem.)

A SUSE/RH tevekenysege nagyon gaz ezen a szinten.

A SUSE ha korrekten a akart volna eljarni, es tenyleg ugy gondolja, hogy a libeknek ez az uj konyvtarstruktura sokkal jobb, akkor ugy ter at, hogy symlinkeket hagy a regi helyen. Majd amikor a disztribek nagyresze koveti ezt a "hihetetlen" szuper ujjitast, akkor eltunteti a symlinkeket.

Szadekosan csinaltak egy minimalis munkaval jaro inkompatibilitast.

Az ilyenek ellen egy dolgot lehet csinalni: nagyhangon szidni oket.;)

Talan legkozelebb nem csinaljak.

Bar az is igaz, hogy a binary-only kerneldriverek iroja csak szivjanak, ok nagyobb gonoszok, mint a libathelyezos SUSE.;)

Bocs, de ismereteim szerint a cikkbeli dolgok igazak a Mandrake és/vagy a Fedora kernel esetében is.

Vagy tévedésről lenne szó?

Tapasztaltam, hogy az "mdk" kernel is egyedi...

Szerintem ez komoly problema es meg a Debianba is talalkoztam modositott headerekkel (sajnos mert meg is szopattak) en az egyetlen modszert egy statikus include konyvtarban lattom amit a forrashoz adok...de ezek neha nem mukodnek egyutt rendesen az elore forgatott cuccokkal... erdekelne masok velemenye hogy lehett ezt tokeletesen megoldani mert en tanacstalan vagyok ez ugyben....

A kulcsszó: legalább az adott kernel major verzión belül változatlan kernel modul ABI + olyan licensz alatt kiadni a kernelt, ami az inkompatibilis API változtatásokat tiltja. A túl nagy szabadság csak anarchiához vezet.

Persze ezzel lehet vitatkozni...