abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 13:33 | Komunita

Služba Firefox Send (zprávička) pro jednoduché a soukromé sdílení souborů s end-to-end šifrováním je dočasně pozastavena. Byla zneužívaná k šíření malwaru [reddit].

Ladislav Hagara | Komentářů: 1
dnes 05:55 | Komunita

Google a Canonical společně oznámili možnost běhu aplikací postavených na Flutteru (Wikipedie) také na Linuxu. Na Linuxu lze tyto grafické aplikace také přímo vyvíjet. Současně byla představena pomocí Flutteru vytvořená aplikace pro správu kontaktů Flokk. Ukázka aplikace běžící na Ubuntu na YouTube. Flutter SDK i Flokk jsou již k dispozici také jako Snap balíčky na Stapcraftu.

Ladislav Hagara | Komentářů: 1
dnes 02:22 | Komunita

Google na svém blogu věnovanému open source představil novou organizaci Open Usage Commons. Cílem této organizace je rozšířit filozofii a definici open source také na ochranné známky projektů. První tři zapojené projekty jsou Angular, Gerrit a Istio. Více v často kladených otázkách (FAQ).

Ladislav Hagara | Komentářů: 0
dnes 01:11 | Nová verze

Společnost NVIDIA oficiálně vydala verzi 11.0 toolkitu CUDA (Wikipedie) umožňujícího vývoj aplikací běžících na jejich grafických kartách. Přehled novinek v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
včera 17:44 | Nová verze

Byla vydána verze 6 vizuálního programovacího jazyka Snap! (Wikipedie) inspirovaného jazykem Scratch (Wikipedie). Přehled novinek a diskuse v diskusním fóru. Poznámky k vydání na GitHubu. Videoukázky na YouTube.

Ladislav Hagara | Komentářů: 1
včera 17:33 | Komunita

MojeFedora.cz informuje, že souborový systém Btrfs míří do desktopové Fedory. Návrh na změnu výchozího souborového systému z Ext4 na Btrfs včera schválilo FESCo a vrátilo ho k finálnímu schválení pracovní skupině kolem edice Workstation. Tam se zamítnutí nepředpokládá, takže se nyní řeší ne jestli, ale kdy ke změně dojde.

Ladislav Hagara | Komentářů: 13
včera 15:55 | IT novinky

Společnost SUSE kupuje společnost Rancher Labs. Společnost Rancher Labs je známá mimo jiné svou platformou Rancher pro řízení Kubernetes.

Ladislav Hagara | Komentářů: 11
včera 15:11 | Nová verze

Byla vydána verze 2.6.0 svobodného multiplatformního správce hesel KeePassXC (Wikipedie). Jedná se o komunitní fork správce hesel KeePassX s řadou vylepšení.

Ladislav Hagara | Komentářů: 10
včera 13:11 | Nová verze

Po téměř sedmi letech byla vydána nová verze 0.4 aplikace Getting Things GNOME! (GTG). Jedná se o osobní organizátor úkolů a seznamů TODO pro GNOME inspirovaný metodou organizace práce Getting Things Done (GTD). Prezentace GTG na YouTube. Zdrojové kódy jsou k dispozici na GitHubu. Balíček ve formátu Flatpak na Flathubu.

Ladislav Hagara | Komentářů: 0
včera 08:00 | Komunita

Novinky na stránkách linuxové distribuce Gentoo upozorňují na oficiální obrazy Gentoo pro Docker a novou verzi tarballu s Gentoo pro Android.

Ladislav Hagara | Komentářů: 0
Používáte některé open-source řešení [protokol] pro šifrovaný instant messaging?
 (22%)
 (30%)
 (4%)
 (12%)
 (18%)
 (6%)
 (13%)
 (25%)
Celkem 319 hlasů
 Komentářů: 35, poslední dnes 02:05
Rozcestník

Jaderné noviny – 22. 10. 2014: Začleňovací okno verze 3.18 – závěr

19. 11. 2014 | Tadeáš Pelech | Jaderné noviny | 2542×

Aktuální verze jádra: 3.18. Citáty týdne. Začleňovací okno verze 3.18 – závěr. Tři přednášky o vývojových nástrojích jádra.

Obsah

Aktuální verze jádra: 3.18-rc1

link

Aktuální vývojové jádro je 3.18-rc1, vydané 19. října (odkaz), trošku v předstihu oproti plánu. Linus řekl, že on bude nadmíru otevřený požadavkům na zařazení po rc1 od lidí, kteří „se trochu loudali.“ Linus k tomu řekl:

Existuje také alespoň jeden požadavek na zařazení, který doufám dostanu co nejdříve a který mám stále v plánu zařadit. Myslím tím, že stále doufám, že bude konečně začleněn overlayfs.

