Den Latinamerikanska Fria Programvarufonden har publicerat en helt fri version av Linux-kärnan 6.12 – Linux-libre 6.12-gnu, rensad från firmwaren och drivrutinerna som innehåller icke-fria komponenter eller kodavsnitt vars användningsområden är begränsade av tillverkaren. Dessutom stänger Linux-libre av kärnfunktioner för att ladda externa icke-fria komponenter som inte ingår i kärnleveransen och tar bort omnämnandet av användning av icke-fria komponenter från dokumentationen.
För att rensa kärnan från icke-fria delar har Linux-libre-projektet skapat ett universellt shell-skript som innehåller tusentals mallar för att identifiera närvaro av binära inslag och för att utesluta falska positiva resultat. Färdiga patchar, skapade på basis av det nämnda skriptet, finns även tillgängliga för nedladdning. Linux-libre-kärnan rekommenderas för användning i distributioner som uppfyller Stiftelsen för Fri Programvaras kriterier för att skapa helt fria GNU/Linux-distributioner. Till exempel används Linux-libre i distributioner som Dragora Linux, Trisquel, Dyne:Bolic, gNewSense, Parabola, Musix och Kongoni.
I utgåvan av Linux-libre 6.12-gnu har kod lagts till för att rensa blobbar i drivrutiner för SoC CPM/QE QMC, trådlösa chips Realtek 8852BE-VT, bluetooth-adaptrar från Amlogic, nätverksadaptrar från amcc qt2025, sensorer aw96103/aw96105 och codecs TI TLV320AIC31XX. Det har genomförts ytterligare rensning av blobbar i drivrutiner för xHCI-kontroller från Renesas och Intel ISH (Integrated Sensor Hub) HID. Koden för att ta bort blobbar i drivrutiner och subsystem MHI PCI host, Adreno 620/621, r8169, Qualcomm q6v5 remoteproc, rtw8852c, rtw8922a, samt i dts-filer för ARM54-chip TI PRU och Qualcomm har uppdaterats. Rensningen av drivrutiner för trådlösa kort ks7010 och ljudsystemet Intel SkyLake har avbrutits eftersom dessa drivrutiner har tagits bort från kärnan.
Det noteras särskilt att en av drivrutinerna uppvisar exekverbara objektkod i källkoden, genererad från opublicerade källkoder och inbäddad i form av hexadecimala nummer. Den problematiska drivrutinen nämns inte explicit, men baserat på ändringarna handlar det om närvaro av mikrokod för en shader i filen gfx_v9_4_3_cleaner_shader.h, som ingår i drivrutinen AMDGPU. Den första liknande insättningen upptäcktes i kärnan 6.11 och föreslogs sedan av en av utvecklarna att tas bort, eftersom källkoderna inte tillhandahölls (det uppstod en situation med leverans under GPL-licens av programvara som endast var tillgänglig i binär form). Emellertid bevarades den angivna binära koden i kärnan 6.12, och en liknande insättning lades till i samma drivrutin.
Dessutom nämns ytterligare två händelser i meddelandet om Linux-libre 6.12:
- För att inkludera i kärnan föreslogs en ändring som blockerar Tuxedo-laptopdrivrutiner från att få tillgång till kärnsystem som endast är tillgängliga för kod under GPLv2-licensen (EXPORT_SYMBOL_GPL). Möjligheten att blockera introducerades ursprungligen för att begränsa sammanlänkningen av proprietära drivrutiner med komponenter i Linux-kärnan som endast exporteras för moduler under GPLv2-licensen, men det lyckas omgås genom att skapa mellanmoduler som översätter den proprietära drivrutinens åtkomst till de nödvändiga API:erna i kärnan. I fallet med Tuxedo-drivrutiner är situationen den motsatta — trots att Tuxedo-drivrutiner utvecklas separat från kärnan, levereras de under GPLv3-licensen, som å ena sidan inte är kompatibel med GPLv2, men å andra sidan försvarar fler friheter, till exempel skyddar mot tivoisering.
Det noteras att Tuxedo-företaget länge har föreslagit att byta licensen på sina drivrutiner, men det har fortsatt att leverera kod under GPLv3-licensen och angav i drivrutinskoden makrot 'MODULE_LICENSE("GPL")' istället för 'MODULE_LICENSE("GPL v3")' för att få åtkomst till alla kärnsystem. Tuxedo har erkänt kritiken och ändrat licensen till GPLv2+ för en del av sina drivrutiner. Ändringen har tillämpats på drivrutinerna gxtp7380, ite_8291, ite_8291_lb, ite_8297, ite_8297, stk8321, tuxedo_compatibility_check, tuxedo_nb02_nvidia_power_ctrl och tuxedo_tuxi. Mer än ett dussin drivrutiner har ännu inte fått ny licens, eftersom det krävs samtycke från tredjepartsutvecklare för att ändra licensen på dem.
Användningen av koden 'MODULE_LICENSE("GPL")' istället för 'MODULE_LICENSE("GPL v3")' förklarade en representant från Tuxedo med bristen på tydliga förklaringar i dokumentationen för kärnan, att markören "GPL" inte kan användas för GPLv3-licensen. Dessutom berättade han att företaget avser att överföra sina drivrutiner till den huvudsakliga Linux-kärnan och att de arbetar med att fullständigt skriva om dem under GPLv2-licensen med hänsyn till kraven för kärnkomponenterna.
- Kärnutvecklare diskuterar initiativet att lägga till flaggan X86_BUG_OLD_MICROCODE, som signalerar att ett äldre CPU-mikrokod används i systemet. När denna flagga sätts bör systemet betraktas som att det har potentiella obotade sårbarheter. Försök att likställa tillståndet hos systemet med obevakad mikrokod med situationen att det finns faktiska obotade sårbarheter i koden har lett till kritik från en av underhållarna av Linux-libre-projektet.
Enligt underhållaren av Linux-libre bör kärnan inte inskränka användarnas rätt att inte installera obehöriga proprietära firmware och mikrokod på sina egna enheter. Diskussionen om sårbarheter bör knytas till specifika korrigeringar i vissa versioner av firmware, snarare än att kalla alla system som inte har den senaste mikrokoden för sårbara, utan att undersöka om det finns sårbarheter i det aktuella systemet och om den senaste firmwareinnehåller åtgärder mot sådana sårbarheter.
Källa: opennet.ru
