Le 17 janvier 2038, à 3 heures 14 minutes et 7 secondes UTC, les terminaux tournant sous les systèmes d’exploitation Unix basés sur 32 bits afficheront la date du 13 décembre 1901. Pourquoi ? A l’instar du bug de l’an 2000, les systèmes Unix et Linux atteindront un point où la valeur du temps – stockée sous forme d’entier signé de 32 bits – atteindra son maximum. Dans la prochaine mise à jour (5.6) du noyau de Linux, un développeur, Arnd Bergmann, a travaillé à régler ce problème.
« Linux-5.6, ou mon rétroportage des correctifs de la 5.4, devrait être la première version pouvant servir de base à un système 32 bits conçu pour fonctionner au-delà de l'année 2038 », indique M. Bergmann sur le site officiel des annonces concernant le kernel. Il prévient cependant que :
- Tout l'espace utilisateur doit être compilé avec un time_t 64 bits, qui sera pris en charge dans les prochaines versions musl-1.2 et glibc-2.32, ainsi que les en-têtes de noyau installés à partir de Linux-5.6 ou supérieur.
- Les applications qui utilisent directement les interfaces d'appel système doivent être portées pour utiliser les appels système time64 ajoutés dans Linux-5.1 à la place des appels système existants.
- Les applications qui utilisent une copie privée des fichiers d'en-tête uapi du noyau ou de leur contenu peuvent avoir besoin d'une mise à jour vers la version Linux-5.6.
- Quelques interfaces restantes ne peuvent pas être modifiées pour passer un time_t de 64 bits de manière compatible, elles doivent donc être configurées pour utiliser les temps CLOCK_MONOTONIC.
- Tous les problèmes Epoch présents sur les machines 64 bits s'appliquent également aux machines 32 bits. Cela affecte en particulier les systèmes de fichiers avec des horodatages sur disque utilisant des secondes signées en 32 bits : ext4 avec des petits inodes de type ext3, ext2, xfs (à corriger bientôt) et ufs.
Une version stable livrée fin mars
Outre cette mise à jour qui permettra de rester en 2038, la première release candidate (RC1) de Linux 5.6 a révélé un certain nombre de fonctionnalités. La communauté estime qu’il s’agit de la version la plus intéressante depuis la 5.0. L’application et protocole VPN gratuit et open source WireGuard est désormais pris en charge par la dernière version du kernel. Autre norme prise en charge, USB4 qui s’appuie sur la spécification Thunderbolt 3 pour proposer une vitesse de transfert jusqu’à 40 Gbps. Une RC2 a été publiée ce week-end dont les mises à jour concernent la documentation et le sous-système d’analyse des performances de Linux. Selon les prévisions, une version stable du dernier noyau devrait être livrée fin mars, début avril.
C'est article n'est pas tout à fait exact, en l'état le rollover aura lieu et les applications vont probablement mal se comporter. Ce qui est fourni par le noyau est juste une possibilité pour les applications d'utiliser des valeurs 64bits pour gérer le temps. Tant que celles-ci ne sont pas converties, le problème existe. Pour le moment, il n'est pas possible de faire cette conversion puisque la glibc n'a pas le support qui convient.
Signaler un abus