El 03:14:08 hora del meridiano de Greenwich (GMT, también conocido como tiempo universal coordinado) del 19 de enero de 2038 (es decir, un martes), se acaba el mundo. Bueno, no en el sentido bíblico del Libro de las Revelaciones. Pero, lo que sucederá es que el valor del tiempo en los sistemas operativos basados en Unix de 32 bits, como Linux y las versiones más antiguas de macOS, se queda sin números y empieza a contar el tiempo con números negativos. Eso no es bueno. Podemos esperar que los ordenadores de 32 bits que ejecutan estos sistemas operativos tengan ataques. Afortunadamente, los desarrolladores de Linux ya tenían una solución preparada.
El problema comienza con la forma en que Unix cuenta el tiempo. Unix, y sus parientes -Linux, macOS y otros sistemas operativos compatibles con POSIX- fechan el comienzo del tiempo desde la Época: 00:00:00 GMT del 1 de enero de 1970. La familia Unix mide el tiempo por el número de segundos desde la Época.
Hasta aquí, todo bien. Pero, como Unix y la familia comenzaron como sistemas operativos de 32 bits, el valor del tiempo se mantiene como un único número entero de 32 bits con signo. Son muchos segundos, pero al igual que el efecto 2000 del siglo pasado, no es suficiente.
Los desarrolladores de Linux han visto esto venir durante décadas. Por eso, el desarrollador del kernel de Linux Arnd Bergmann y otros han estado trabajando en una reparación. Estas correcciones están ahora en el próximo kernel de Linux 5.6. Bergmann explicó: «Linux-5.6, o mi backport de los parches a 5.4, debería ser la primera versión que puede servir como base para un sistema de 32 bits diseñado para funcionar más allá del año 2038».
Hay algunas advertencias:
- Todo el espacio de usuario debe ser compilado con un time_t de 64 bits, que será soportado en los próximos musl-1.2 y glibc-2.32, junto con las cabeceras del kernel instaladas a partir de Linux-5.6 o superior.
- Las aplicaciones que utilizan las interfaces de llamada al sistema directamente necesitan ser portadas para utilizar las llamadas al sistema time64 añadidas en Linux-5.1 en lugar de las llamadas al sistema existentes.
- Las aplicaciones que utilizan una copia privada de los archivos de cabecera uapi del kernel o su contenido pueden necesitar actualizarse a la versión Linux-5.6.
- Unas pocas interfaces restantes no pueden cambiarse para pasar un time_t de 64 bits de forma compatible, por lo que deben configurarse para utilizar tiempos CLOCK_MONOTONIC.
- Todos los problemas de Epoch presentes en las máquinas de 64 bits también se aplican a las máquinas de 32 bits. En particular, esto afecta a los sistemas de archivos con marcas de tiempo en el disco que utilizan segundos firmados de 32 bits: ext4 con inodos pequeños al estilo de ext3, ext2, xfs (que se arreglará pronto) y ufs.
En resumen, hay mucho trabajo de limpieza que hacer incluso después de que se haya solucionado el problema principal.
MacOS lleva más de una década alejándose del software de 32 bits. Pero, tt fue sólo en el lanzamiento de finales de 2019 de macOS Catalina, que Apple dio las aplicaciones de 32 bits el arranque.
Ahora, te estarás preguntando — ya que todos estamos ejecutando computadoras de 64 bits en estos días — por qué es esto incluso un problema. Bueno, es así. En primer lugar, muchos sistemas embebidos y dispositivos del Internet de las Cosas (IoT) siguen ejecutando sistemas operativos de 32 bits. De hecho, para el año 2038, probablemente todavía habrá nuevos dispositivos de 32 bits que lleguen al mercado.
También sabemos, gracias a que el efecto 2000 volverá a aparecer en 2020, que los sistemas que podríamos suponer que serán arrojados a los vertederos dentro de 18 años seguirán vivos y en buen estado, y con un mal comportamiento cuando llegue la época.
Pero míralo de esta manera: Después de arreglar esto, no tendremos que preocuparnos de que Linux de 64 bits se quede sin segundos hasta las 15:30:08 GMT del domingo 4 de diciembre de 29.227.702.659. Personalmente, no me voy a preocupar por eso.
Historias relacionadas:
- El efecto 2000 vuelve a causar dolores de cabeza a los desarrolladores
- El gobierno de Corea del Sur explora el paso de Windows al escritorio de Linux
- Se ha encontrado y solucionado un desagradable error de sudo en Linux y macOS