Od soboty do úterý probíhá v Hamburku konference 39C3 (Chaos Communication Congress) věnovaná také počítačové bezpečnosti nebo hardwaru. Program (jiná verze) slibuje řadu zajímavých přednášek. Streamy a záznamy budou k dispozici na media.ccc.de.
Byl představen nový Xserver Phoenix, kompletně od nuly vyvíjený v programovacím jazyce Zig. Projekt Phoenix si klade za cíl být moderní alternativou k X.Org serveru.
XLibre Xserver byl 21. prosince vydán ve verzi 25.1.0, 'winter solstice release'. Od založení tohoto forku X.Org serveru se jedná o vůbec první novou minor verzi (inkrementovalo se to druhé číslo v číselném kódu verze).
Wayback byl vydán ve verzi 0.3. Wayback je "tak akorát Waylandu, aby fungoval Xwayland". Jedná se o kompatibilní vrstvu umožňující běh plnohodnotných X11 desktopových prostředí s využitím komponent z Waylandu. Cílem je nakonec nahradit klasický server X.Org, a tím snížit zátěž údržby aplikací X11.
Byla vydána verze 4.0.0 programovacího jazyka Ruby (Wikipedie). S Ruby Box a ZJIT. Ruby lze vyzkoušet na webové stránce TryRuby. U příležitosti 30. narozenin, první veřejná verze Ruby 0.95 byla oznámena 21. prosince 1995, proběhl redesign webových stránek.
Všem čtenářkám a čtenářům AbcLinuxu krásné Vánoce.
Byla vydána nová verze 7.0 linuxové distribuce Parrot OS (Wikipedie). S kódovým názvem Echo. Jedná se o linuxovou distribuci založenou na Debianu a zaměřenou na penetrační testování, digitální forenzní analýzu, reverzní inženýrství, hacking, anonymitu nebo kryptografii. Přehled novinek v příspěvku na blogu.
Vývojáři postmarketOS vydali verzi 25.12 tohoto před osmi lety představeného operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky. Přehled novinek v příspěvku na blogu. Na výběr jsou 4 uživatelská rozhraní: GNOME Shell on Mobile, KDE Plasma Mobile, Phosh a Sxmo.
Byla vydána nová verze 0.41.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 6.1 nebo novější a také libplacebo 6.338.2 nebo novější.
Byla vydána nová verze 5.5 (novinky) skriptovacího jazyka Lua (Wikipedie). Po pěti a půl letech od vydání verze 5.4.
Aktuální vývojová verze jádra je 3.11-rc7 vydaná 25. srpna s neobvyklým oznámením: Dělám na (svobodném) operačním systému (jen jako koníček, i když je velký a profesionální) pro klony 486+ AT a snad i všechno ostatní, co na světě existuje. Dělám na tom už od dubna 1991 a ještě to není hotové. Budu vděčný za jakoukoliv zpětnou vazbu ohledně toho, co se lidem na Linuxu 3.11-rc7 nelíbí. Samozřejmě jde o oslavu 22. výročí od původního mailu, kde Linus představoval Linux.
Stabilní aktualizace: za uplynulý týden žádné nevyšly. V době psaní tohoto textu se aktualizace 3.10.10, 3.4.60 a 3.0.94 revidují; jejich vydání lze očekávat 29. srpna nebo později.
Někdy je těžké si uvědomit, že „tento kus kódu je naprostá *pííp*“ ve skutečnosti znamená "řekl bych, že obecný návrh ujde, ale musíš se zamyslet nad tímto kouskem kódu, a pak to snad bude dobré."
Na druhou stranu by na tohle měl člověk po vysoké škole být zvyklý.
Historie ukázala, že ignorování managementu výrobců hardwaru vždy vedlo k lepším ovladačům. Neříkám, že někteří výrobci nemají kompetentní inženýry (mnoho ano, mnoho ne), ale jakmile je do rozhodování okolo ovladačů zapojen management, všechna naděje je ztracena.
Před několika týdny jsme psali o začlenění patche přidávajícího systémové volání flink(), které by programu umožnilo přidat odkaz na soubor na základě otevřeného popisovače. Přidání této funkce bylo dlouho blokováno kvůli obavám z bezpečnostních problémů; tentokrát to prošlo díky argumentu, že jádro už tuto funkčnost nabízí přes volání linkat(). Zdálo se, že tuto funkci v Linuxu 3.11 uvidíme.
Ne všichni ale byli spokojení; Brad Spengler upozornil na problém, kdy procesy mohou vytvářet odkazy na popisovače předané z více privilegované domény. Proto Andy Lutomirski, autor původního patche, zaslal úpravu omezující funkčnost na soubory vytvořené s vobou O_TMPFILE. Jediný problém byl v tom, že se patch nikomu moc nelíbil; Linus to dal jednoznačně najevo.
Následovala dlouhá diskuze (plná patchů) o tom, jak problém lépe vyřešit. Jediná věc byla jasná, a to, že není jasné, jaké řešení je to nejlepší. Proto 28. srpna Linus patch revertoval se slovy Je jasné, že diskuze ještě neskončila a patche, co se tu objevují, nejsou pro 3.11 vhodné. Proto bude funkčnost flink() muset počkat minimálně do 3.12.
Lehkotonážní virtualizace za použití kontejnerů je nástroj, který se konečně dostal na Linux, i když jsou tu ještě určité drobnosti, které scházejí. Kontejnery jsou vytvářeny pomocí dvou oddělených jaderných funkcí: řídících skupin (cgroups) a jmenných prostorů. Cgroups se aktuálně předělávají a možná ještě bude nutné přidat další jmenné prostory k těm, co jsou nyní k dispozici. Například není žádný způsob, jak oddělit většinu zařízení do vlastního jmenného prostoru. To je mezera, kterou by Oren Laadan rád zaplnil, takže nedávno rozeslal RFC ke jmenným prostorům zařízení.
Jmenné prostory rozdělují globální systémové prostředky tak, že různé skupiny procesů mají různý náhled na tyto prostředky. Například jmenné prostory mountů rozdělují připojené systémy souborů na různé pohledy s tím důsledkem, že procesy v jednom jmenném prostoru nemohou vidět nebo zacházet se systémy souborů připojenými v jiném. Obdobně jmenné prostory PID dávají každému jmennému prostoru vlastní rozsah čísel procesů (PID). Některá zařízení mají vlastní jmenný prostor nebo podobnou funkčnost: jmenné prostory pro síťová zařízení a pseudo systém soubprů devpts pro pseudoterminály (neboli pty). Ale není žádný způsob, jak rozčlenit všechna zařízení v systému, což mají za úkol právě jmenné prostory zařízení.
Cílem této funkčnosti je mít vícero virtuálních telefonů na jednom fyzickém telefonu. Člověk by například mohl mít dva kompletní androidí systémy na telefonu, jeden pro práci a druhý pro soukromé použití. Každý ze systémů by běžel ve vlastním kontejneru a vzájemně by byly izolované. Izolace by umožnila řídit aplikace a bezpečnost ve „firemní polovině“ telefonu, zatímco uživatel by si mohl udržovat osobní data bokem. Přehled, jak by to vypadalo, můžete vidět na videu. Většinu tohoto rozdělení je možné udělat už dnes, ale něco ještě chybí: virtualizace zařízení (např. framebufferu, dotykové obrazovky nebo tlačítek).
Návrh přidává koncept „aktivního“ jmenného prostoru zařízení, kterým by byl ten, se kterým uživatel právě pracuje. Výhodou je, že uživatel by mohl mezi identitami na telefonu přepínat stejně jednoduše jako mezi aplikacemi. Každá identita by měla přístup ke všem schopnostem telefonu v době, kdy jde o aktivní jmenný prostor, jakmile je ale neaktivní (nebo na pozadí), tak by přístup neměla.
Jmenný prostor se dělá obvyklým způsobem, a to pomocí clone(), setns() nebo unshare(). Jedním překvapením je to, že pro jmenné prostory zařízení nepřibyl nový příznak CLONE_* a příznak CLONE_NEWPID je přetěžován. Tento komentář v kódu vysvětluje důvod:
/* * Couple device namespace semantics with pid-namespace. * It's convenient, and we ran out of clone flags anyway. */
Ačkoliv spojení jmenných prostorů pro PID a zařízení může fungovat, vypadá to, že by se nějaké řešení pro příznaky clone hodilo. Jakmile je proces umístěn do jmenného prostoru zařízení, jakýkoliv open() zařízení, které podporuje jmenné prostory, povede k omezení tohoto zařízení na daný jmenný prostor.
Na určité úrovni je přidávání jmenných prostorů zařízení jen otázkou virtualizování major/minor čísel zařízení, aby každý jmenný prostor měl vlastní čísla. Čísla major/minor v jmenném prostoru odpovídají ovladači načtenému pro daný jmenný prostor. Ovladače, které mohou být dostupné vícero jmenným prostorům, budou muset být upraveny tak, aby jmenné prostory přímo podporovaly. U některých ovladačů, například těch, co nemají žádný skutečný stav (např. u Androidu subsystém LED nebo subsystém podsvětlení/LCD), by změny byly minimální – vlastně jen takový test. Pokud je jmenný prostor obsahující zařízení aktivní, tak pokračuj, jinak požadované změny ignoruj.
Zařízení jsou ale někdy stavová. Není jen tak možné přepnout v půlce posílání dat framebufferu (nebo proudy smíchat) a očekávat, že obsah obrazovky bude v pořádku. Proto ovladače a subsystémy budou muset podporovat přepínání. Například framebuffer by měl na obrazovce ukazovat jen změny od aktivního jmenného prostoru, ale ukládat si změny od jmenného prostoru na pozadí, aby po přepnutí tyto změny byly zobrazeny.
Laadan a jeho kolegové z Cellroxu vytvořili sadu patchů pro jádro na emulátoru Androidu (goldfish). Je tam také dosti podrobný popis patchů a změn udělaných u stavových i bezstavových zařízení. Vytvořili také demo pro Android, kde se přepíná mezi běžícím telefonem a aplikací, která ukazuje měnící se barvy.
Moc komentářů se na toto téma zatím nevyrojilo. Na jednu stranu dává smysl moci virtualizovat všechna zařízení v systému, na druhou stranu to znamená, že se hodně ovladačů bude muset upravit. Mohou se vyskytnout i určité „směrovací“ problémy – když zazvoní telefon, který jmenný prostor se o to postará? Existující API pro přepínání jmenných prostorů v podobě proof-of-concept bude také ještě potřebovat trochu pozornosti.
I když může jít o užitečnou funkčnost, může to také způsobit velkou vlnu změn v ovladačích. Jak snadno se jmenné prostory zařízení dostanou do hlavní řady jádra, bude dost možná záviset na tom, jaká další využití se pro toto najdou. Hlavní změny pro podporu funkčnosti ale nejsou veliké, takže přepínání identit na telefonu bude možná nakonec přece jen stačit.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej: