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 03:11 | Zajímavý software

    Vývojář Alexandre Gomes Gaigalas na GitHubu zveřejnil c89cc.sh, parser a kompilátor jazyka C89 napsaný v pouhém jediném skriptu o přibližně 8000 řádcích čistého bashe (bez dalších externích závislostí), který generuje ELF64 binárky pro x86-64. Jedná se o velmi jednoduchý kompilátor, který nepodporuje direktivy #include a dokonce ani funkci printf (lze použít puts), všechny dostupné deklarace lze nalézt v proměnné _BUILTIN_LIBC na konci skriptu. Skript je volně dostupný pod ISC licencí.

    » FIDESZ🧡! « | Komentářů: 5
    včera 23:33 | Nasazení Linuxu

    Francouzská vláda oznámila, že v rámci strategie 'digitální suverenity' zahájí 'přechod od systému Windows k počítačům s operačním systémem Linux' (sa sortie de Windows au profit de postes sous système d'exploitation Linux). DINUM (meziresortní ředitelství pro digitální technologie) požádalo ministerstva, aby do podzimu 2026 vypracovaly konkrétní plány nasazení Linuxu. Francie již dříve migrovala části státní správy na otevřená řešení.

    » FIDESZ🧡! « | Komentářů: 5
    včera 05:22 | IT novinky

    Nezisková organizace Electronic Frontier Foundation (EFF) hájící občanské svobody v digitálním světě po téměř 20 letech opouští platformu X (dříve Twitter). Na platformách Bluesky, Mastodon, LinkedIn, Instagram, TikTok, Facebook, Threads a YouTube zůstává.

    Ladislav Hagara | Komentářů: 5
    včera 03:33 | Nová verze

    Terminálový textový editor GNU nano byl vydán ve verzi 9.0. Vylepšuje chování horizontálního posouvání pohledu na dlouhé řádky a chování některých klávesových zkratek. Více v seznamu změn.

    |🇵🇸 | Komentářů: 0
    9.4. 19:22 | IT novinky

    Ministerstvo financí ve spolupráci s finanční správou dnes představilo beta verzi aplikace využívající umělou inteligenci pro předvyplnění daňového přiznání. Není třeba přepisovat údaje z různých potvrzení, ani hledat správné řádky, kam údaje napsat. Stačí nahrát dokumenty a využít AI.

    Ladislav Hagara | Komentářů: 8
    9.4. 18:33 | Zajímavý projekt

    Výrobce počítačových periferií Keychron zveřejnil repozitář se schématy šasi klávesnic a myší. Licence je restriktivní, zakazuje většinu komerčních užití a v podstatě jsou tak data vhodná pouze pro výukové účely, hlášení a opravy chyb, případně výrobu vlastního příslušenství.

    |🇵🇸 | Komentářů: 5
    9.4. 18:22 | Nová verze

    Správce balíčků APT, používaný v Debianu a odvozených distribucích, byl vydán ve verzi 3.2 (seznam změn). Mezi novinkami figurují nové příkazy pro práci s historií, včetně vracení transakcí.

    |🇵🇸 | Komentářů: 0
    9.4. 14:33 | IT novinky

    Společnost Anthropic oznámila Projekt Glasswing a s ní související AI model Claude Mythos Preview. Jedná se o iniciativu zaměřenou na kybernetickou bezpečnost, do které se zapojily velké technologické společnosti Amazon Web Services, Anthropic, Apple, Broadcom, Cisco, CrowdStrike, Google, JPMorganChase, Linux Foundation, Microsoft, NVIDIA a Palo Alto Networks. Anthropic věří, že nový AI model Claude Mythos Preview dokáže

    … více »
    Ladislav Hagara | Komentářů: 2
    9.4. 13:55 | Zajímavý software

    Firma Ojective Development vydala svůj nástroj pro monitorování a řízení odchozích síťových připojení Little Snitch i pro operační systém Linux. Linuxová verze se skládá ze tří komponent: eBPF program pro zachytávání provozu a webové rozhraní jsou uvolněny pod GNU GPLv2 a dostupné na GitHubu (převážně Rust a JavaScript), jádro backendu je proprietární pod vlastní licencí, nicméně zdarma k použití a redistribuci (cena přitom normálně … více »

    » FIDESZ🧡! « | Komentářů: 1
    8.4. 18:44 | IT novinky

    Vojenské zpravodajství (VZ) se v březnu zapojilo do mezinárodní operace proti aktivitám hackerské skupiny APT28, která je spojovaná s ruskou vojenskou zpravodajskou službou GRU a která přes slabě zabezpečené routery prováděla kybernetické útoky na státní a další organizace v ČR i zahraničí. Operaci vedl americký Federální úřad pro vyšetřování (FBI) a jejím cílem bylo odebrat útočníkům přístup k napadeným zařízením a ty následně … více »

    Ladislav Hagara | Komentářů: 47
    Které desktopové prostředí na Linuxu používáte?
     (14%)
     (8%)
     (1%)
     (12%)
     (30%)
     (3%)
     (6%)
     (2%)
     (14%)
     (24%)
    Celkem 1269 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    Jaderné noviny - 5. 5. 2015: Konverze systémových volání pro rok 2038

    30. 7. 2015 | Redakce | Jaderné noviny | 2395×

    Stav vydání jádra. Citáty týdne. Konverze systémových volání pro rok 2038.

    Stav vydání jádra

    Současný vývojový cyklus nese označení 4.1-rc2, a byl vydán 3. května. "Jako vždy se jedná o směsku ovladačů, aktualizací architektur (z nichž s390 vynikala kvůli prng poznámce), souborového systému a sítí."

    Stabilní aktualizace: Žádné nebyly tento týden vydány. Aktualizace 4.0.2, 3.19.7, 3.14.41 a 3.10.77 byly v době psaní tohoto článku v procesu revidování. Původně měly vyjít 4. května, ale zdržely se shrnutím několika neuvážených patchů.

    Citáty týdne

    Za posledních 10 let se x86 FPU (matematický koprocesor) rozrostly do rozměrů jakéhosi špagetového monstra, kterému jen velmi málo (pokud vůbec nějací) vývojářů kernelu rozumí, a které jen málokoho baví hackovat.

    Za ta léta mnoho lidí upozorňovalo na to, že by nebyl od věci pořádný úklid, takže jsem si před nějakou dobou řekl "a proč by ne", a krok za krokem jsem s ním začal, abych viděl, kam až to vede. Jak těžké to může být?!

    O tři týdny a 200+ patchů později musím přiznat, že jsem velmi hrubě podcenil rozsah tohoto projektu ;-)

    -Ingo Molnar se vydává na menší čistící quest

    PROSÍM VÁS. Neprogramujeme v Pascalu (a díky Bohu za to), takže můžeme ponechat návěští se smysluplnými názvy. Taky se nestydíme používat goto, kde to dává smysl, takže není třeba zmenšovat návěští do velikosti smítek na monitoru.

    -Linus Torvalds

    Konverze systémového volání roku 2038

    Do onoho osudného dne v lednu roku 2038, kdy dojdou volné bity a přetečou 32bitové hodnoty time_t, které v unixových systémech zastupují zobrazování času, nám už zbývá jen 23 let. S přibližováním onoho data se můžeme těšit na všelijaká zábavná selhání 32bitových systémů a současní čtenáři LWN se mohou těšit na povolání z důchodu v hrdinné (a lukrativní) snaze zabránit blížící se apokalypse. Tak nějak by to mohlo vypadat, nebýt skupiny vývojářů (morousů), kteří se snaží problém roku 2038 vyřešit a celou zábavu pokazit. Konkrétnější obrysy této snahy se dostaly do hledáčku díky novým (později aktualizovaným) patchům Arnda Bergmanna, ukazujícím migrační cestu pro časová systémová volání.

    Současná linuxová systémová volání využívají pro zobrazování času několik různých datových typů od times_t, timeval po timespec a další. Všechny však mají jedno společné: Celočíselnou hodnotu, která počítá vteřiny od roku 1970 (nebo z aktuálního času v případech, kdy je zapotřebí relativní hodnota času). Na 32bitových systémech je počet dán 32bitovým celým číslem se znaménkem, takže je zapotřebí dalších volných bitů, jinak dojde k přetečení a po roce 2038 se čas nebude zobrazovat správně.

    Reprezentace času

    Jednou z možností je použití nově vytvořených 64bitových verzí těchto časových struktur. Ale pokud má dojít k nekompatibilním změnám, bylo by možná vhodné se nejprve šířeji zamyslet. Proto nedávno Thomas Gleixner navrhoval vytvoření nové sady systémových volání (linuxových), které by pracovaly s 64bitovým nanosekundovým čítačem se znaménkem. Ten by zrcadlil ktime_t type (definovaný v include/linux/ktime.h), který se používá pro reprezentaci času v kernelu:

        union ktime {
    	s64	tv64;
        };
        typedef union ktime ktime_t;		/* Kill this */
    

    Komentář "kill this" přidal Andrew Morton v roce 2007, ale nikdo tak ještě neučinil)

    Používat zrcadlené časové hodnoty kernelu také v uživatelském prostoru má něco do sebe, předešlo by se mnoha přepočtům času. Avšak Arnd Bergmann poukázal na několik těžkostí, spojených s tímto přístupem, jednou z nich je ještě složitější přechod. Zásadní chyba se objevuje v tomto seznamu časových systémových volání, který Andy zveřejnil krátce na to: Systémová volání, která pracují s časovými značkami souborů, musí být schopna vyjádřit čas ještě před rokem 1970. Také musí umět vyjádřit širší rozsah časů, než kolik zvládá 64bitový ktime_t. Je tedy nutné použít některou z variant time_t. (Potřeba zobrazovat čas před rokem 1970 vylučuje použití hodnoty bez znaménka pro rozšíření 32bitové hodnoty time_t).

    Z toho vyplývá, že univezální použití časových hodnot v nanosekundách se znaménkem zde není reálné. Rozhodně ne jako prevence nadcházející katastrofy roku 2038. Stále je zde prostor pro zjednodušení. Aktuálně je v plánu využití 64bitové verze struct timespec (nazývané v kernelu jednoduše struct timespec64 - uživatelský prostor uvidí pouze jako struct timespec) pro téměř všechny časové údaje přicházející do nebo z jádra. Různá systémová volání, která používají jiné (starší) časové formáty, mohou být jednoduše emulována v uživatelském prostoru. Takže například volání gettimeofday() (které využívá struct timeval) se změní na volání clock_gettime() předtím, než vstoupí do kernelu. Takto je možné snížit počet různých volání, jejichž kompatibilitu je třeba v kernelu zajistit.

    Takže všechny 32bitové systémy připravené na rok 2038, budou využívat struct timespec64 pro všechny časové hodnoty, které vstupují do jádra. Prozatím zůstává menší problém s dosažením tohoto cíle za co nejmenších škod. Aktuální Arndovo řešení je možné vidět v patch setu, který zahrnuje velký počet kroků, které pomohou bezpečně přiblížit kernel k roku 2038.

    Cesta k bezpečnému systému roku 2038

    Prvním krokem je připravit podporu 32bitových aplikací a přesunout kód kernelu pro řízení času na 64bitový čas. Tyto "vnitřní" práce již nějaký čas probíhají, pozornost vyžaduje interface uživatelského rozhraní, počínaje sadou pravidel, která by převáděla mezi 32bitovým a 64bitovým časem v rozhraní systémového volání. Dobrou zprávou je, že tato pravidla (routines) již existují ve formě "kompatibilních" systémových volání, které využívají 32bitové aplikace běžící na 64bitovém kernelu. Pokud jde o manipulaci s časem, budou v budoucnu 64bitová všechna jádra, takže tyto funkce jsou zapotřebí (až na několik případů jiných typů dat, kdy je zapotřebí rozdílného převedení). Patch tedy zajistí kompatibilitu systémových volání jak pro 32bitové, tak pro 64bitové kernely. Kompatibilní funkce jsou připraveny k použití, ovšem budou dostupné teprve na konci série patchů.

    Dalším krokem je přeměna nativních systémových volání kernelu pro manipulaci s časem na výhradně 64bitové hodnoty. Toho lze docílit pomocí dvou dílčích kroků. Prvním je definování nové sady typů popisujících formát nativních časových hodnot v uživatelském prostoru. Kupříkladu systémová volání, která v současné době akceptují jako parametr struct timespec, budou po změně pracovat s struct__kernel_timespec. Obě struktury jsou téměř totožné, takže jejich záměna nebude mít na kernel žádný vliv. Jestliže bude nastavena konfigurace CONFIG_COMPACT_TIME, bude struct__kernel_timespec vypadat jako timespec64.

    Různé typy __kernel_ se objevují na hranici (boundary) systémových volání, méně za touto hranicí. Místo toho dojde na všech zařízeních k jejich okamžitému převedení na 64bitové. Na 64bitových zařízeních není samozřejmě moc co převádět. Jakmile jsou všechna časová systémová volání převedena, používají interně 64bitové časové hodnoty, a to i v případě, že uživatelský prostor nadále pracuje s 32bitovými časovými hodnotami.

    Posledním krokem je povolení 64bitových časových hodnot na 32bitových systémech bez toho, aby došlo k poškození existujících 32bitových binárek.

    • Nastaví se CONFIG_COMPAT_TIME, což způsobí, že všechny datové struktury __kernel_ přepnou na své 64bitové verze.
    • Všechna existující časová systémová volání se nahradí kompatibilními 32bitovými verzemi. Takže třeba na ARM má systémové volání clock_gettime() číslo 263. Po změně dostane aplikace volající 263 nově compat_sys_clock_gettime(). Pokud jsou správně nastaveny kompatibilní funkce, neměly by si binární aplikace ničeho všimnout.
    • Nativní verze 64bitových systémových volání dostanou nová číselná označení; clock_gettime() se změní v systémové volání 388. Tudíž 64bitové verze těchto volání uvidí pouze nově kompilovaný kód, který je připraven s 64bitovými časovými údaji pracovat.

    To je tak nejvíc, co se dá v kernelu (s tímto problémem) dělat. Existující 32bitové binárky zavolají kompatibilní verze časových systémových volání a budou i nadále fungovat, až do roku 2038.

    Zbývá tedy slušné množství práce, kterou je třeba udělat v uživatelském prostoru. Zjednodušeně lze říct, že C knihovny mohou používat 64bitové datové struktury a vyvolat nové verze příslušných systémových volání. Potom mohou být rekompilovány aplikace pro nové knihovny, možná bude zapotřebí oprav v uživatelském prostoru, poté se nebudou podílet na debaklu roku 2038. V praxi by mohlo být nutné přestavět všechny knihovny a aplikace systému, aby se zajistila ucelená myšlenka o reprezentaci času. C GNU knihovny užívají pro určení verzí symboly, takže je možné je nastavit pro oba časové formáty zároveň. Některé knihovny takovou schopnost nemají. Konverze kompletních distribucí by mohla být zajímavou výzvou v okamžiku, kdy bude v jádře vše hotovo.

    Ukončovací práce

    I v kernelu je stále několik záležitostí, kterým se dosud nikdo nevěnoval. Významným problémem je volání ioctl(), z tisíců podporovaných jádrem jich několik pracuje s hodnotami time_t. Bude třeba je lokalizovat, jedno po druhém opravit, což bude trvat. Souborový systém ext4 ukládá časové značky jako 32bitové hodnoty time_t, i když některé verze formátování je rozšiřují na 34 bitů. Ext3 34bitové časové značky nepodporuje, takže řešením by byl přechod k ext4. NFSv3 má podobný problém a možná, že ho čeká podobný osud. I XFS má problémy, které je třeba řešit. Potíže se souborovým systémem se nevyhýbají ani 64bitovým systémům. V kernelu a uživatelském prostoru navíc zcela jistě číhá ještě celá řada dalších (nepříjemných) překvapení, takže připravit systém na rok 2038 jde ještě daleko za přechod k 64bitovým časovým hodnotám systémových volání. I když začít s nimi je rozhodně dobrý začátek.

    Jakmile se vyřeší zbývající problémy, bude možné aplikovat poslední patch. Volitelným se stane CONFIG_COMPAT_TIME, ponechá 64bitové cesty beze změny a odstraní kompatibilní 32bitová volání. Bude-li tato volba vypnuta, nepodaří se spustit binárky se staršími systémovými voláními. Jde o dobrou metodu, jak otestovat konverze pro rok 2038 nebo nasazení starších systémů, které musí fungovat i po tomto datu. Arnd k tomu dodává:

    V současné době jde o nástroj pro ladění, který by měl pomoci vytvořit distribuci odolnou na rok 2038, ale někdy ve třicátých letech bychom měli tuhle možnost a veškeré řízení kompatibility odstranit docela.

    Doufejme, že bude v budoucnu někdo dávat pozor a nezapomene za dvacet let tento krok provést (v případě velké inspirace by prostě mohli zabít ktime_t). Potom budou určitě vděčni těm vývojářům, kteří obětovali svůj čas problému mnohem dříve, než začal být akutní. My ostatní si prostě budeme muset najít jiný způsob, jak si vydělat na důchod.

    (Díky patří Arndovi Bergmannovi za cenné rady a návrhy k rané verzi článku.)

           

    Hodnocení: 80 %

            š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ář

    31.7.2015 00:01 HulmihoUkolen@HulmihoUkolen.nl/hu
    Rozbalit Rozbalit vše Re: Jaderné noviny - 5. 5. 2015: Konverze systémových volání pro rok 2038
    ja to mrdam-87 let se urcite nedoziju
    kyknos avatar 1.8.2015 10:00 kyknos | skóre: 18 | blog: Quid novi? | Ranša Rosa
    Rozbalit Rozbalit vše Re: Jaderné noviny - 5. 5. 2015: Konverze systémových volání pro rok 2038
    Plánuje sebevraždu?
    So the Nationalists and the Socialists have the same policy on Brexit. They should get together and form a...
    31.7.2015 04:31 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Jaderné noviny - 5. 5. 2015: Konverze systémových volání pro rok 2038
    IMO (zajímavý, že to druhý "label" je správně): s/můžeme ponechat štítky se smysluplnými názvy/můžeme ponechat návěští se smysluplnými názvy/
    31.7.2015 08:45 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Jaderné noviny - 5. 5. 2015: Konverze systémových volání pro rok 2038
    …a jejichž kód někteří lidé rádi nabourávají

    Nemyslím, že tady je "hack" použito ve smyslu "nabourávat". Spíš bych to přeložil: "…kterému jen málo jaderných vývojářů rozumí a které málokoho baví hackovat." Pokud se někomu nelíbí cizácké "hackovat" (nebo má příliš zažitý mainstreamový význam), tak třeba: "…a se kterým málokoho baví si hrát."

    i když některé verze formátování je rozšiřují na 34 bitů

    Verze formátu, ne formátování.

    31.7.2015 08:47 mikro
    Rozbalit Rozbalit vše Re: Jaderné noviny - 5. 5. 2015: Konverze systémových volání pro rok 2038
    "... that few (if any) kernel developers understand and which code few people enjoy to hack."

    je podla mna chybne prelozeny na:

    "... kterému rozumí jen velmi málo (pokud vůbec nějací) vývojářů kernelu, a jejichž kód někteří lidé rádi nabourávají."

    pretoze aj z kontextu originalnej spravy dalej vyplyva, ze kod sa po jeho upravach stal "maintainable and hackable again", cize ten vyznam predoslej vety je skor, ze malo (ak vobec niekto) tomu kodu rozumie a velmi malo ludi je ochotnych v nom robit zmeny.
    4.8.2015 10:27 Jiří J. | skóre: 34 | blog: Poutník | Brno
    Rozbalit Rozbalit vše Re: Jaderné noviny - 5. 5. 2015: Konverze systémových volání pro rok 2038
    On Tue, May 5, 2015 at 8:17 AM, Al Viro wrote:
    >
    > Something like this_used_to_be_the_beginning_of_loop_body?
    
    No, but at least "loop:" or "repeat:" or something.
    
    That "l:" really looked like a fly shat on my monitor.
    :-D
    10.8.2015 21:12 tentononc
    Rozbalit Rozbalit vše Re: Jaderné noviny - 5. 5. 2015: Konverze systémových volání pro rok 2038
    No nevim, co v roce 2038 na ten den naplánovat celozávodní urláb, vypnout servrovnu a všechny pecka a den poté začít zase s dvaatřicetibitovým počítadlem od nuly? Vždyť nemusí běžet všechny mašiny nonstop furt....
    25.8.2015 22:03 Zde
    Rozbalit Rozbalit vše Re: Jaderné noviny - 5. 5. 2015: Konverze systémových volání pro rok 2038
    > clock_gettime() se změní v systémové volání 388

    Navrhuji změnit čísla syscallu z int na long, než bude pozdě.

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.