HTML

Bagoj úr blogja

Kíváncsi Bagoj befigyel a Linux belsejébe, illetve különféle Linux terjesztéseket próbál ki. Ha jó napja van, scriptet ír Neked.

Friss topikok

2.6.28 :-(

2008.12.22. 22:01 bagoj ur

Olvasgattam, mi kerül be a 2.6.28-as Linux kernelbe, és sajnos úgy néz ki, nem fognak bekerülni Arjan van de Ven boot felgyorsítására készített kódjai. Egy októberi kernel levlistás szál alapján nekem úgy tűnt, Linust meggyőzték hogy ez elég tuti és a gyakorlati tesztben nincsenek nagy bugok vele, de nem győzték meg eléggé. :-(

Aki nincs nagyon képben: Az Intel két mérnöke pár hónapja 5 másodperc alatt bootoló Linuxot készített. Ennek eléréséhez a kernelbe is tettek pár változtatást; főleg az USB hardverek felismerésének területén, ugyanis elég sokáig tart amíg ezek a hardverek magukra találnak. A gyorsítás módja az aszikronizált módszer, azaz nem várnak arra hogy a hardver összeszedje magát hanem közben a kernel már mással tud foglalkozni egy külön szálon. Ezt természetesen felajánlották a hivatalos kernel fejlesztőknek is, többen támogatták is a dolgot de végül - úgy tűnik - Linus Torvalds visszaverte az ötletet. Ez nem jelentette volna persze hogy mindenkinek 5 másodperc alatt bootolt volna a Linugz, de jelentősen fel lehetett volna gyorsítani a dolgokat; mondjuk 15-20 másodpercre a mostani 35-50-ről.

Nagy kár, mert erre a kernelre vártam a "gyorsbútoló picilinux" projekttel kapcsolatban, hogy ne kelljen egyáltalán foltozgatni a kernelt, csak konfigurálni. Ez most nem jött be, úgyhogy próbálok a másik kernel-fordításos ötletemen dolgozni a napokban.

Kernelbe vele! Vagy mégse?

Az az ötlet (a netről loptam én is, nyilván honnan máshonnan), hogy a kernel fordítással kapcsolatos legtöbb félelmet az okozza, hogy mit is kell belefordítani a kernelbe?

Sarkalatos kérdés. Lényegében mindegyik, széles körű általános felhasználásra szánt Linux terjesztés teljesen moduláris kernellel dolgozik, hiszen ahányféle hardverkombináció, annyiféle driver támogatás szükséges; mindet nem lehet a kernelbe fordítani, tehát kitrükközik azzal, hogy mindent modulba fordítanak, amit lehet. Viszont ehhez kell initrd ami sokat lassít a boot folyamaton. Ennek kihajításához a legegyszerűbb módszer az, hogy ki kell listázni az összes kernel modult, ami a boot során betöltődött - ezek fordítsuk bele a kernelbe és akkor ezentúl nem kell a betöltéssel szöszölni. Emellett természetesen nem kell lemondani a modularitás előnyeiről, ha nem akarunk túl sokat tűnödni, minden mást befordítunk modulba oszt csókolom.

A probléma ott kezdődik, hogy meg kell állapítanunk, hogy a kilistázott kernel moduljainkhoz a kernel konfigurálása közepette mit kell bekapcsolni a menüben, mert ez még távolról sem triviális. Szerencsére van nekünk egy nagyon hatékony szövegfeldolgozó nyelvünk, a Perl.

Találtam ugyanis egy írást és egy perl szkriptet a neten, ami pont ezt a kényelmetlen és nehézkes dolgot oldja meg, mint az lsmod-dal a betöltött modulok kilistázása, majd ehhez a megfelelő konfigurációs paraméterek megkeresése és beállítása. Frankó. Vakrepültem is egyet, mert kíváncsi voltam hogy mit tud ez a kis szkriptecske (belenézve természetesen látszik: kikeresgéli a kernelfa Makefile-jaiból a konfigurációs paramétereket és a hozzájuk tartozó modulneveket; majd az lsmod alapján megnézi milyen modulok vannak betöltve és megjegyzi, hogy az ezeknek megfelelő konfigurációs paramétereket mindenképpen kernelbe fordítandónak kell jelölni. Ezután végigmegy egy kernel konfigurációs fájlon, mindent lemásol de ha olyannal találkozik, ami YES (kernelbe fordítandó), akkor azt rakja bele. Egyszerű. Nekem volt egy olyan félelmem hogy mivel ez nem működik hierarchiában, ezért mondjuk be fogja rakni az intel driver támogatást de az eggyel felette lévő SATA meg nem lesz bekapcsolva. Ezt csináltam egy letöltött 2.6.27-es kernellel:

sudo bash
make oldconfig
cp .config .config_orig
perl buildin_used_mods.pl > .config
make
Az első utasítás létrehoz egy alap kernel konfigot, amire szükség van a kis perl szkriptnek. Aztán ezt az alap konfigot a biztonság kedvéért elmentjük .config_orig néven, majd futtatjuk a szkriptet, végül fordítjuk a kernelt. Ahogy mondani szokás, ez eltart egy kis ideig. Méghozzá baromi sokáig! Na persze, alapértelmezetten modulba fordítandónak maradt lényegében minden, amit egyébként kikapcsoltam volna. Ráadásul a teljes lefordított kód + forrás 2,8Gbyte-ot evett (!!!). Nem győztem hümmögni.

Ja és persze a kernel nem működött. :-( No persze, mégiscsak hierarchiában kell gondolkodni. Sajnos perpillanat nem tudom leellenőrizni a feltevésem, mert le kell költöznöm arról a laptopról. :-(

Azt hiszem, a mai nap nem a nagy győzelmek napja. De nyomjuk tovább...

Szólj hozzá!

Címkék: linux perl kernel csalódás szkript konfigurálás

A bejegyzés trackback címe:

https://bagojur.blog.hu/api/trackback/id/tr40837426

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.