Dne 03. března:14:08 greenwichského času (GMT, neboli koordinovaného světového času) 19. ledna 2038 (to je úterý) nastane konec světa. Tedy ne ve smyslu biblické Knihy zjevení. Ale stane se to, že hodnota času v 32bitových unixových operačních systémech, jako je Linux a starší verze macOS, dojdou čísla a začne se počítat čas se zápornými čísly. To není dobré. Můžeme očekávat, že 32bitové počítače s těmito operačními systémy budou mít záchvaty. Vývojáři Linuxu už naštěstí měli připravenou opravu.
Problém začíná v tom, jak Unix určuje čas. Unix a jeho příbuzní – Linux, macOS a další operační systémy kompatibilní s POSIX – datují počátek času od epochy: 00:00:00 GMT 1. ledna 1970. Rodina systémů Unix měří čas počtem sekund od epochy.
Dosud to bylo dobré. Ale protože Unix a jeho rodina začínaly jako 32bitové operační systémy, hodnota času se uchovává jako jediné 32bitové celé číslo se znaménkem. To je sice hodně sekund, ale stejně jako v případě chyby Y2K v minulém století to nestačí.
Vývojáři Linuxu to čekali už desítky let. Vývojář linuxového jádra Arnd Bergmann a další proto pracovali na nápravě. Tyto opravy jsou nyní v připravovaném jádře Linux 5.6. Bergmann vysvětlil: „Linux-5.6, respektive můj backport oprav do verze 5.4, by měl být prvním vydáním, které může sloužit jako základ pro 32bitový systém určený pro provoz po roce 2038.“
Je tu několik výhrad:
- Všechen uživatelský prostor musí být zkompilován s 64bitovým time_t, který bude podporován v nadcházejícím musl-1.2 a glibc-2.32 spolu s nainstalovanými hlavičkami jádra z verze Linux-5.6 nebo vyšší.
- Aplikace, které používají přímo rozhraní systémových volání, musí být přeneseny tak, aby místo stávajících systémových volání používaly time64 syscalls přidané v Linuxu-5.1.
- Aplikace, které používají soukromou kopii hlavičkových souborů jádra uapi nebo jejich obsah, může být nutné aktualizovat na verzi Linux-5.6.
- Několik zbývajících rozhraní nelze změnit tak, aby předávala 64bitový time_t kompatibilním způsobem, takže musí být nakonfigurována tak, aby používala časy CLOCK_MONOTONIC.
- Všechny problémy Epoch přítomné na 64bitových strojích platí i pro 32bitové stroje. To se týká zejména souborových systémů s časovými značkami na disku používajícími podepsané 32bitové sekundy: ext4 s malými inody ve stylu ext3, ext2, xfs (bude brzy opraveno) a ufs.
Krátce řečeno, i po opravě základního problému je třeba provést spoustu úklidových prací.
MacOS se od 32bitového softwaru odklání už více než deset let. Ale teprve ve vydání macOS Catalina na konci roku 2019 dal Apple 32bitovým aplikacím vale.
Teď si možná říkáte – když dnes všichni používáme 64bitové počítače – proč je to vůbec problém. No, je to takhle. Za prvé, mnoho vestavných systémů a zařízení internetu věcí (IoT) stále používá 32bitové operační systémy. Ostatně do roku 2038 budou na trh pravděpodobně stále přicházet nová 32bitová zařízení.
Díky chybě Y2K, která se znovu objeví v roce 2020, také víme, že systémy, o kterých byste mohli předpokládat, že budou za 18 let vyhozeny na skládky, budou stále živé a zdravé – a budou se špatně chovat, až přijde epocha.
Ale podívejte se na to takto: Až to opravíme, nebudeme se muset obávat, že 64bitovému Linuxu dojdou sekundy až do neděle 4. prosince 29 227 702 659, 15:30:08 GMT. Osobně si s tím nehodlám dělat starosti.
Související články:
- Chybka Y2K je zpět a opět způsobuje vývojářům bolesti hlavy
- Jihokorejská vláda zkoumá přechod z Windows na linuxový desktop
- Příšerná chyba sudo v Linuxu, MacOS nalezena a opravena