Nakonec si během tohoto začleňování našlo do hlavního repozitáře cestu 9 711 nezačleněných sad změn.

Stabilní aktualizace: minulý týden nebyly vydány žádné stabilní aktualizace.

Začleňovací okno 3.18 – závěr

link

Souhrn o začleňovacím okně z minulého týdne odvážně předpovídal, že začleňovací okno verze 3.18 by mohlo skončit dříve, než se očekávalo. A Linus opravdu vydal verzi 3.18-rc1 19. října, o týden dříve oproti původnímu plánu. Nakonec si před vydáním verze 3.18-rc1 našlo do Linusova úložiště cestu 9 711 nezačleněných sad změn; od té doby bylo přidáno dalších zhruba 200 (v době vzniku tohoto textu). Linus dal jasně najevo, že bude otevřenější než obvykle k přidáním funkcí po vydání rc1, vzhledem k tomu, že se někteří vývojáři mohli spoléhat na původní časový plán. Několika funkcím se to již podařilo.

Mezi začleněné změny z pohledu uživatele od shrnutí z minulého týdne patří:

  • Blokové zařízení Rados získalo podporu požadavků na smazání.
  • Podpora nového hardwaru zahrnuje:
    • Vstup: Dotykové displeje Microchip AR1021 i2c.
    • Různé: Nabíječky baterií Maxim MAX77836, integrované obvody pro správu napájení (PMIC) Ricoh RN5T5618, PMIC Rockchip RK808, PMIC HiSilicon Hi6421, PMIC Qualcomm SPMI, hodiny PMIC Maxim 77802, kontroléry I2C Axxia a vysokorychlostní kontroléry I2C Hisilicon Hix5hd2.
    • Sledovací zařízení: Časovače sledovacích zařízení Cadence, časovače sledovacích zařízení Qualcomm MSM8960, APQ8064 a IPQ8064, časovače sledovacích zařízení Ricoh RN5T618, časovače sledovacích zařízení Dialog DA9063 a časovače sledovacích zařízení Amlogic Meson SoC.
Mezi změny viditelné pro vývojáře jádra patří:
  • Pokračují práce na podpoře sestavení jádra kompilátorem LLVM. Zejména použití proměnné délky polí ve strukturách je nestandardní a není v LLVM podporováno, takže tato použití je třeba z kódu jádra odstranit. Přibylo makro, SHASH_DESC_ON_STACK() (deklarované v tomto potvrzení), které slouží k nahrazení takových polí.
  • Řada funkcí závislých na procesoru byla zařazena mezi zastaralé; patří mezi ně __get_cpu_var() (místo ní použijte this_cpu_ptr()) a __this_cpu_ptr() (nahrazena raw_cpu_ptr()).
  • Pro rámec pro komunikační mechanismy hardwarového interprocesoru je k dispozici nová „poštovní schránka“. Pár dalších informací najdete v souboru Documentation/mailbox.txt.

V tomto okamžiku začíná být důležitý stabilizační proces. Pokud bude původní plán dodržen, finální verzi jádra 3.18 lze očekávat někdy kolem začátku prosince.

Tři přednášky o vývojových nástrojích jádra

link

Konference linuxových instalatérů se snaží soustředit na diskuse nad prezentacemi. Mikrokonference o vývojových nástrojích se ale pustila proti proudu, protože se skládala převážně z řady prezentací o zajímavém zavádění nástrojů do jádra. Některé nástroje jsou užitečné dříve než ostatní; zde se zaměříme na několik nástrojů, které mohou pomoci vývojářům již nyní.

Použití Coccinelle pro backporty

Projekt backportů jádra se zaměřuje na zpřístupnění ovladačů z nejnovějších verzí jádra do starších stabilních vydání jádra. Myšlenkou je poskytovat nejlepší hardwarovou podporu na platformě, která je jako celek poměrně stabilní a bez chyb. Není překvapením, že distributoři korporátních verzí Linuxu mají o tuto práci zájem, ale nejsou sami.

Projekt má v současné době tři hlavní vývojáře, kteří pracují na backportu asi 800 ovladačů starších jader. Dovedete si představit, že je to docela dost práce; Luis Rodriguez mluvil o tom, jak se dá nástroj Coccinelle použít k řešení problémů v rámci relativně malé skupiny vývojářů. (Seznámení s nástrojem Coccinelle a jeho schopnostmi viz tento článek).

