-
Debian이 Y2K38 버그를 우회하기 위해 다가오는 Debian 13 "Trixie"부터 64비트 시간 변수(time_t) 로 전환함
- 이번 변화는 32비트 하드웨어를 포함해 가장 오래된 장비 일부만 제외하고 적용됨
- 64비트로의 전환은 애플리케이션 바이너리 인터페이스(ABI) 변경이 필요해, 6,429개 패키지에 영향을 미침
- i386 포트는 기존 32비트 time_t를 유지하며, 향후 i686 아키텍처에 64비트 시간이 도입될 수 있음
-
소프트웨어 호환성 테스트 등 추가 정보는 Debian 위키에서 확인 가능함
Debian의 Y2K38 버그 대응: 64비트 시간으로 전환
Debian은 다가올 Y2K38 또는 Unix Epochalypse 문제를 피하기 위해, 지원되는 가장 오래된 하드웨어 일부를 제외하고 모든 환경에서 64비트 시간으로 전환함. 이를 통해 2038년 1월 19일 발생 예정인 32비트 signed int 범위 초과로 인한 시간 값 오류를 방지함.
Y2K38 및 Unix Epochalypse 문제 배경
- Y2K38 문제는 1970년 1월 1일 이후 경과한 초를 32비트 signed int로 표현하는 Unix 시스템에서, 2038년이 지나면 오버플로우가 발생해 시간이 1900년 등 과거로 잘못 되돌아가는 현상임
- 이는 과거 Y2K(2000년 문제)처럼 짧은 데이터 형식을 선택한 아키텍처적 결정에서 기인함
- Y2K 때는 개발자들의 사전 대응 덕분에 대혼란을 막을 수 있었음
Debian의 주요 대응
-
Debian 13 "Trixie" 릴리즈부터 모든 주요 아키텍처에서 64비트 time_t를 기본값으로 적용함
- 64비트 하드웨어는 이미 안전하나, 32비트 프로세서 기반의 임베디드 기기 및 레거시 하드웨어에서 문제가 잦음
- 이러한 장비는 자동차제어, IoT, TV, 라우터 등 비용 민감하고 대량 출하되는 분야에서 여전히 사용되고 있음
- 많은 신형 장비는 OpenEmbedded, Alpine, Android, Gentoo 등 자체 빌드 리눅스를 사용하나, Debian 기반 임베디드 기기 사용처도 향후 수년간 지속될 전망임
적용 및 변경 사항
- time_t 변수는 관련 코드에 6,429개 패키지에 분산되어 있어 대규모 작업이 필요했음
- 이번 변화는 ABI(애플리케이션 바이너리 인터페이스) 호환성을 깨뜨릴 수 있으므로, 모든 관련 라이브러리와 패키지에서 동시에 조정됨
- 유지보수팀에 따르면, 해당 작업은 완결 및 충분히 테스트가 이루어진 상태임
예외 및 미래 계획
-
i386 포트(기존 x86)는 32비트 time_t를 계속 유지하며, 기존 바이너리 실행 호환성의 목적으로 남김
-
i686 아키텍처에 64비트 시간 및 최신 ISA(명령어 세트 아키텍처) 적용이 별도로 논의될 수 있음
-
hurd-i386 포트는 커널 지원 미비로 전환되지 않으며, 대신 hurd-amd64로 옮기는 방안이 진행 중임
개발자 참고 사항
- 개발자들은 자신의 소프트웨어가 64비트 시간 변수 적용에 따라 깨지지 않는지를 Debian 위키에서 안내하는 방법을 통해 테스트 가능함
- 자세한 내용 및 기술 문서는 Debian wiki에서 제공됨