C’est depuis la version 5.6 du noyau, publié en mars dernier, que l’équipe a commencé à proposer des correctifs pour résoudre le problème de l’année 2038. Il s’agit en effet d’un bogue détecté il y a longtemps dans l’encodage du temps sur les systèmes de type Unix, dont Linux, Mac OS, et d’autres systèmes d’exploitation compatibles POSIX. Sur ces systèmes, le calcul du temps est effectué en fonction des secondes écoulées à partir du 1er janvier 1970 à 00:00:00 UTC (nommée également epoch). Un jour donnera par exemple 86 400 secondes et une année 31 536 000 secondes.
Et plus les années passeront, plus il faudra de nombres pour représenter les dates. Pour effectuer le décompte sur ces systèmes, lorsque la fonction time() est appelée, elle retourne un entier signé de type “time_t​”. Si le système est 32 bits, la valeur retournée est un entier signé 32 bits et si le système est 64 bits, la valeur retournée est 64 bits. Sur un système 64 bits, les limites sont supérieures à 292 milliards d’années. Il n’y a donc pas de soucis à se faire ici (ce sera beaucoup plus que l'âge de notre planète ou l'estimation de son espérance de vie).
Mais sur les systèmes 32 bits, le nombre de secondes total que la fonction peut retourner est 231–1, c’est-à-dire environ 136 ans. La date de référence étant le 1er janvier 1970 à 00:00:00 UTC, la date minimale représentable est le vendredi 13 décembre 1901 et la date maximale représentable est le mardi 19 janvier 2038 à 3 h 14 min 8 s. Lorsqu’il sera 3 h 14 min 8 s le 19 janvier 2038, le système passera au 13 décembre 1901 à la seconde suivante (également appelé le bogue de l’an 2038 abrégé en anglais Y2038). Bien évidemment, ce ne sera pas la fin du monde.
Toutefois, les systèmes 32 bits de la famille UNIX qui seront encore basés sur cet encodage seront fortement perturbés au point de ne plus pouvoir fonctionner correctement puisque le temps est l’un des éléments les plus importants sur les ordinateurs. Avec la version 5.6 du noyau, l’équipe s’est assurée que les systèmes Linux de 32 bits puissent passer l’année 2038 sans ramener l’utilisateur en 1901, mais avec la prochaine version, Linux 5.10, les choses pourraient évoluer encore plus. Mercredi, Wong a envoyé à Linus Torvalds une “grosse pile de nouveaux correctifs pour 5.10”.
Les correctifs pour XFS pour le noyau Linux 5.10 soumis Wong sont prévus pour retarder le bogue de l'an 2038 de 448 années supplémentaires. « Les changements les plus importants sont deux nouvelles fonctionnalités pour les métadonnées sur le disque : une pour enregistrer les tailles des brèves inodes dans l'AG pour augmenter les contrôles de redondance, mais aussi pour améliorer les temps de montage ; et une seconde fonctionnalité pour prendre en charge les horodatages jusqu'en 2486 », a écrit Darrick Wong dans le mail qu’il a adressé à Torvalds mercredi.
Les 448 années supplémentaires devraient être suffisantes pour trouver une solution à long terme pour ce problème concernant le système de fichiers XFS. Il existe deux nouvelles fonctionnalités de métadonnées sur disque pour XFS avec Linux 5.10 dans les correctifs soumis par Wong, que voici :
- la taille des brèves inodes dans le groupe d'allocation est désormais enregistrée. Cela permet d'augmenter les contrôles de redondance et d'accélérer les temps de montage ;
- prise en charge des horodatages jusqu'en 2486. Cette fonctionnalité de “gros horodatage” consiste à remanier leurs fonctions d'encodage de l'horodatage et des inodes pour traiter les horodatages comme un compteur de nanosecondes de 64 bits et un décalage de bits pour augmenter la taille effective. Cela permet maintenant à XFS de dépasser largement le bogue de l'an 2038 pour passer maintenant à l'année 2486. La mise en place d'un nouveau système de fichiers XFS avec bigtime activé permet d'obtenir une plage d'horodatage allant de décembre 1901 à juillet 2486 plutôt que de décembre 1901 à janvier 2038. Afin de préserver la rétrocompatibilité, la fonction d'horodatage n'est pas activée par défaut.
Il n'est pas confirmé que les correctifs seront intégrés dans Linux 5.10, mais cela semble très probable. La fenêtre de fusion est ouverte et Darrick J. Wong, employé par Oracle, est le mainteneur XFS, si bien que les correctifs XFS de sa part sont fusionnés par routine.
Source : Darrick J. Wong
Et vous ?
Qu'en pensez-vous ?
Voir aussi
Linux est prêt pour « la fin des temps » : un correctif du bogue de l'an 2038 vient d'être intégré à Linux 5.6 et permettra aux systèmes 32 bits de marcher après 2038, les travaux sont encore en cours
Le «bug de l'an 2000» se reproduira en 2038 dans le monde Linux, mais c'est maintenant qu'il faut s'inquiéter selon Jon Corbet
Linux 5.6 est disponible avec l'implémentation du VPN WireGuard et la prise en charge d'Arm EOPD
Linux 5.9 est disponible. Cette version augmente les performances du processeur avec la prise en charge de FSGSBASE, et comporte diverses nouvelles fonctionnalités et améliorations