Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Debian 13 trixieで変わった 64bit time t 移行について

Debian 13 trixieで変わった 64bit time t 移行について

Avatar for Norimitsu Sugimoto

Norimitsu Sugimoto

September 06, 2025
Tweet

More Decks by Norimitsu Sugimoto

Other Decks in Technology

Transcript

  1. ͜ͷࢿྉʹ͍ͭͯ ౦ژΤϦΞ Debian ษڧձͷ Web αΠτ͔Β PDF Λ μ΢ϯϩʔυͰ͖·͢ https://tokyodebian-team.pages.debian.net/

    2025-09-minidebconf.html ษڧձ͸ؔ੢ Debian ษڧձͱҰॹʹΦϯϥΠϯͰ΄΅ ຖ݄։࠵͍ͯ͠·͢
  2. ໨࣍ ࣗݾ঺հ 2038 ೥໰୊ͱ͸ Debian 13 trixie ͷ 2038 ೥໰୊ରԠ

    trixie ޲͚ύοέʔδͰඞཁͳରԠ ιϑτ΢ΣΞࣗମͷઃܭɾ࣮૷ͷ֬ೝ ·ͱΊ ࢀߟࢿྉ
  3. ࣗݾ঺հ Norimitsu SUGIMOTO (ਿຊ యॆ) [email protected] Twitter: @dictoss MiniDebConf Japan

    2025 ͷ࣮ߦҕһ௕ Debian JP Project ձ௕ (2024-2025) ๺ւಓѴ઒ࢢͷग़਎ ๺ւಓѴ઒๺ߴ౳ֶߍɺ๺ւಓڭҭେֶѴ઒ߍΛଔۀ ౦ژͰγεςϜ։ൃͷ࢓ࣄΛ͍ͯ͠·͢ (python ͳͲ Ͱ Web αΠτ։ൃɺ௨৴ϓϩάϥϜ։ൃ)
  4. 2038೥໰୊ͱ͸ UNIX ࣌ؒͱ͍͏ʮ1970 ೥ 1 ݄ 1 ೔ 0 ࣌

    0 ෼ 0 ඵʯΛ 0 ͱͯ͠ 1 ඵ͝ͱʹ 1 Ճࢉ͢Δ࣌ؒͷදݱํ๏ UNIX/Linux ͷଟ͘Ͱ͸ UNIX ࣌ؒΛදݱ͢Δ time t ܕ Λ༻͍͓ͯΓɺ32bit OS ͷ৔߹͸ʮlong ܕʯͱ͍͏ 4 όΠτූ߸෇͖੔਺Λ༻͍͍ͯͨ 4 όΠτූ߸෇͖੔਺ͷ৔߹͸ UTC Ͱ 2038 ೥ 1 ݄ 19 ೔ 3 ࣌ 14 ෼ 7 ඵΛա͗ΔͱΦʔόʔϑϩʔ͢Δɻ ਺஋͕ 0 ʹͳΓ 1970 ೥ʹ໭ͬͯ͠·͏͜ͱͰίϯ ϐϡʔλ͕ޡ࡞ಈ͢ΔՄೳੑ͕͋Δ ͜ͷ͜ͱ͸ ʮ2038 ೥໰୊ʯͱݺ͹Ε͍ͯΔ UNIX/Linux ͷଟ͘ͷ 64bit OS ͷ৔߹ long ܕ͸ 8 όΠτූ߸෇͖੔਺ʹͳΔͨΊɺ2038 ೥໰ ୊͸ൃੜ͠ͳ͍
  5. Debian 13 trixie ͷ 2038 ೥໰୊ରԠ (1) ϦϦʔεϊʔτ 2.2.6. 64

    Ϗοτ time t ABI ΁ͷҠߦ 1 i386 Λআ͘͢΂ͯͷΞʔΩςΫνϟ͸ 64 Ϗοτ time t ABI Λ࢖͏Α͏ʹͳΓɺ2038 ೥Λ௒ ͑ͨ೔෇Λαϙʔτ͢ΔΑ͏ʹͳΓ·ͨ͠ɻ 32 ϏοτͷΞʔΩςΫνϟ (armel ͓Αͼ armhf) Ͱ ͸ɺଟ਺ͷϥΠϒϥϦͷ ABI มߋ͕ͦͷϥΠϒϥϦͷ ”soname” ͷมߋͳ͠ʹ࣮ࢪ͞Ε·ͨ͠ɻ͜ΕΒͷΞʔ ΩςΫνϟͰ͸ɺαʔυύʔςΟʔͷιϑτ΢ΣΞ΍ ύοέʔδ͸࠶ίϯύΠϧɾ࠶Ϗϧυ͕ඞཁͰɺͦ͠ ͯ੩͔ʹσʔλଛࣦ͍ͯ͠ΔՄೳੑ͕͋ΔͷͰਫ਼͕ࠪ ඞཁͰ͢ɻ i386 ΞʔΩςΫνϟ͸͜ͷҠߦͷର৅֎Ͱ͢ɻ͜Ε͸ ୈҰͷ໾ׂ͕ϨΨγʔͳιϑτ΢ΣΞΛαϙʔτ͢Δ ͜ͱ͔ͩΒͰ͢ɻ 1https://www.debian.org/releases/trixie/release-notes/ whats-new.ja.html#bit-time-t-abi-transition
  6. Debian 13 trixie ͷ 2038 ೥໰୊ରԠ (2) ͳͥ trixie ͷλΠϛϯάͳͷ͔

    2020-03-29 linux-5.6 ϦϦʔε 32bit ൛Ͱ΋࣌ࠁΛ 64bit ੔਺Ͱอ࣋͢ΔΑ͏ʹมߋ 2021-08-01 glibc-2.34 ͕ϦϦʔε TIME BITS=64 ϚΫϩʹରԠ ೔෇ linux glibc debian 2020-03-29 linux-5.6 - - 2021-08-01 - glibc-2.34 - 2021-08-15 - - debian 11 linux-5.10, glibc-2.31 2023-07-22 - - debian 12 linux-6.1, glibc-2.36 2025-08-09 - - debian 13 linux-6.12, glibc-2.41
  7. trixie ޲͚ύοέʔδͰඞཁͳରԠ (2) ύοέʔδͷίϯύΠϧΦϓγϣϯ͕มߋ Ϗϧυ͢Δϗετ্Ͱ dpkg-buildflags ίϚϯυΛ࣮ߦ͢Δ ͱ֬ೝՄೳ $ sudo

    apt-get install build-essential devscripts $ dpkg-buildflags armhf ͷ debian12 ͱ debian13 ʹ͓͚Δ CPPFLAGS ͷࠩ෼ -CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2 +CPPFLAGS=-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 +CPPFLAGS_FOR_BUILD=-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 2GB ௒͑ϑΝΠϧରԠͱ TIME BITS=64 ϚΫϩ͕௥Ճ
  8. trixie ޲͚ύοέʔδͰඞཁͳରԠ (3) debian/control ͷमਖ਼ ྫࣔʣlibmyapp ΛҠߦ͢Δ৔߹ Package: libmyappt64 ఏڙ͢ΔϥΠϒϥϦύοέʔδ໊ͷ຤ඌʹ

    t64 Λ௥Ճ ͢Δ໋໊نଇʹͳͬͨ Replaces: libmyapp bookworm ͔ΒͷΞοϓάϨʔυ࣌ʹैདྷͷύοέʔδ ໊͔Β t64 ͕຤ඌʹͭ͘Α͏มߋͨ͜͠ͱΛࣔ͢ Build-Depends: dpkg-dev (>= 1.22.5)2 -D TIME BITS=64 Λࢦఆ͢ΔΑ͏ʹͳͬͨॳΊͯͷ dpkg-dev ͷόʔδϣϯ Depends: (ґଘ͢ΔϥΠϒϥϦͰ t64 ͕຤ඌʹ͋Δύο έʔδ͸શͯमਖ਼) 2https://wiki.debian.org/ReleaseGoals/64bit-time
  9. ιϑτ΢ΣΞࣗମͷઃܭɾ࣮૷ͷ֬ೝ (1a) $ vi src/time64.c #include <stdio.h> #include <time.h> struct

    mytime{ int a; /* 4 byte */ time_t t; /* 4-8 byte */ int b; /* 4 byte */ }; int main(int argc, char *argv[]){ printf("sizeof(int) = %lu\n", sizeof(int)); printf("sizeof(long) = %lu\n", sizeof(long)); printf("sizeof(time_t) = %lu\n", sizeof(time_t)); printf("sizeof(struct mytime) = %lu\n", sizeof(struct mytime)); return 0; } $ make gcc -Wall -g -c src/time64.c -o src/time64.o gcc -Wall -g -o a.out src/time64.o
  10. ιϑτ΢ΣΞࣗମͷઃఆɾ࣮૷ͷ֬ೝ (1b) ؀ڥʹΑΔม਺ͷόΠτ਺ͷҧ͍ όΠτ਺ Debian 12 Debian 12 Debian 13

    amd64 armhf armhf sizeof(int) 4 4 4 sizeof(long) 8 4 4 sizeof(time t) 8 4 8 sizeof(struct mytime) 24 12 24 time t ܕͷม਺ͷαΠζ 4 byte ͔Β 8 byte ΁૿͑Δ time t ܕΛؚΉߏ଄ମͷϝϞϦαΠζͱΦϑηοτ αΠζ͕ (ύσΟϯάͰ) େ͖͘ͳΔ৔߹͕͋Δ ߏ଄ମͷϝϞϦΛͦͷ··όΠφϦͰϑΝΠϧ΁ॻ͖ ࠐΉ৔߹΍௨৴Ͱૹ৴͍ͯ͠Δ৔߹͸چγεςϜͱޓ ׵͕ແ͘ͳΔ
  11. ιϑτ΢ΣΞࣗମͷઃܭɾ࣮૷ͷ֬ೝ (2) ݹ͍όʔδϣϯͷ Debian ͔Β 64bit time t Ҡߦͷ஫ҙ఺ ϑΝΠϧγεςϜ

    ext ܥ͸ ext4 ΁Ҡߦ͢Δ͜ͱ (ext2/ext3 ͸ 2038 ೥໰ ୊͋Γ) xfs ͸ linux-5.10 ΑΓݹ͍؀ڥͰϑΥʔϚοτͨ͠৔߹ ͸ 2038 ೥໰୊͋Γ σʔλϕʔε ܕఆٛͰ࣌ࠁΛ 32bit ਺஋Ͱѻ͍ͬͯΔ৔߹͋Γ (ྫ: mysql ͷ timestamp ܕ) NTP αʔό / NTP ΫϥΠΞϯτ NTP (ϓϩτίϧ) ͷ 2036 ೥໰୊ (1900 ೥࢝·Γ) 2010 ೥ൃߦͷ RFC5905 Λ࣮૷ͨ͠ NTPv4 ରԠ൛ͳ ΒӨڹͳ͠ Debian 12 ͔Β NTP ΫϥΠΞϯτͷσϑΥϧτ͸ systemd-timesyncd Debian 12 Ͱ ntp ύοέʔδ͸ҠߦύοέʔδʹͳΓ ntpsec ΁ஔ׵ ͦͷଞͷҠߦઌ͸ chronyɺopenntpd ͕બ୒ࢶ
  12. ·ͱΊ Debian 13 trixie Ͱ͸ debian/control ͷ࡞๏͕มΘͬͨ 32bit ؀ڥͰ͸ time

    t ܕ͸ debian ύοέʔδͷϏϧυ ࣌Ҏ֎Ͱ΋ඪ४Ͱ 64bit ΁มߋ (i386 ͸আ͘) time t ܕͷαΠζมߋͰߏ଄ମͷϝϞϦͷαΠζ΍Φ ϑηοτ͕มΘͬͯ΋ɺϓϩάϥϜ͕ѻ͏ϑΝΠϧ΍ ௨৴Ͱޓ׵ੑ͕͋Δ͔֬ೝ͕ඞཁ ϓϩάϥϜΛ࠶Ϗϧυ͢ΔҎ֎ʹ΋ 32bit time t ໰୊͕ ӅΕ͓ͯΓ࢒ͣ͞ରԠ͕ඞཁ
  13. ࢀߟจݙ Debian wiki - ReleaseGoals 64bit-time https: //wiki.debian.org/ReleaseGoals/64bit-time Yocto Α΋΍·࿩

    ୈ 3 ճʮLinux ͷ 2038 ೥໰୊ʯ https: //www.lineo.co.jp/blog/yocto/vol03-2038.html