niedziela, 8 czerwca 2014

Kernele v30.x [Linux-3.15.x] ... i nieoczekiwane problemy jakie napotkałem

Powiem szczerze nie spodziewałem się tak szybkich problemów w konfrontacji Ubuntu 14.04 vs najnowsze kernele ... a jednak. Okazało się, że nie ma możliwości prawidłowego zbudowania paczek deb ze zoptymalizowanymi kernelami [w tym na poziomi ich kompilacji] przy użyciu kpkg w wersji 12.036+nmu3.

Tak zbudowane paczki zawierały "śmieci" - wynikające z błędów podczas budowy oraz w trakcie instalacji sterowników zgłaszany był błąd braku nagłówków ... o ile to dało się obejść, o tyle dostarczanie paczek, które "krzyczały" o braku nagłówków już raczej nie. Zacząłem szukać rozwiązania i okazało się, że problem budowy paczek z kernelami opartymi o Linux-3.15.x rozwiązany został dopiero w wersji kpkg 13.013. Taką wersję zatem zainstalowałem na moich maszynach developerskich i przystąpiłem do budowy kerneli ... ku mojej radości paczki zostały prawidłowo wygenerowane ... jednak "radość" skończyła się przy próbach instalacji sterowników Nvidii - o ile w przypadku Catalystów nie było żadnych problemów, o tyle w przypadku Nvidii nie było szansy na zbudowanie prawidłowego modułu kernela. Muszę przyznać, że "namęczyłem się" szukając rozwiązania ... ale jak to już wielokrotnie bywało znalazłem je ;). Tym razem zmodyfikowałem plik make kernela i udało mi się zbudować kernel, który oprócz prawidłowo zbudowanych paczek .deb, pozwala także na prawidłowe działanie sterowników Nvidii ;). Konkluzja jest taka, że po raz pierwszy budując kernel - aby zapewnić kod wynikowy jaki mnie satysfakcjonuje - nie korzystam już praktycznie z żadnych narzędzi dostarczanych przez Canonical [samodzielnie je zbudowałem], ale także po raz pierwszy spotkałem się z sytuacją, w której żadne narzędzia dostępne zarówno w stabilnej [14.04], jaki i rozwojowej [14.10] gałęzi systemu ... nie pozwalają na zbudowanie prawidłowo działającego kernela. Oczywiście kernel gneric to inna "bajka" podgają innym regułom budowy - dla mnie nieakceptowalnym.

Przy okazji wydanie kerneli v30.0 oraz v29.6 będą posiadały dodatkowo zmodyfikowaną konfigurację zapewniającą wyższą wydajność oraz responsywność w przypadku pracy z systemami plików XFS oraz Btrfs. Dodatkowo także zoptymalizowałem konfiguracje kerneli v30.0, co pozwoliło na osiągniecie wyższej responsywności oraz wydajności systemu - przykład poniżej:


Pozdarawiam