În 03:14:08 Greenwich Mean Time (GMT, aka Coordinated Universal Time) 19 ianuarie 2038 (asta e o marți), lumea se sfârșește. Ei bine, nu în sensul biblic al Cărții Apocalipsei. Dar, ceea ce se va întâmpla este că valoarea pentru timp în sistemele de operare bazate pe Unix pe 32 de biți, cum ar fi Linux și versiunile mai vechi de macOS, rămâne fără numere și începe să numere timpul cu numere negative. Acest lucru nu este bun. Ne putem aștepta ca calculatoarele pe 32 de biți care rulează aceste sisteme de operare să aibă crize. Din fericire, dezvoltatorii Linux aveau deja o soluție pregătită.
Problema începe cu modul în care Unix spune timpul. Unix, și rudele sale – Linux, macOS și alte sisteme de operare compatibile POSIX – datează începutul timpului de la Epoch: 00:00:00:00 GMT la 1 ianuarie 1970. Familia Unix măsoară timpul prin numărul de secunde de la Epoch.
Până acum, totul este bine. Dar, deoarece Unix și familia Unix au început ca sisteme de operare pe 32 de biți, valoarea timpului este păstrată ca un singur număr întreg cu semn pe 32 de biți. Acestea sunt o mulțime de secunde, dar, la fel ca în cazul bug-ului Y2K din secolul trecut, nu este suficient.
Dezvoltatorii Linux au văzut acest lucru venind de zeci de ani. Astfel, dezvoltatorul kernelului Linux Arnd Bergmann și alții au lucrat la o reparație. Aceste corecții se află acum în viitorul kernel Linux 5.6. Bergmann a explicat: „Linux-5.6, sau backportul meu al patch-urilor la 5.4, ar trebui să fie prima versiune care poate servi ca bază pentru un sistem pe 32 de biți proiectat să funcționeze dincolo de anul 2038.”
Există câteva avertismente:
- Toată spațiul de utilizator trebuie compilat cu un time_t pe 64 de biți, care va fi suportat în musl-1 care va veni.2 și glibc-2.32, împreună cu anteturile de kernel instalate de la Linux-5.6 sau mai sus.
- Aplicațiile care utilizează direct interfețele de apel de sistem trebuie să fie portate pentru a utiliza syscall-urile time64 adăugate în Linux-5.1 în locul apelurilor de sistem existente.
- Aplicațiile care utilizează o copie privată a fișierelor de antet uapi ale kernelului sau a conținutului acestora ar putea avea nevoie să se actualizeze la versiunea Linux-5.6.
- Câteva interfețe rămase nu pot fi modificate pentru a trece un time_t pe 64 de biți într-un mod compatibil, astfel încât acestea trebuie configurate pentru a utiliza timpi CLOCK_MONOTONIC.
- Toate problemele Epoch prezente pe mașinile pe 64 de biți se aplică și la mașinile pe 32 de biți. În special, acest lucru afectează sistemele de fișiere cu marcaje temporale pe disc care utilizează secunde semnate pe 32 de biți: ext4 cu inoduri mici de tip ext3, ext2, xfs (care va fi reparat în curând) și ufs.
În concluzie, mai este multă muncă de curățare de făcut chiar și după ce problema de bază a fost rezolvată.
MacOS se îndepărtează de software-ul pe 32 de biți de peste un deceniu. Dar, tt abia în versiunea de la sfârșitul anului 2019 a macOS Catalina, Apple a dat startul aplicațiilor pe 32 de biți.
Acum, s-ar putea să vă întrebați – din moment ce toți rulăm computere pe 64 de biți în aceste zile – de ce este aceasta chiar o problemă. Ei bine, este cam așa. În primul rând, multe sisteme încorporate și dispozitive Internet of Things (IoT) rulează încă sisteme de operare pe 32 de biți. Într-adevăr, până în 2038, probabil că vor exista încă dispozitive noi pe 32 de biți care vor ajunge pe piață.
Știm, de asemenea, datorită faptului că bug-ul Y2K va apărea din nou în 2020, că sistemele despre care ați putea presupune că vor fi aruncate în gropile de gunoi peste 18 ani vor fi încă în viață și bine – și se vor comporta rău de tot în mod necorespunzător când va veni Epoca.
Dar priviți în acest fel: După ce rezolvăm acest lucru, nu va trebui să ne facem griji cu privire la faptul că Linux pe 64 de biți va rămâne fără secunde până la 15:30:08 GMT duminică, 4 decembrie, 29.227.702.659. Personal, nu am de gând să-mi fac griji pentru asta.
Povestiri conexe:
- Bug-ul Y2K s-a întors, provocând din nou dureri de cap dezvoltatorilor
- Guvernul Coreei de Sud explorează trecerea de la Windows la desktop-ul Linux
- Bug-ul neplăcut Linux, macOS sudo a fost găsit și rezolvat
.