Kaksikymmentä vuotta myöhemmin Y2K-virhe tekee paluun

03:14:08 Greenwichin keskiaikaa (GMT, eli koordinoitua maailmanaikaa) 19. tammikuuta 2038 (se on tiistai), maailma loppuu. No, ei raamatullisessa Ilmestyskirjan merkityksessä. Mutta mitä tapahtuu, on se, että 32-bittisissä Unix-pohjaisissa käyttöjärjestelmissä, kuten Linuxissa ja macOS:n vanhemmissa versioissa, ajan arvo loppuu kesken ja aikaa aletaan laskea negatiivisilla luvuilla. Se ei ole hyvä asia. Voimme odottaa, että 32-bittiset tietokoneet, joissa käytetään näitä käyttöjärjestelmiä, saavat kohtauksia. Onneksi Linuxin kehittäjillä oli jo valmiina korjaus.

Ongelma alkaa siitä, miten Unix kertoo ajan. Unix ja sen sukulaiset – Linux, macOS ja muut POSIX-yhteensopivat käyttöjärjestelmät – ajoittavat ajan alkamisen epookista: 00:00:00 GMT 1. tammikuuta 1970. Unix-perhe mittaa aikaa sekuntien lukumäärällä aikakaudesta.

Niin pitkälle, niin hyvin. Mutta koska Unix ja -perhe aloittivat 32-bittisinä käyttöjärjestelminä, ajan arvo säilytetään yhtenä merkillisenä 32-bittisenä kokonaislukuna. Niitä on paljon sekunteja, mutta aivan kuten viime vuosisadan Y2K-virhe, se ei riitä.

Linux-kehittäjät ovat nähneet tämän tulevan vuosikymmeniä. Niinpä Linux-ytimen kehittäjä Arnd Bergmann ja muut ovat työskennelleet korjauksen parissa. Nämä korjaukset ovat nyt tulevassa Linux 5.6 -ytimessä. Bergmann selitti: ”Linux-5.6:n tai korjausteni backportin 5.4:ään pitäisi olla ensimmäinen julkaisu, joka voi toimia perustana 32-bittiselle järjestelmälle, joka on suunniteltu toimimaan vuoden 2038 jälkeenkin.”

Joitakin varoituksia on:

  • Kaikki käyttäjäavaruudet on käännettävä 64-bittisellä time_t:llä, jota tuetaan tulevassa musl-1:ssä.2 ja glibc-2.32 -julkaisuja sekä asennettuja Linux-5.6:n tai uudemman ytimen otsikoita.
  • Sovellukset, jotka käyttävät suoraan järjestelmäkutsurajapintoja, on siirrettävä käyttämään Linux-5.1:ssä lisättyjä time64-syscalleja nykyisten järjestelmäkutsujen sijasta.
  • Sovellukset, jotka käyttävät yksityistä kopiota ytimen uapi-otsikkotiedostoista tai niiden sisällöstä, on ehkä päivitettävä Linux-5.6:n versioon.
  • Vähäisiä jäljellä olevia rajapintoja ei voida muuttaa välittämään 64-bittistä time_t:tä yhteensopivalla tavalla, joten ne on konfiguroitava käyttämään CLOCK_MONOTONIC-aikoja.
  • Kaikki 64-bittisissä koneissa esiintyviä Epoch-ongelmia sovelletaan myös 32-bittisiin koneisiin. Erityisesti tämä vaikuttaa tiedostojärjestelmiin, joiden levyn aikaleimat käyttävät allekirjoitettuja 32-bittisiä sekunteja: ext4 ext3-tyylisillä pienillä inodeilla, ext2, xfs (korjataan pian) ja ufs.

Lyhyesti sanottuna, paljon siivoustyötä on tehtävänä vielä senkin jälkeen, kun ydinongelma on korjattu.

MacOS on siirtynyt pois 32-bittisistä ohjelmistoista jo yli vuosikymmenen ajan. Mutta, tt vasta vuoden 2019 lopun macOS Catalina -julkaisussa Apple antoi 32-bittisille sovelluksille lähtöpassit.

Voit nyt ihmetellä – koska me kaikki käytämme nykyään 64-bittisiä tietokoneita – miksi tämä on edes ongelma. No, se on näin. Ensinnäkin monet sulautetut järjestelmät ja esineiden internetin (IoT) laitteet käyttävät edelleen 32-bittisiä käyttöjärjestelmiä. Vielä vuonna 2038 markkinoille tulee todennäköisesti uusia 32-bittisiä laitteita.

Tiedämme myös, kiitos Y2K-virheen ilmaantumisen uudelleen vuonna 2020, että järjestelmät, joiden voisi olettaa joutuvan kaatopaikoille 18 vuoden kuluttua, ovat edelleen elossa ja hyvinvoivia – ja pahasti huonosti käyttäytyviä, kun tulee aikakausi.

Mutta katsokaa asiaa näin: Kun korjaamme tämän, meidän ei tarvitse huolehtia siitä, että 64-bittinen Linux loppuu sekunneista ennen kuin 15:30:08 GMT sunnuntaina 4. joulukuuta 29,227,702,659. Henkilökohtaisesti en aio huolehtia siitä.

Related Stories:

  • Y2K-virhe on palannut aiheuttaen taas päänvaivaa kehittäjille
  • Etelä-Korean hallitus tutkii siirtymistä Windowsista Linux-työpöydälle
  • Pahanlaatuinen Linux- ja macOS-sudo-bugi löydetty ja korjattu

admin

Vastaa

Sähköpostiosoitettasi ei julkaista.

lg