Je zřejmé, že k rozšíření na zhruba 800 backportovaných ovladačů vyžaduje poměrně velkou míru kompromisů. Testování všech těchto ovladačů je jednou z prvních věcí; vývojáři nemají na testování dostatek času ani hardwaru. Takže můžou jen slíbit, že zkompilované backportované verze ovladačů budou fungovat. Radiče jsou backportované až ke stabilnímu jádru 3.0; skupina dříve nabízela backporty až do řady 2.6, ale zájem o ně téměř vymizel. Backportování mnoha typů ovladačů ani není v plánu; například subsystém DRM je komplexní a není dostatek zájmu na straně distributora, který by práce na backportu podnítil. Takže většina backportovaných ovladačů se zaměřuje na subsystémech jako Ethernet, bezdrátových připojení, Bluetooth, NFS, Video4Linux apod.

Luis řekl, že projekt backportování slouží jako motivace vývojářům, aby se jejich kód dostal do hlavní verze. Jakmile je ovladač v hlavní větvi jádra, backportování je k dispozici zdarma.

Backportování je trochu neobvyklé použití nástroje Coccinelle, který se běžně používá k vývoji jádra směrem vpřed. Většina vývojářů ji občas používá pro změny ve vymezených částech jádra směrem vpřed. Projekt backportování ho naopak používá k portování ovladačů v seznamu do starších verzí.

Backportování se podle Luise obvykle provádí rozprostíráním #ifdef po celém kódu. To je „backportování na prášky“; vede k opravám, které jsou rozsáhlé a náročné na revize. A stejné únavnou práci je nutné udělat pro každý ovladač na seznamu. Musí existovat lepší způsob.

Prvním krokem tímto směrem je přesunout co nejvíce kódu spojeného s backportování do souborů hlaviček. Pokud například dojde ke změně funkčního prototypu, příslušná hlavička bude obsahovat novou verzi funkce (pod jiným názvem), která funguje se starším kódem. Různá místa volání lze upravit pro použití nové funkce, bez řádků #ifdef v samotném kódu. Podle Lusie může jednodušší změny provést Coccinelle zcela bez problémů.

A co náročnější změny? Jako příklad uvedl Luis obsluhu podprocesů přerušení; jak se dá backportovat kód využívající tento druh obsluhy do jader, která takovou funkcionalitu neobsahují? Řešením v tomto případě bylo backportovat podprocesy obsluhy v samostatném modulu a přidat funkci compat_request_threaded_irq() pro backportované ovladače. Nejtěžší na tom ale bylo zjistit, kam umístit ukazatel na potřebná soukromá data. Vznikla složitá sémantická oprava nástroje Coccinelle, která zjišťuje, jakou datovou strukturu každý řadič používá k reprezentaci svého zařízení, potom na ni přidá nový ukazatel. Takovým způsobem je možné provést backport v automatizovaném režimu pro všechny ovladače.

Louis vysvětlil, že díky použití Coccinelle k backportování je celá práce jednodušší a konzistentnější; s tímto nástrojem je tým schopen backportovat mnohem více ovladačů. Díky vytvoření jednoho pravidla Coccinelle pro každou relevantní verzi jádra může tým držet krok se změnami jádra a získat pro všechny praktické účely automatické backporty pro širokou škálu ovladačů. Podle Luise je opodstatněné, aby byly sémantické opravy pro backportování součástí hlavní verze jádra – nikdo však takovou opravu ovšem ještě nenavrhl.

Pozor na hrobaře

Vývojáři jádra se snaží minimalizovat využití konstrukcí #ifdef, ale ve zdrojovém stromu jádra jich je stále obrovské množství. Zajímavé podle Valentina Rotberga je, že mnoho z těchto bloků nedává ve skutečnosti smysl. V mnoha případech nelze možnosti konfigurace jádra zkombinovat tak, aby šlo jádro úspěšně sestavit; daný blok je tedy mrtvý kód. V jiných případech půjde kód zkompilovat ve všech případech; Valentin proto takový nazývá kód „nemrtvý“.

Mrtvý a nemrtvý kód může vzniknout z různých důvodů. Jednou z příčin mohou být překlepy v názvech symbolů CONFIG_; neznámý identifikátor je jednoduše vyhodnocen jako NEPRAVDA, místo aby byla vyvolána chyba. Někdy nejsou symboly konfigurace skutečně nezávislé; představte si CONFIG_BAR, který lze nastavit teprve po nastavení CONFIG_FOO. Pokud vidíte kód jako:

    #ifdef CONFIG_BAR
      /* ... */
    #ifndef CONFIG_FOO
      /* tento kód je mrtvý */
    #endif
    #endif

