Valaha sokszor fordítottam kernelt. Most ezt a patch-et szerettem volna a kernelben látni, de fordításkor segmentation fault-tal leáll a gcc. Nem ennél a modulnál, teljesen máshol. Tudom, túl új, használjak régebbit, de semmi kedvem felforgatni az egész oprendszert. Próbáltam csak a modult fordítani, de azt meg bizonyára elszúrtam, hiszen úgy kellene, hogy a kernel többi komponenséhez illeszkedjék, a keletkezett binárisból történő függvényhívások, hivatkozások működjenek. Szóval egyelőre - ha jól látom -, van egy inicializálatlan boolean típusú változóm, amelyben RAM-szemét van, s ezért gyakran eldobálja az amúgy jó hálózati csomagokat is. A gyakorlatban ez azt jelenti, hogy néhány MB/s helyett néhány tíz kB/s a wireless interface-emen az adatátviteli sebesség. Kénytelen vagyok átmenetileg egy másik wifi interface-t használni.
Pontosan mit kell tennem, ha csak négy modult szeretnék újra fordítani úgy, hogy azok a már létező binárisba illeszkedjenek? Bár lehet, ennek inkább a Linux kezdőben a helye. A kívánt modulok a /lib/modules/3.16.3-300.fc21.x86_64/kernel/drivers/net/wireless/ath/ath9k elérési úton:
ath9k_common.ko.xz
ath9k_htc.ko.xz
ath9k_hw.ko.xz
ath9k.ko.xz
Egyébként a lefordult modult csak simán össze kell xz-vel tömöríteni, vagy kernel modulok esetében valamilyen speciális feltétel, header, akármi is van?
Hozzászólások
Amíg a fejlesztők megreszelik, írtam egy /etc/modprobe.d/ath9k_htc.conf file-t az alábbi tartalommal:
options ath9k_htc nohwcrypt=1
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Úgy érted, hogy experimentális gcc van a gépeden? Mi a verziószáma?
Az egész oprendszer alfa állapotú Fedora 21, de kisebb nyűgöktől eltekintve jó. Például ez a kernel bug nyilván belekerült a stabil Fedora 20-ba is azzal, hogy 3.16.3-asra frissült a kernel.
rpm -q gcc
gcc-4.9.1-9.fc21.x86_64
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Legalább látszik, hogy pont mit csinált a gcc, amikor feladta a reménytelen harcot? Némely Makefile-ok puszta segítőkészségből elnyomják az output-ot, nehogy felizgassam magam azzal, hogy meglátom, mi is történik a gépemen...
Most így visszaemlékezve nem. Arra emlékszem, hogy valamelyik multimédiával, hangkártyával kapcsolatos kernel modult fordította, aztán közölte, hogy segmentation fault a gcc részéről, aminek következtében a make nem sikerült, meg leírta, hogy ha nem reprodukálható a hiba, akkor ez hardware gond lesz, ha reprodukálható, akkor pedig esetleg küldjek a bugzillába bugreportot, hogy javítsák a fordítót. A gépem egyébként stabil, a hiba reprodukálható volt.
Az az igazság, hogy azáltal, hogy ezzel a workarounddal megint gyors a wifi, megszűnt a motiváltságom kernel fordítás irányában. Majd, ha binárisban jó lesz, akkor hagyom, hogy az USB dongle csinálja a titkosítást. Így szoftveresen sem eszik elviselhetetlenül sok gépidőt. Egy letöltés közben egy CPU mag 2 %-át láttam a top-on system futásidő gyanánt.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE