Na čem aktuálně pracují vývojáři GNOME a KDE Plasma? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE Plasma.
Před 25 lety zaplavil celý svět virus ILOVEYOU. Virus se šířil e-mailem, jenž nesl přílohu s názvem I Love You. Příjemci, zvědavému, kdo se do něj zamiloval, pak program spuštěný otevřením přílohy načetl z adresáře e-mailové adresy a na ně pak „milostný vzkaz“ poslal dál. Škody vznikaly jak zahlcením e-mailových serverů, tak i druhou činností viru, kterou bylo přemazání souborů uložených v napadeném počítači.
Byla vydána nová major verze 5.0.0 svobodného multiplatformního nástroje BleachBit (GitHub, Wikipedie) určeného především k efektivnímu čištění disku od nepotřebných souborů.
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za duben (YouTube).
Provozovatel čínské sociální sítě TikTok dostal v Evropské unii pokutu 530 milionů eur (13,2 miliardy Kč) za nedostatky při ochraně osobních údajů. Ve svém oznámení to dnes uvedla irská Komise pro ochranu údajů (DPC), která jedná jménem EU. Zároveň TikToku nařídila, že pokud správu dat neuvede do šesti měsíců do souladu s požadavky, musí přestat posílat data o unijních uživatelích do Číny. TikTok uvedl, že se proti rozhodnutí odvolá.
Společnost JetBrains uvolnila Mellum, tj. svůj velký jazykový model (LLM) pro vývojáře, jako open source. Mellum podporuje programovací jazyky Java, Kotlin, Python, Go, PHP, C, C++, C#, JavaScript, TypeScript, CSS, HTML, Rust a Ruby.
Vývojáři Kali Linuxu upozorňují na nový klíč pro podepisování balíčků. K původnímu klíči ztratili přístup.
V březnu loňského roku přestal být Redis svobodný. Společnost Redis Labs jej přelicencovala z licence BSD na nesvobodné licence Redis Source Available License (RSALv2) a Server Side Public License (SSPLv1). Hned o pár dní později vznikly svobodné forky Redisu s názvy Valkey a Redict. Dnes bylo oznámeno, že Redis je opět svobodný. S nejnovější verzí 8 je k dispozici také pod licencí AGPLv3.
Oficiální ceny Raspberry Pi Compute Modulů 4 klesly o 5 dolarů (4 GB varianty), respektive o 10 dolarů (8 GB varianty).
Byla vydána beta verze openSUSE Leap 16. Ve výchozím nastavení s novým instalátorem Agama.
Současné vývojové jádro 2.6 je 2.6.29-rc1 vydané Linusem 10. ledna. Od té doby byl proud patchů do repozitáře hlavní řady relativně pomalý.
Současné stabilní jádro 2.6 je 2.6.28; pro toto stabilní jádro nebyly ještě vydány žádné stabilní aktualizace. Pro uživatele 2.6.27 bylo 14. ledna vydáno 2.6.27.11 se slušnou řádkou oprav.
-- Daniel Phillips - souborové systémy jsou skutečně záludný kód.
-- Linus Torvalds (Díky Nicolasu Pitrovi)
-- Nick Piggin
-- Chris Mason
Mnoho lidí si stěžuje na problém binárních blobů s firmwarem; lidé z projektu OpenFWWF s tím něco dělají. Právě vydali ranou implementaci svobodného firmwaru pro desky Broadcom 802.11b a 802.11g. Ačkoliv základní firmware nevyhovuje 802.11, tzn. nepodporuje RTS/CTS proceduru ani QoS, věříme, že někdo by mohl mít zájem ho testovat. Firmware nevyžaduje modifikaci jádra a používá stejné rozvržení sdílené paměti a globální registry jako originál od Broadcomu, aby se usnadnilo jeho nahrávání ovladačem b43 (a aby se nám zjednodušilo programování...) (Díky Luisovi Rodriguezovi)
10. ledna Linus Torvalds vydal 2.6.29-rc1 a uzavřel začleňovací okno 2.6.29. Od sepsání shrnutí začleňovacího okna z minulého týdne bylo začleněno něco přes 2000 sad změn; tento článek dokončuje shrnutí tohoto vývojového cyklu.
Předtím, než se budeme zabývat detaily, je vhodné upozornit na to, že jádro 2.6.29-rc1 obsahuje pár neobvyklých pastí na vývojáře a testery. Jestliže si s tímto jádrem hrajete, měli byste si být vědomi tohoto:
Začlenění Btrfs s sebou přivedlo celou historii vývoje tohoto projektu. Jedním zajímavým výsledkem je to, že když někdo použije git, aby stáhl strom v této vývojové historii, výsledkem bude strom obsahující pouze Btrfs. Konkrétně se toto může stát během procesu dělení půlením [bisect], kde vyjde strom, který nelze přeložit či testovat - což je téměř určitě nechtěný výsledek. Řešení je jednoduché, jednoduše spusťte:
git bisect good
a pokračujte v procesu dělení půlením.
Je zde část vývojové historie jádra, která obsahuje značně poškozenou verzi reiserfs. Tímto problémem jsou opět zasaženi jenom vývojáři provozující konkrétně vybraná jádra; nicméně jestliže provozujete reiserfs, přečtěte si shrnutí a dávejte pozor.
Tak co ještě bylo začleněno do 2.6.29? Změny viditelné pro uživatele zahrnují:
Na čele seznamu je samozřejmě začlenění souborového systému Btrfs. Není nicméně možné to přehnat s opakováním toho, že Btrfs je stále vývojový souborový systém. Věci se mění rychle a systém stále zpanikaří, když vám dojde místo na disku. Pro lidi, kteří si chtějí s Btrfs hrát - obzvláště ti, kteří chtějí hlásit chyby či zasílat vylepšení - nyní je pro to skvělý čas. Nepřišel nicméně ještě čas svěřit tomuto souborovému systému své Cenné Intelektuální Vlastnictví.
Také byl začleněn Squashfs, komprimovaný souborový systém pouze pro čtení. Squashfs byl distributory balíčkován léta; jeho začlenění do hlavní řady mělo rozhodně zpoždění.
Jádro má nyní podporu pro WiMAX síťování. Současný kód podporuje zařízení Wireless Wimax Connection 2400m, ale v budoucnosti se očekávají další. Nějaké informace o WiMAX stacku vizte v v tomto dokumentačním souboru.
Jsou zde nové ovladače pro
Architektura Blackfin získala podporu pro symetrický multiprocesing. Také byla přidána podpora pro rodinu procesorů BF51x.
Paměťový řadič byl rozšířen tak, aby řídil i využívání swapu. Dříve bylo možné, aby pamětí řízená skupina [memory-controlled group] vyčerpala odkládací prostor.
Nový virtuální souborový systém "xenfs" umožňují sdílení informací a řízení mezi Xen doménami, hypervisorem a hostitelským systémem.
Nyní je možné vytvořit a provozovat souborový systém ext4 bez žurnálu. Zjevně se ztratí výhoda, kterou poskytuje žurnálování, ale výkon významně vzroste.
Byla začleněna vlastnost zmrazení souborového systému, které umožňuje uživateli s dostatečným oprávněním pozastavit změny v souborovém systému (například za účelem zálohování.)
Změny viditelné pro jaderné vývojáře zahrnují:
Byly začleněny funkce pro exkluzivní alokace I/O paměti.
Exporty mnoha SUNRPC funkcí byly změněny na pouze GPL.
Interní API MTD (memory technology device, zařízení paměťové technologie) spatřilo významné změny zaměřené na podporu větších zařízení (těch, které vyžadují 64bitové velikosti.)
Byla začleněna infrastruktura pro asynchronní volání funkcí. Tento kód je nicméně stále ve vývoji a co se 2.6.29 týče, nebude aktivován při absenci parametru příkazové řádky jádra fastboot.
A tímto končí vyjmenování významných změn přidaných do 2.6.29 - s jednou možnou výjimkou. Linus naznačil, že by mohl být ochoten prostrčit aktualizovanou verzi kódu točícího se mutexu (jak byl popsán v tomto článku o Btrfs), pokud v blízké budoucnosti projde revizí.
Projekt rychlého bootu Arjana van de Vena bude většině čtenářů Jaderných novin pravděpodobně znám. Moc Arjanovy práce však ještě nenašlo cestu do hlavní řady, takže většina z nás musí stále čekat na to, až naše počítače nabootují pomalým způsobem. Jádro 2.6.29 bude obsahovat jeden díl práce na rychlém bootování, a to infrastruktu asynchronního volání funkcí. Uživatelé nicméně budou muset vědět, kde tuto infrastrukturu najít, než ji budou moci použít.
Práce na tom, aby systém bootoval rychle, má mnoho aspektů. Nejníže visící ovoce lze nalézt v oblasti prohledávání zařízení. Zjistit, jaký hardware v systému existuje, bývá přinejlepším pomalé; jestliže to zahrnuje mechanické záležitosti (jako je roztočení disku), ještě se to zhoršuje. Jaderní vývojáři již dlouho chápou, že by mohli získat spoustu času, kdyby prohledávání těchto zařízení šlo provést přinejmenším paralelním způsobem: zatímco jádro čeká na to, až mu jedno zařízení odpoví, může mluvit k jinému. Pokusy paralelizovat tuto práci nicméně během let ztroskotaly, problémy s řazením zařízení, souběžným přístupem a další negativně ovlivnily stabilitu systému, takže paralelizační kód byl nevyhnutelně zase vyjmut. Časná inicializace tedy zůstává téměř zcela sekvenční.
Arjan doufá, že uspěje tam, kde ostatní selhali, (1) opatrně řízeným přístupem k paralelizaci, který se nepokouší paralelizovat všechno naráz a (2) API, které se pokouší zakrýt efekty paralelizace (jiné než zrychlení) před zbytkem systému. Co se (1) týče, Arjan se omezil na změnu subsystému SCSI a libata na asynchronní variantu, aniž by se věnoval zbytku systému. Práce na API zajišťuje, že registrace zařízení probíhá ve stejném pořadí, jako ve striktně sekvenčním systému. To eliminuje otravné problémy s tím, že se člověku mění jméno hardwaru mezi jednotlivými booty.
API je relativně jednoduché. Kód musí vložit <async.h> a vytvořit asynchronní pracovní funkci, která odpovídá tomuto prototypu:
typedef void (async_func_ptr) (void *data, async_cookie_t cookie);
data je v tomto případě typický privátní ukazatel na data a cookie je krycí synchronizační hodnota předaná jádrem. Asynchronní volání funkce se provede takto:
async_cookie_t async_schedule(async_func_ptr *ptr, void *data);
Volání funkce identifikované ptr proběhne během nebo po volání async_schedule(); za některých okolností může proběhnout synchronně. Návratová hodnota je cookie identifikující konkrétní asynchronní volání.
Kód, který volá asynchronní funkce, se nakonec bude chtít ujistit, že byly tyto funkce dokončeny. To je možné provést voláním:
void async_synchronize_cookie(async_cookie_t cookie);
Když toto volání doběhne, je garantováno, že byly všechny asynchronní funkce volané před tou, která je identifikována cookie, dokončeny. Kód, který dělá globálně viditelné změny (například registraci zařízení) by měl tímto způsobem synchronizovat první. Tím zajistí, že všechny globální změny, které by ve striktně sekvenčním systému proběhly první, proběhnou první i v asynchronním režimu.
Kód, které chce vyčkat na dokončení všech asynchronní funkcí, může zavolat:
void async_synchronize_full(void);
Tato funkce se vrátí, když v systému nejsou žádné asynchronně volané funkce. Samozřejmě je možné, že okamžitě poté může být zadána nějaká další.
Interně je implementace asynchronních funkcí rozumně jednoduchá. Je zde pár spojových seznamů - async_pending a async_running - které obsahují čekající a běžící volání funkcí v uvedeném pořadí. Volání async_schedule přidá volání do seznamu čekajících a možná spustí jaderné vlákno, které udělá danou práci. Obecně bude tolik vláken, kolik je platných asynchronních volání funkcí, s napevno zadaným omezením (v současnosti 256). Když vlákno dokončí volání funkce a zjistí, že je seznam čekajících prázdný, ukončí se.
Existuje varianta tohoto API se zvláštním účelem:
async_cookie_t async_schedule_special(async_func_ptr *ptr, void *data, struct list_head *running); void async_synchronize_cookie_special(async_cookie_t cookie, struct list_head *running); void async_synchronize_full_special(struct list_head *list);
Tyto funkce volajícímu umožní předat oddělený seznam, který se má použít místo seznamu async_running. To následně umožní synchronizaci nezávislou na kterékoliv jiné asynchronní funkci běžící v systému. V 2.6.29-rc1 je jeden předpokládaný uživatel tohoto API, který ve skutečnosti ani není součástí procesu bootování: kód mazání inodů ve vrstvě virtuálního souborového systému. Asynchronní mazání urychluje proces výmazu velkého množství souborů. Stojí za to poznamenat, že v 2.6.29 toto API také nefunguje tak, jak je oznamováno - nedostatek, který bude pravděpodobně brzy opraven.
Ve skutečnosti asynchronní volání funkcí obecně nefunguje tak dobře, jak by si jeden v danou chvíli přál. Kód byl začleněn do 2.6.29-rc1, ale uživatelé okamžitě začali hlásit problémy. Jeden z nich (na který narazil autor tohoto článku) spočívá v tom, že proces vyhledávání SATA disků může být "synchronizován", zatímco proces vyhledávání oddílů ještě běží, což vede k systémům, které nenabootují. Výsledkem tohoto problému a dalších obav je to, že Arjan požádal Linuse, aby většinu kódu zakázal, aby se mohl stabilizovat do 2.6.30. Nakonec tedy kód zůstává na místě, ale není aktivován, pokud chybí jaderný parametr fastboot. Vývojáři dobrodruhové tedy mohou asynchronní volání funkcí vyzkoušet; my ostatní můžeme počkat, až se tato vlastnost ještě trochu dovaří.
Klíčové slovo inline poskytované GCC bylo pro jaderné programátory vždy poněkud nebezpečným pokušením. V mnoha případech může vkládání kódu [inline] funkce vylepšit výkonnost. V některých je povinné; to platí obzvláště pro funkce, které obalují specifické instrukce CPU. V jiných případech je ale vkládání kódu klasickým příkladem předčasné optimalizace; přinejlepším nepomůže, přinejhorším zvětšuje jádro a výkonnost poškodí. Vzhledem k tomu, že jaderným vývojářům na výkonu záleží, správný způsob vkládání kódu funkcí byl vždy předmětem diskuzí. Nejnovější debata o tomto tématu nicméně jasně ukázala, že o tomto problému neexistuje žádný jasný konsenzus.
Diskuze začala jako výhonek u tématu točících se mutexů, kde si v zaslaném jaderném výpisu oopsu Linus všiml toho, že funkce __cmpxchg() nebyla vložena. Tato funkce poskytuje přístup k x86 instrukcím cmpxchg*; měla by se rozbalit na jedinou instrukci. Vložit kód funkce, která obsahuje jedinou instrukci, má zjevně smysl, ale GCC se z nějakého důvodu rozhodlo to neudělat.
Linus rychle došel k závěru, že chyba je v konfigurační volbě CONFIG_OPTIMIZE_INLINING (není výchozí). Když je tato volba zapnuta, GCC inline považuje za návrh, který může ignorovat. V takové situaci se GCC rozhoduje samostatně podle zabudované heuristiky. V tomto případě se rozhodlo, že __cmpxchg() je pro vkládání kódu příliš komplexní, takže z ní udělalo samostatnou funkci. Znechucený Linus požádal Inga Molnára, aby CONFIG_OPTIMIZE_INLINING odstranil a donutil překladač řídit se podle klíčového slova inline.
Někteří další vývojáři s tímto požadavkem souhlasili - ale ne všichni. GCC bude určitě dělat chyby, ale také roste pocit, že čím novější verze, tím častěji překladač dojde ke správnému rozhodnutí. Jestliže je GCC umožněno vkládat kód funkcí, které tak nebyly vývojářem výslovně označeny, výsledky mohou být ještě lepší. Na druhou stranu je tu riziko, když je GCC dána příliš volná ruka: přehnané vkládání kódu může vést k problémům s užíváním zásobníku a ztěžovat ladění. To jsou ale problémy, které jsou vývojáři ochotni přijmout, jestliže bude zisk dostatečně velký.
Ingo provedl dlouhou sérii testů, ve které se snažil zjistit, co se stane, když je GCC dána volná vláda nad vkládáním funkcí. Jeho výsledky byly poměrně jasné: nejnovější GCC, když je mu umožněno samostatně se rozhodovat o vkládání funkcí, vytváří jádro, které je o 1-7% menší než jádro, které vznikne při striktním dodržování klíčového slova inline. Z těchto dat Ingo vyvozuje, že nejlepším řešením je použít vkládání zabudované do překladače.
Linus nicméně nebyl nadšen. Z jeho úhlu pohledu redukce velikosti poskytovaná automatickým vkládáním kódu nepřevažuje nad nevýhodami:
Linus by byl radši, kdyby klíčové slovo inline bylo pro překladač povinné. Pak, jestliže je v jádře příliš mnoho inline funkcí (a 30 000 zní jako docela velké číslo), by měly být odstraněna zbytečná klíčová slova inline. Trochu se mluvilo o přidání nějakého klíčového slova inline_hint (inline_rada) pro případy, kde je vložení funkce pouze navrhováno, ale tento přístup si mnoho sympatií nezískal.
Problém se zcela manuálním přístupem - i když budeme předpokládat, že může poskytnout nejlepší výsledky - pravděpodobně nejlépe vystihl Ingo:
Řešení nadměrného používání inline funkcí oslabením významu klíčového slova inline může vypadat jako řešení špatným směrem. Alternativou by ale bylo mnohem pozornější revidování jaderných patchů před začleněním do hlavní řady. Historie ukazuje, že snaha dosáhnout takové úrovně revidování je přinejlepším předem prohraná bitva. Také ukazuje, že překladače bývají, co se týče tohoto druhu rozhodování, lepší než programátoři, obzvláště když jde o chování celého kódu dohromady (a ne jednotlivých funkcí). Může nicméně chvíli trvat, než bude komunita vývojářů jako celek ochotna věnovat těmto nástrojům tolik důvěry.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
Mno, ja narozdil od vas pouzival fglrx od ATI/AMD, radeonhd od Novellu a radeon od X.org a musim vam rict, za zatim si vede nejlepe ten "nejopensourceovejsi", posledni jmenovany. Ta sracka od ATI (a ne, nvidia neni o nic lepsi) absolutne nema sanci konkurovat.
Mě nvidia akceleruje video jak o závod, fullhd, které mi procesor nestíháV tej súvislosti ma napadá otázka: Ako rozoznať či je bottleneck-om jadro, ovládač grafiky, CPU alebo GPU?
Dobře, jdu si obléct své azbestové spodní prádlo, jen tak bez důvodu.
Nechápu přesně co se tím chce říct, protože ani po následování linku mi kontext není úplně jasný - ale nebyl by adekvátnější překlad "To jsem si bral své azbestové prádlo zbytečně"?
Subj.: Flame Linus to a crisp! Ok, there's no way to do this gracefully, so I won't even try. I'm going to just hunker down for some really impressive extended flaming, and my asbestos underwear is firmly in place, and extremely uncomfortable. I want to make it clear that DRM is perfectly ok with Linux! [snip]
Jo, byl. Pisatel podle všeho očekával pořádný flame o mutexech a žádný se nekonal.
Další nesmysl v překladu hlášek je to "indiánské tajemství". Podle mě by to mělo být spíš "indický mudrc," ale v angličtině je občas problém poznat indiána od inda a naopak, takže za toho inda ruku do ohně nedám.
Vtip je v tom, že ty jsi žádnou licenci neporušil pokud jsi ten modifikovaný kód někomu nedistribuoval. Prostě to co si ty děláš na svém počítači a jestli si tam provozuješ jádro třeba s vypnutými GPL only exporty je čistě tvoje věc. Dokonce si nejsem jistý jestli by vůbec něco nadělali jaderní vývojáři s tím, když by jsi pravidelně vydával zdrojáky jádra bez těchto omezení. Bylo by to morálně pochybné, ale právně naprosto v pořádku. Vzal by jsi GPL kód, zmodifikoval a vydal zase pod GPL. GPL by jsi nijak neporušil. Jen by jsi to myslím nemohl vydávat za Linux (ochranná známka spravovaná nadací založenou Linusem). Dokonce by jsi mohl vydávat i takovou binárku jádra. Opět GPL by nebyla nijak porušena. Jen by se na tebe sesypaly sprosté nadávky, vyzývali by k tvému bojkotu, pokoušeli by se tě zažalovat (zbytečně) a je otázka kdo by tomu tvému jádru věřil a používal ho. Ta ochrana je tam víceméně jako upozornění pro dodavatele binárních ne GPL ovladačů ve smyslu: "Když potřebujete tenhle symbol a vydáte binárku pod jinou licencí než GPL, tak jste s GPL s největší pravděpodobností porušili."
Vtip je v tom, že ty jsi žádnou licenci neporušil pokud jsi ten modifikovaný kód někomu nedistribuoval.To by platilo pouze v případě, kdy ta licence připouští jakýkoli způsob "osobního" použití programu a řeší jen distribuci (taková je např. GPL). Ale jinak i k úpravě autorského díla je třeba mít licenci, i když upravené dílo nebudete distribuovat. Kdyby tomu tak nebylo, je třeba možné beztrestně provádět jakékoli reverzní inženýrství -- tak tomu ale není, v (českém) AZ jsou na to přísné podmínky.
GEM uz v jadre je od minule verze, ale nevite, jak to vypada s kernel mode setting? Melo se dostat do 2.6.29.
Fakt demence, že vyjde distribuce s ovladačem xx a i když vyjde zz, tak ho tam nedají a musí tam být pořád xx.Minimálně pro Fedoru tohle neplatí. Např. xorg-x11-drv-ati, který používám, vyšel ve Fedoře 10 ve verzi 6.9.0 a v updatech pak vyšel 6.10.0. Dál už jsem nečetl, vypadalo to už moc jako zbytečné stěžování si.
Stejně tak výměnná média. Když nechci používat KDE ani GNOME, tak prostě musím jak dement lézt do konzole a růčo to všechno připojovat.
To je fakt hrozné. Raději použijeme sadu skriptů, které nejprve budou půl minuty médium ošahávat, aby zjistili, že cédéčko je prázné, a pak automagicky uhádnou, který uživatel si ho tam strčil, a podle toho nastaví přístupová práva k zařízení, takže síťový uživatel, co ho tam dal, protože nemá ve své stanici vypalovačku, se k němu nedostane.
No trolleni je to vydarene... Debian ma 1.6 RC, 2.6.1, 7.4 uz celkem dlouho (=od te doby, co vysly).
A musim rict, ze to funguje skvele :)
Byla rec o GEMu, ne KMS. 2.6.29 jeste neni ani vydane, takze bych to neresil. Ovladac z experimentalu mi s 2.6.28 snapshoty funguje skvele, vcetne UXA - takhle rychla KDEcka jsem nemel uz dlouho :)
On ma teda Intel 2.6.1 dost vlastnich problemu i s GEMem, ale o tom puvodni trolleni nebylo.
k tomu ArchLinuxu: v AUR je xf86-video-intel 2.6.1 ... networkmanager + nm-applet mi funguje na trech instalacich bez problemu ... pouzivat FATku (FAT16 ?) je debilita ... a ano, policykit je fakt "totalne zkurvenej"
networkmanager mam taky z extra a funguje naprosto bezne a bez problemu i bez roota. xf-86-video-intel-newest 2.6.1-2 z AUR ma vsechny zavislosti v extra a pokud pouzivate xf86-video-intel 2.4, mate je uz beztak vsechny nainstalovane (krome automake). Pokud je v PKGBUILDu v AUR spravne popsany konflikt s puvodnim balikem xf86-video-intel, rozhodne se nic "nerozprasi".
Pro lidi, kteří si chtějí s Btrfs hrát - obzvláště ti, kteří chtějí hlásit chyby či zasílat vylepšení - nyní je pro to skvělý čas.
Ta věta je nějaká divná.
A to s ručníky: ROFL!
typedef void (async_func_ptr) (void *data, async_cookie_t cookie);Nechybí tam hvězdička?
typedef void (*async_func_ptr) (void *data, async_cookie_t cookie);