víte, že blok kódu uprostřed nebude nikdy přeložen. Tímto druhem logické chyby je způsobeno asi 25 % všech mrtvých/nemrtvých bloků kódu v jádru. Valentin nalezl celkem více než 1 000 mrtvých nebo nemrtvý bloků ve verzi jádra 2.6.29; tento počet se snížil na zhruba 600 ve verzi 3.17 – což je zlepšení, ale stále příliš mnoho. Tyto bloky #ifdef jsou záměrně podmíněné; mrtvé nebo nemrtvé bloky jdou proti tomuto záměru. Někdy také skrývají chyby; Valentin našel chybu nevracení paměti způsobenou chybou v CONFIG_HOTPLUG_CPU.

Řešením tohoto problému je použít Valetinův nástroj undertaker-checkpatch. Tento nástroj vyhodnotí opravu, poznamená změny do bloku #ifdef a označí veškerý mrtvý nebo nemrtvý kód, který nalezne. Opravy kontrolované tímto způsobem by neměly do jádra přidávat další problémy související s #ifdef. Undertaker je k dispozici na této webové stránce.

Editor LWN se zeptal, proč nebyla tato práce, která vypadá užitečně, jednoduše integrovaná do checkpatch.pl a začleněna do hlavního stromu. Zdá se, že existuje několik problémů spojených s touto myšlenkou, počínaje tím, undertaker-checkpatch je napsaný v C++. Navíc pracuje několik minut, což nemusí vývojářům v rámci běžného procesu vyhovovat. Valentin upozornil, že přece jen jde o výzkumný projekt; vývojáři nemají dost času a motivace změnit ho na produkční kód.

Tudíž se zdá, že undertaker-checkpatch by mohl potkat osud mnoha jiných akademických projektů. Ale existuje ještě jeden způsob, jak tento nástroj nadále používat v komunitě vývojářů jádra: integrovat ho do reaktivních testování systému Feng-kuang Wua. Pak vývojáři dostanou zdvořilý e-mail, když do jádra přidají problémy spojené s #ifdef. To je Valentinem doporučený způsob, jak by mohl být tento nástroj užitečný komunitě vývojářů jádra.

Vampyr

Projekt, který úzce souvisí s nástrojem Undertaker, je Vampyr, na němž pracuje na stejná skupina vývojářů. Stefan Hengelein popsal základní problém, který se snaží Vampyr řešit: skutečnost, že většina oprav jádra se testuje pouze na jedné nebo dvou konfiguracích jádra. Ale skutečný konfigurační prostor pro jádro je obrovský, a často není těžké najít kombinace konfiguračních parametrů, které nefungují tak, jak bylo zamýšleno.

Stefan řekl, že proto je opravy nutné kontrolovat se všemi příslušnými možnostmi konfigurace. To je těžko proveditelné a vyžaduje spoustu času na přemýšlení. Aktuální jádra mají téměř 14 000 možností konfigurace; je otázkou, zda je k dispozici dostatek lidí na kontrolu kódu se všemi možnými kombinacemi konfigurace.

Alternativou je nástroj Vampyr, jehož cílem je vytvořit „maximalizovanou sadu“ konfigurací jádra pro danou opravu. Prohledává konfigurační prostor a nachází kombinace, které muhou způsobit sestavení odlišného kódu. Výsledkem je obvykle několik konfigurací, z nichž každá slouží k testování sestavení.

Pomocí nástroje Vampyr se vývojářům podařilo objevit mnoho varování a jasných chyb. Kód x86 generuje o 15 % více varování při použití nástroje Vampyr, zatímco MIPS se zvyšuje o 58 %. S architekturou ARM využití nástroje Vampyr téměř zdvojnásobilo počet varování a vyústilo v identifikaci 91 potvrzených chyb. Stefan řekl, že se situace zlepšila v novějších jádrech, zejména v kódu x86; ostatní architektury se tolik nezlepšila.

Kód je k dispozici v rámci licence GPL v3; je k dispozici na webu nástroje Undertaker.

[Editor LWN by chtěl poděkovat nadaci Linux Foundation za podporu jeho cesty na konferenci linuxových instalatérů.]

       

Hodnocení: 100 %

        špatnédobré        

Nástroje: Tisk bez diskuse

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

20.11.2014 09:00 pet
Rozbalit Rozbalit vše Re: Jaderné noviny – 22. 10. 2014: Začleňovací okno verze 3.18 – závěr
>> [Editor LWN by chtěl poděkovat nadaci Linux Foundation za podporu jeho cesty na konferenci linuxových instalatérů.]

A já bych chtěl poděkovat autorovi překladů za jeho namáhavou práci díky níž se i já (a nejen já) mohu seznamovat s tím, co se je nového ve vývoji kernelu. [Díky.]
25.11.2014 15:42 koudy
Rozbalit Rozbalit vše Re: Jaderné noviny – 22. 10. 2014: Začleňovací okno verze 3.18 – závěr
+1
ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.