Richard Stallman dnes v Liberci přednáší o svobodném softwaru a svobodě v digitální společnosti. Od 16:30 v aule budovy G na Technické univerzitě v Liberci. V anglickém jazyce s automaticky generovanými českými titulky. Vstup je zdarma i pro širokou veřejnost.
sudo-rs, tj. sudo a su přepsáné do programovacího jazyka Rust, nahradí v Ubuntu 25.10 klasické sudo. V plánu je také přechod od klasických coreutils k uutils coreutils napsaných v Rustu.
Fedora se stala oficiální distribucí WSL (Windows Subsystem for Linux).
Společnost IBM představila server IBM LinuxONE Emperor 5 poháněný procesorem IBM Telum II.
Byla vydána verze 4.0 multiplatformního integrovaného vývojového prostředí (IDE) pro rychlý vývoj aplikaci (RAD) ve Free Pascalu Lazarus (Wikipedie). Přehled novinek v poznámkách k vydání. Využíván je Free Pascal Compiler (FPC) 3.2.2.
Podpora Windows 10 končí 14. října 2025. Připravovaná kampaň Konec desítek (End of 10) může uživatelům pomoci s přechodem na Linux.
Již tuto středu proběhne 50. Virtuální Bastlírna, tedy dle římského číslování L. Bude L značit velikost, tedy více diskutujících než obvykle, či délku, neboť díky svátku lze diskutovat dlouho do noci? Bude i příští Virtuální Bastlírna virtuální nebo reálná? Nejen to se dozvíte, když dorazíte na diskuzní večer o elektronice, softwaru, ale technice obecně, který si můžete představit jako virtuální posezení u piva spojené s učenou
… více »Český statistický úřad rozšiřuje Statistický geoportál o Datový portál GIS s otevřenými geografickými daty. Ten umožňuje stahování datových sad podle potřeb uživatelů i jejich prohlížení v mapě a přináší nové možnosti v oblasti analýzy a využití statistických dat.
Kevin Lin zkouší využívat chytré brýle Mentra při hraní na piano. Vytváří aplikaci AugmentedChords, pomocí které si do brýlí posílá notový zápis (YouTube). Uvnitř brýlí běží AugmentOS (GitHub), tj. open source operační systém pro chytré brýle.
Aktuální předverze řady 2.6 je 2.6.20-rc1, vydaná 13. prosince. V krátkém changelogu najdete dlouhý seznam patchů začleněných pro 2.6.20.
Od vydání -rc1 bylo do hlavního git repozitáře zařazeno několik desítek patchů (to je poměrně málo).
Aktuální verze -mm stromu je 2.6.20-rc1-mm1. Mezi nedávné změny patří nová verze systému pro ovladače v uživatelském prostředí, funkce pro oznamování nečinnosti na x86-64, mechanismus pro uvolňování stránek po kusech [lumpy reclaim mechanism] a nová verze dynamického času [dynamic tick].
18. prosince byla vydána verze 2.6.18.6; obsahuje slušnou řádku patchů (včetně jednoho týkajícího se bezpečnosti).
Adrian Bunk vydal verzi 2.6.16.36, ve které je trocha patchů a 2.6.16.37-rc1 s několika desítkami dalších.
Willy Tarreau nelenil a vydal 2.4.33.5 (dva bezpečnostní patche), 2.4.33.6 (jeden další) a 2.4.34-rc3 (asi poslední před konečným vydáním 2.4.34).
Přestože zdravotní pojištění od Red Hatu zahrnuje i problémy s "duševním zdravím", raději bych se této cestě vyhnul. Nedokážeme pořádně podporovat *jedno* jádro. Na které planetě by tedy dávalo smysl přihodit do hry ještě další varianty?
-- Dave Jones
Chvilku se zdálo, že všechno půjde docela rychle. Martin Bligh podotkl, že místo pokusů o uždibování binárních modulů k smrti by bylo férovější je rovnou zakázat. Andrew Morton se o nápadu vyjádřil kladně pod podmínkou, že bude poskytnuto varování rok dopředu. Greg Kroah-Hartman spíchl patch, který by varování zařídil. A Linus se zpočátku omezil na komentování Gregovy poezie.
Obrat však nastal stejně rychle. Linus se vyslovil proti takové změně (CZ) a Greg patch stáhl (CZ). Vypadá to, že i v dohledné budoucnosti bude možné binární moduly bez zdrojových kódů do jádra natahovat - i když jejich distributory mohou čekat jiné potíže.
Natahování proprietárních modulů nebylo zakázáno z několika důvodů. Prvním z nich je fakt, že na tom není nic špatného. GPL poměrně jasně říká, že pokud má někdo kód licencovaný GPL, může si s ním dělat, co chce. Pokud chce dát své pěkné a svobodné jádro dohromady s velkým proprietárním balíkem, má na to právo. Takže zakazování proprietárních modulů problém napadá na špatném místě a pokouší se zakázat činnost, kterou licence povoluje.
I kdyby se GPL dala interpretovat tak, že zakazuje natahování binárních modulů, pořád je tu ještě otázka spravedlivého užívání [fair use]. Jako komunita se obecně kloníme spíše k širokému výkladu práva na spravedlivé užití. Ale spravedlivost je oboustranná. Několik lidí v diskuzi varovalo před přejímáním taktik, které si osvojil zábavní průmysl, a přehnaně benevolentním výkladem toho, co copyrightový zákon autorům umožňuje. Ben Collins to řekl takto:
Postupné změny namířené k uvázání jaderných modulů na konkrétní licenci(e) se podobají pomalému uzavírání obsahu (hudba/filmy), na které si lidé tak hlasitě stěžují. Stává se z toho DRM pro kód.
Skutečnost, že jsou někteří lidé ochotni uvažovat o využití DMCA k zajištění, aby nikdo neodstranil z kódu zákaz proprietárních modulů, dává tomuto pohledu za pravdu. Alan Cox poznamenal, že se z lidí stává to, proti čemu bojují. Většina lidí v komunitě by se pravděpodobně shodla na tom, že nechtějí být jako zábavní průmysl; to se zjevně dost podepsalo na nahlodání podpory pro zakazování proprietárních modulů.
GPL však mluví o distribuci; distribuuje-li někdo něco založeného na kódu licencovaném GPL, musí to dělat v souladu s podmínkami GPL. Takže na právně nejasnou půdu se dostává distribuování proprietárních modulů. Ale, jak připomíná Linus, samotný fakt, že lze modul natáhnout do jádra, z něj nemusí dělat odvozenou práci. Rozlišování toho, jestli něco odvozené je, nebo není, je komplikovaný proces. A často je nutné, aby měl poslední slovo soud. Ale zakázání všech proprietárních modulů na základě tvrzení, že jsou to všechno neoprávněně odvozené práce, by šlo obhájit těžko.
Výsledkem je, že v blízké budoucnosti nebudou do jádra přidána žádná technická opatření pro blokování binárních modulů. Nespokojenost s těmito moduly však přetrvává, jak je vidět z Gregovy zprávy, která doprovázela stažení patche:
Já už mám té celé záležitosti prostě plné zuby. Mám plné zuby lidí, kteří si myslí, že mají právo pořád porušovat můj copyright. Mám plné zuby lidí a společností, které naši licenci okatě překrucují, ale přijde jim to OK. Protože jsme volné společenství jednotlivců a ne firma nebo právnická osoba, mají společnosti tu drzost si myslet, že jim porušování licence projde.
Zdá se být jasné, že problém sám nezmizí, i když byl tento konkrétní přístup zamítnut. Nespokojeným vývojářům se nabízí právní řešení: pokud se ukáže, že je distribucí některého z binárních modulů porušován copyright, mají držitelé copyrightu právo jít k soudu a zarazit to. Snahy o prosazení dodržování GPL byly doposud většinou úspěšné. Nebylo by tedy překvapující, kdyby se někdy v průběhu roku jeden nebo více vývojářů rozhodlo podat žalobu na distributora binárního modulu. Ta nespokojenost jen tak neodezní.
Když Linus vydával verzi 2.6.19, vyjádřil se o ní s jistou dávkou sebevědomí:
Je to jedno z těch vzácných "dokonalých" jader. Takže pokud se vám ho náhodou s vaší konfigurací nepodaří zkompilovat (nebo se zkompiluje, ale pak začne provádět nehorázné perverzity s vaším jezevčíkem), buďte klidní, neb si můžete být jisti, že je to všechno vaše chyba, a měli byste se nad sebou zamyslet.
Ačkoliv toto jádro možná dostálo očekávání v mnoha oblastech, vypadá to, že se nad sebou někdo zapomněl zamyslet, a věci nedopadly dobře - a jezevčíci by raději neměli vystrkovat nos. Toto jádro totiž dokáže poškozovat ext3 souborové systémy - což původně nebylo v plánu.
Dobrá zpráva (pro uživatele) je to, že chybu je těžké vyvolat a většina přístupových způsobů funguje úplně bez problému. Zdá se, že hlavní problém se projevuje s určitým klientem pro BitTorrent, který má, mírně řečeno, nezvyklý způsob přístupu. Čas od času se části stránky zapíší jako nuly - až do konce stránky. Nečekejte, že bych vám vysvětlil, proč se to děje; vypadá to, že tomu zatím nerozumí nikdo. Řešení však může zahrnovat poměrně závažné říznutí do nízkoúrovňové správy paměti.
Zjevným původem problému je změna ve způsobu, jakým jsou v jádře sledovány nečisté stránky. Před 2.6.19 byly tyto informace v tabulkách stránek; jádro 2.6.19 však něco z toho přesunuje do struktury page. Tato změna umožňuje lepší sledování nečistých stránek v systému, což je dobře. Mohla by však také vynášet na světlo některé staré chyby.
Ne všechny tyto chyby musí být v jádře; v jednu chvíli Linus napsal demonstrační program, který ukazuje, jak může chybný program fungovat se staršími jádry, ale dočkat se překvapivých výsledků s 2.6.19. Podstatou je, že pokud program namapuje soubor do paměti, nemůže do té paměti dát více dat, než jaká je velikost souboru, a očekávat, že by nakonec data dorazila na disk. Byla to pěkná ukázka, ale nevypadá to, že by tato změna chování byla za popisovanými problémy.
Zmatky kolem přenášení a správy nečistých bitů stránek jsou v tuto chvíli první na seznamu podezřelých. Nevypadá to však, že by někdo dokázal ukázat na něco konkrétního - kromě skutečnosti, že ten kód vypadá dost ošklivě. Pravil Linus:
Hodně z toho je starý a ošklivý kód. Něco možná dokonce kód, který ani neměl fungovat, ale protože jsme v PTE udržovali _jiné_ nečisté bity, kterých se nikdo předtím nedotkl, nikdy jsme si neuvědomili, že kód, který si hraje s PG_dirty, je totálně šílený.
Takže Linus na to jde tak, že kód udržující přehled o nečistých stránkách bude přepracován na něco trochu rozumnějšího. Kvůli tomu už není test_clear_page_dirty(), protože ji prohlásil za "šílenou". Nový kód se místo toho snaží o lepší rozpoznání stavu, kdy už může být nečistý bit ze stránky odstraněn. Výsledkem jsou dvě možnosti: 1) stránka je ukládána do zálohy nebo 2) stránka už není relevantní (například při zkrácení souboru). Jako obvykle opravil Linus jen tolik, aby to s jeho konfigurací fungovalo, a zbytek nechal jako cvičení pro čtenáře.
Netvrdil však, že to problém vyřeší - jen už ten kód bude rozumnější. Doposud se neozval nikdo z těch, kdo problém dokázali reprodukovat. Pokud tím problém zmizí - a vývojáři uvěří, že nebyl jen zakamuflován - pak si nějaká verze této opravy patrně najde cestu do aktualizace 2.6.19. Pak by možná jezevčíci mohli vylézt z úkrytů.
NAPI ("nové API," i když už tak moc nové není) je mechanismus pro zmírnění počtu přerušení používaný u síťových zařízení. Když je síť hodně vytížená, může jádro bezpečně odhadnout, že příchozí pakety budou k dispozici, kdykoliv bude mít čas se na ně podívat. Takže není nutné, aby adaptér k oznamování těchto paketů používal přerušení (teoreticky i tisíce za vteřinu). Ovladač podporující NAPI tedy vypne přerušení o příjmu paketů [packet receive interrupt] a jádru poskytne metodu poll(). Když je jádro připraveno zpracovávat další pakety, zavolá se poll() s maximálním počtem paketů, který bude mít povoleno předat jádru; měla by zpracovat právě tolik paketů a skončit.
S NAPI může jádro zpracovávat výrazně vyšší množství paketů. Pomáhá snížení počtu přerušení, ale i pár dalších věcí. Způsob, jakým NAPI funguje, zmenšuje pravděpodobnost přeřazování paketů v jádře. A pokud dosáhne jádro bodu, odkdy už musí pakety zahazovat, budou takové pakety odhozeny ještě před předáním do síťového stacku. Více informací o NAPI získáte buď z tohoto starého článku na LWN nebo ze stránky na OSDL, která je novější a kompletnější.
I tato stránka bude možná brzy potřebovat aktualizaci, protože Stephen Hemminger navrhl novější NAPI (NNAPI?), které poněkud mění API pro ovladače. V současné implementaci jsou ve struktuře net_device dvě pole týkající se NAPI: poll(), což je funkce volaná pro odběr paketů z adaptéru, a weight, která v podstatě představuje nejlepší odhad autora ovladače ohledně toho, jak důležité je dané rozhraní ve srovnání s ostatními v systému. Stephenův patch tyto parametry přesouvá do samostatné struktury (struct napi_struct), čímž jsou dány dohromady s několika dalšími NAPI strukturami.
Struktura napi_struct je pak přesunuta zpět do struct net_device, ale tu ovladače používat nemusí. Účelem patche je pravděpodobně oddělení NAPI informací od konkrétních síťových zařízení. Existují adaptéry, které poskytují více portů, z nichž každý má samostatné přerušení pro příjem. Oddělené informace o NAPI umožňují, aby všechny tyto porty sdílely jediný NAPI stav a jedinou funkci poll(); taková organizace lépe odpovídá skutečnému hardwaru.
Tento patch se v hlavním jádře neobjeví před 2.6.21, takže autoři ovladačů mají trochu času zareagovat. Potřebné změny jsou relativně jednoduché. První věc je najít pro zařízení strukturu napi_struct; pokud neexistuje důvod to udělat jinak, bude nejlepším řešením použít nové pole napi ve struktuře net_device. Takže pokud se současný kód inicializuje nějak takto
dev->weight = MY_WEIGHT; dev->poll = my_poll;
vypadala by nová verze asi takhle:
dev->napi.weight = MY_WEIGHT; dev->napi.poll = my_poll;
Prototyp funkce poll() se však trochu změnil; teď vypadá takto:
int (*poll)(struct napi_struct *napi, int budget);
Ukazatel na strukturu net_device byl nahrazen ukazatelem na strukturu napi_struct. Ve většině případů lze ukazatel net_device získat voláním podobným tomuto:
struct net_device *dev = container_of(napi, struct net_device, napi);
Význam parametru budget se také trochu změnil; jde teď o jediný indikátor počtu paketů, které smí funkce poll() předat jádru. Už není nutné zvlášť kontrolovat pole quota. A konečně - návratová hodnota by měla být počet paketů, které byly skutečně zpracovány.
Funkce týkající se NAPI v síťovém systému byly upraveny celkem předvídatelně. NAPI je spouštěno jedním z těchto způsobů:
void napi_schedule(struct napi_struct *napi); /* nebo */ int napi_schedule_prep(struct napi_struct *napi); void __napi_schedule(struct napi_struct *napi);
A vypínáno takto:
void napi_complete(struct napi_struct *napi);
Aktuální patch je v raném stádiu, takže by se rozhraní během následujících měsíců mohlo ještě změnit. Nikdo se však proti tomu nepostavil, takže je velká šance, že nějak začleněno bude.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
Chyba je v 2.6.19.2 opravena. Pokud se tedy nevyskytne další podvraťák, tak mohou mít jezevčící klid.
Odkazy:
Původní diskuze
http://thread.gmane.org/gmane.linux.kernel.mm/12931/focus=479227
Zařazení patche do 2.6.19.2
http://thread.gmane.org/gmane.linux.kernel/481127/focus=481168
Pokud čtete Jaderné Novinky na ABC Linuxu, je nutné počítat s tím, že mají kvůli pravidlům svého zdroje dost velké zpoždění.
Přesto jsou zajímavé a užitečné, protože rekapitulují co se dělo nejdůležitějšího a mnoho věcí přibližují svojím populárnějším přístupem i širšímu okruhu zájemců.
Sám je čtu především proto, že mě upozorní na to, kdy byl originální článek uvolněn a projdu si to, co jsem přehlédl.
K textu v češtině mám ale ze svého pohledu výhradu, že se snaží anglické termíny překládat a činí je těžko vyhledatelnými a nesrozumitelnými. Na kombinaci češtiny s anglickými termíny by se mi naopak líbilo, že je jasně vidět, co je text článku a co jsou specifické termíny. (Termíny by mohly být při prvím výskytu česky vysvětleny v závorkách.) Zároveň by to těmto termínům učilo případné zájemce o programování jádra, kteří ještě mají s komunikací pouze v angličtině problémy. Pokud se do jádra zaboří více, tak jim stejně nezbyde než tu angličtinu nějak zvládnout. LKML, ALKML, atd opravdu překladateli na češtinu vybavit, na rozdíl od EP, nikdo nedokáže.
Že jádro má krátký a dlouhý changelog vím, ale i tak jsem se na chvíli zarazil a uvažoval, co to vlastně znamená