Docker Desktop for Mac ã¯ãmacOS ããã€ãã£ã ã³ã³ãããŒããµããŒãããŠããªãããããã«ã㌠LinuxKit VM ã§ Docker ãšã³ãžã³ãš Linux ã³ã³ãããŒãå®è¡ããŸãã ãã«ã㌠VM ã«ã¯ããã¹ãã®ã¯ããã¯ãšã¯å¥ã®ç¬èªã®å éšã¯ããã¯ããããŸãã 2ã€ã®ã¯ããã¯ãé¢ãããšãçªç¶ãæå»ãŸãã¯ãã¡ã€ã«ã®ã¿ã€ã ã¹ã¿ã³ãã«äŸåããã³ãã³ãã®åäœãç°ãªãå ŽåããããŸãã ããšãã°ããœãŒã¹ ãã¡ã€ã«ã倿ŽãããåŸã§ãããœãŒã¹ ãã¡ã€ã«ã®å€æŽæå» (éåžžã¯ãã¹ãã«æžã蟌ãŸãã) ããã€ããªã®å€æŽæå» (é垞㯠VM ã«æžã蟌ãŸãã) ãããå€ãå Žåã"make" ã¯å ±æããªã¥ãŒã éã§æ£åžžã«åäœããªããªããŸã ("docker run -v")ã æéã®æµæžŠã¯ã次ã®ãããªåé¡ãèªãããšã§ãããããã«ãéåžžã«ã€ã©ã€ã©ããå¯èœæ§ããããŸã https://github.com/docker/for-mac/issues/2076.
åŸ ã£ãŠãã ãããVMã«ã¯(ä»®æ³)ããŒããŠã§ã¢ãªã¢ã«ã¿ã€ã ã¯ããã¯(RTC)ããããŸããã?
ãã«ã㌠VM ãèµ·åãããšãã¯ããã¯ã¯æåã« "hwclock -s" ã®æç€ºçãªåŒã³åºãã«ãã£ãŠåæãããŸãã ãã€ããŒãããã®ä»®æ³RTC.æ®å¿µãªãããRTCã®èªã¿åãã¯(ç©çããŒããŠã§ã¢ãšä»®æ³ã®äž¡æ¹ã§)äœéãªæäœã§ãããããLinuxã«ãŒãã«ã¯ãä»ã®ã¿ã€ãã³ã°æ
å ±ãœãŒã¹ã®äžã«ç¬èªã®å
éšã¯ããã¯ãæ§ç¯ããŸãã ã¯ããã¯ãœãŒã¹ {ããã£ã.æãä¿¡é Œæ§ã®é«ãã®ã¯ãéåžžãæåŸã®CPUãªã»ãã以éã®CPUãµã€ã¯ã«æ°ãã«ãŠã³ãããŠæéãæž¬å®ããCPUã¿ã€ã ã¹ã¿ã³ãã«ãŠã³ã¿(ãtscã)ã¯ããã¯ãœãŒã¹ã§ãã TSCã«ãŠã³ã¿ã¯ãã³ãããŒã¯ã«ãã䜿çšãããçŸåšã®TSCå€ããã¹ãå®è¡ã®éå§æã«(åœä»€ãä»ã㊠rdtsc )èªã¿åããããã¹ãå®è¡ã®çµäºæã«å床èªã¿åãããŸãã æ¬¡ã«ã2 ã€ã®å€ãæžç®ããŠãã³ãŒãã CPU ãµã€ã¯ã«ã§å®è¡ãããã®ã«ããã£ãæéãçæã§ããŸãã ãã ãããããã®ã«ãŠã³ã¿ãŒã絶察ç©çæéã®ä¿¡é Œã§ãããœãŒã¹ãšããŠé·æé䜿çšããããšãããšãç¹ã« VM ã§å®è¡ããå Žåã«åé¡ããããŸãã
- ãããã TSCåšæ³¢æ°ãæ€åºããä¿¡é Œã§ããæ¹æ³ã¯ãããŸãã:ããããªããšãçµæãç§ã«å€æããããã«ã«ãŠã³ã¿ãŒå€ãäœã§å²ããããããŸããã
- äžéšã®é»æºç®¡çãã¯ãããžã¯ãTSCåšæ³¢æ°ãåçã«å€æŽããŸãã
- ã«ãŠã³ã¿ã¯ãç©ç CPU ããªã»ããããããš (ãã¹ãã®ãµã¹ãã³ã/ã¬ãžã¥ãŒã ãªã©)ã0 ã«æ»ãå¯èœæ§ããããŸãã
- ä»®æ³CPUã1ã€ã®ç©çCPUã³ã¢ã§ã®å®è¡ã忢ããåŸã§å¥ã®CPUã³ã¢ã§å®è¡ãéå§ãããšãTSCã«ãŠã³ã¿ãŒãçªç¶ååŸã«ãžã£ã³ãããå¯èœæ§ããããŸãã
TSC ã«ãŠã³ã¿ãŒã䜿çšããããšã®ä¿¡é Œæ§ã®äœãã¯ããã® Mac çš Docker ãã¹ã¯ãããã®ã€ã³ã¹ããŒã«ã§ç¢ºèªã§ããŸãã
$ docker run --rm --privileged alpine /bin/dmesg |grep ã¯ããã¯ãœãŒã¹ ... [3.486187]ã¯ããã¯ãœãŒã¹:ã¯ããã¯ãœãŒã¹tscã«åãæ¿ããŸãã [6963.789123]ã¯ããã¯ãœãŒã¹:CPU3ã®èšæãŠã©ããããã°:ã¹ãã¥ãŒã倧ãããããããã¯ããã¯ãœãŒã¹ãtscããäžå®å®ãšããŠããŒã¯ããŸãã [ 6963.792264] ã¯ããã¯ãœãŒã¹: 'hpet' wd_now: 388d8fc2 wd_last: 377f3b7c ãã¹ã¯: ffffffff [ 6963.794806] ã¯ããã¯ãœãŒã¹: 'TSC' cs_now: 104A0911EC5A cs_last: 10492CCC2AEC ãã¹ã¯: ãµãµãµãµãµãµãµ [6963.797812]ã¯ããã¯ãœãŒã¹:ã¯ããã¯ãœãŒã¹hpetã«åãæ¿ããŸãã
å€ãã®ãã€ããŒãã€ã¶ãŒã¯ãæç€ºçãªãæºä»®æ³åã¯ããã¯ãã€ã³ã¿ãŒãã§ã€ã¹ãæäŸããTSCå€ãç§ã«æ£ãã倿ã§ããããã«ååãªè¿œå æ å ±ãVMã«æäŸããããšã§ããããã®åé¡ã解決ããŸãã æ®å¿µãªãããMacã®Hypervisor.frameworkã¯ããã®ãããªæºä»®æ³åãããã¿ã€ã ãœãŒã¹ã®å®è£ ãå¯èœã«ããã®ã«ååãªæ å ±(ç¹ã«ãµã¹ãã³ã/ã¬ãžã¥ãŒã ãªãŒããŒ)ãæäŸããªããããAppleã«åé¡ãå ±åããåé¿çãæ¢ããŸããã
ããã¯å®éã«ã¯ã©ãã»ã©æªãã§ãã?
VMãšãã¹ãã®éã®æéããªãããæž¬å®ããç°¡åãªããŒã«ãäœæããŸããâãœãŒã¹ã¯ ããã¯.æå»åæãœãããŠã§ã¢ãã€ã³ã¹ããŒã«ããã«å°ããªLinuxKitãã¹ãVMãäœæããVMã®èµ·ååŸã®ãèªç¶ãªãã¯ããã¯ããªãããæž¬å®ããŸããã

ã°ã©ãäžã®åç·ã¯ãç°ãªããã¹ãå®è¡ã®ã¯ããã¯ããªããã瀺ããŠããŸãã ã°ã©ããããVMã®æéã¯ãçµéãããã¹ãæéã®3ç§ããšã«çŽ2ããªç§å€±ãããŠããããã«èŠããŸãã åèšããªãããçŽ1ç§(çŽ1500ç§ãŸãã¯25ååŸ)ã«éãããšãéåžžã«è¿·æã«ãªãå§ããŸãã
OKãNTPããªã³ã«ããŠå¿ããããšã¯ã§ããŸãã?
ãããã¯ãŒã¯ã¿ã€ã ãããã³ã«(NTP)ã¯ãã¯ããã¯ã®åæãç¶æããããã«èšèšãããŠãããããçæ³çã§ãã åé¡ã¯ã
- ã©ã®ã¯ã©ã€ã¢ã³ãã§ãã?
- ã©ã®ãµãŒããŒã§ãã?
ä»ã®äººãšåãããã«ãããã©ã«ããpool.ntp.org ã䜿çšããã®ã¯ã©ãã§ãã?
å€ãã®ãã·ã³ãããã€ã¹ã¯ãNTPãµãŒããŒãšããŠç¡æ pool.ntp.org ã䜿çšããŠããŸãã ããã¯ããã€ãã®çç±ã§ç§ãã¡ã«ãšã£ãŠæªãèãã§ãã
- ããã¯åœŒãã®[ã¬ã€ãã©ã€ã³](http://www.pool.ntp.org/en/vendors.html)(ãã³ããŒãšããŠç»é²ããããšã¯ã§ããŸããã)
- NTPãµãŒããŒããŒã«å ã®ã¯ããã¯èªäœãé©åã«åæãããŠãããšããä¿èšŒã¯ãããŸãã
- 人ã ã¯MacãäºæããªãUDPãã©ãã£ãã¯ãéä¿¡ããã®ã奜ãã§ã¯ãããŸããã圌ãã¯ããããã«ãŠã§ã¢ã®äŸµå ¥ã§ããããšãæããŠããŸã
- ãšã«ãããããVMãã©ã³ãã ãªç©çã©ãã®ååæèšãšåæãããã®ã§ã¯ãªãããã¹ããšåæãããŸã(ã¿ã€ã ã¹ã¿ã³ããæ©èœããããã«)ã ãã¹ãèªäœã "ãªã¢ã«ã¿ã€ã " ãã 30 åé¢ããŠããå Žåã¯ãVM ã "ãªã¢ã«ã¿ã€ã " ãã 30 åé¢ããããã«ããå¿ èŠããããŸãã
ãããã£ãŠãDockerãã¹ã¯ãããã§ã¯ããã¹ãäžã§ç¬èªã®NTPãµãŒããŒãå®è¡ãããã¹ãã®ã¯ããã¯ãæäŸããå¿ èŠããããŸãã
ã©ã®ãµãŒããŒå®è£ ã䜿çšããå¿ èŠããããŸãã?
NTP ãããã³ã«ã¯ãå ç¢ã§ã°ããŒãã«ã«ã¹ã±ãŒã©ãã«ã«ãªãããã«èšèšãããŠããŸãã æ£ç¢ºãªæèšããŒããŠã§ã¢(ååæèšãååæèšããã®ä¿¡å·ãå«ãGPSãã£ãŒããªã©)ãåãããµãŒããŒã¯æ¯èŒçãŸãã§ãããããä»ã®ãã¹ãŠã®ãã¹ãããããã«çŽæ¥æ¥ç¶ã§ããããã§ã¯ãããŸããã NTPãµãŒãã¯ãäžäœã®ãéå±€ããããäžã®éå±€ãšåæãããšã³ããŠãŒã¶ãŒãšããã€ã¹ãäžäœã®ãµãŒããšåæããéå±€ã«é 眮ãããŸãã ç§ãã¡ã®ãŠãŒã¹ã±ãŒã¹ã«ã¯1ã€ã®ãµãŒããŒãš1ã€ã®ã¯ã©ã€ã¢ã³ãããå«ãŸããŠããªããããããã¯ãã¹ãŠå®å šã«äžèŠã§ãããã§èª¬æãããŠããããã«ãç°¡ç¥åãããNTPãã䜿çšããŸãã RFC2030 ããã«ãããã¯ã©ã€ã¢ã³ã(ãã®å Žåã¯VM)ããµãŒããŒ(ãã®å Žåã¯ãã¹ã)ãšããã«åæã§ããããã«ãªããŸãã
ã©ã®NTPã¯ã©ã€ã¢ã³ãã䜿çšããå¿ èŠããããŸãã(ãããŠããã¯éèŠã§ãã)?
Docker Desktop ã®åæããŒãžã§ã³ãå«ãŸããŠããŸã ãªãŒãã³NTPD ãã ã¢ããã¹ããªãŒã LinuxKit ããã±ãŒãž.次ã®ã°ã©ãã¯ãopenntpd ãæåã® 10000 ç§éå®è¡ããããã®åŸããžãŒããã¯ã¹ NTP ã¯ã©ã€ã¢ã³ãã«åãæ¿ãã 1 ã€ã® VM ããŒãã§ã®æéããªããã瀺ããŠããŸãã

ãã®å³ã¯ãopenntpdãå®è¡ãããŠããç¶æ ã§ã¯ããã¯ããŸã å€§å¹ ã«ããªããããŠããããšã瀺ããŠããŸãããbusyboxãå®è¡ããããšã§ãä¿®æ£ããããŠããŸãã ãããçè§£ããã«ã¯ããŸãNTPã¯ã©ã€ã¢ã³ããLinuxã«ãŒãã«ã¯ããã¯ã調æŽããæ¹æ³ãçè§£ããããšãéèŠã§ãã
- èª¿æŽæé (3) âããã¯ãã«ã¿ãåãå ¥ããŸã(äŸ: -10s) ãæå®ããã·ã¹ãã ã¯ããã¯ãåŸã ã«èª¿æŽããããã«ã«ãŒãã«ã«æç€ºããã¯ããã¯ãçªç¶åæ¹ (ãŸãã¯åŸæ¹ãå調ã¯ããã¯ã䜿çšããªãã¿ã€ãã³ã°ã«ãŒãã§åé¡ãåŒãèµ·ããå¯èœæ§ããããŸã) ããªãããã«ããŸã
- ã¢ãžãã£ã¡ãã¯ã¹ (2) âããã«ãããã«ãŒãã«ã¯ããã¯*ã¬ãŒã*èªäœã調æŽããŠãç§ãã¡ãèŠããã§ãããããªäœç³»çãªããªããã«å¯ŸåŠã§ããŸã
- äžæ¥ã®èšå®æå» (2) âããã«ãããããã«æèšãæå®ãããæéã«ãã³ãããŸã
ã®433è¡ç®ãèŠããš ãªãŒãã³NTPD NTP.C (ç³ãèš³ãããŸããããCVSwebã«çŽæ¥ãªã³ã¯ã¯ãããŸãã)次ã«ãOpenNTPDãadjtimeã䜿çšããŠå®æçã«ã¯ããã¯ã«ãã«ã¿ã远å ããããªãããä¿®æ£ããããšããŠããããšãããããŸãã ãã㯠openntpd ãã°ã§ã確èªã§ããŸãã ã§ã¯ããªãããã广çã§ã¯ãªãã£ãã®ã§ããããã
次ã®ã°ã©ãã¯ãadjtime(+10s) ãš adjtime(-10s) ã®åŒã³åºãã«ãã£ãŠèªç¶ãªã¯ãã㯠ããªãããã©ã®ããã«åœ±é¿ãåãããã瀺ããŠããŸãã

ç§ãã¡ãçµéšããŠãããèªç¶ãªãããªããã¯éåžžã«å€§ããã®ã§ããadjtimeãã ãã§ã¯è£ãããšãã§ããªãããã§ãã busyboxã®ããã©ãŒãã³ã¹ãåäžããçç±ã¯ããadjtimexãã䜿çšããŠã¯ããã¯ã¬ãŒãèªäœã調æŽããããã§ãã
次ã®ã°ã©ãã¯ãã«ãŒãã«ã»ã¯ããã¯åšæ³¢æ°ã®å€åã瀺ããŠããŸã(timex.freq) ã¢ãžã¿ã€ã¡ãã¯ã¹ã䜿çšããŠè¡šç€ºããŸãã æåã®10000ã§ã¯openntpdã䜿çšã(ãããã£ãŠãAPIã䜿çšããªããã調æŽã¯0ã§ã)ãæ®ãã®ã°ã©ãã§ã¯busyboxã䜿çšããŸããã

調æŽå€ãå¹³åŠã§ãæåã®ã¹ãã€ã¯ãäžåãã«ãªã£ãåŸãéåžžã«è² ã®ãŸãŸã§ããããšã«æ³šæããŠãã ããã ç§ãæåã«ãã®ã°ã©ããèŠããšããç§ã¯ãã£ããããããšãèªããªããã°ãªããŸãã - ã¯ããã¯ã¬ãŒããåžžã«å®å®ãããŸãŸã§ããããã«ãã€ã¯ã管çãããŠããã®ã§ãç§ã¯äžäžã«ãžã°ã¶ã°ã«äœããèŠãããšæã£ãŠããŸããã
ã«ãŒãã«åšæ³¢æ°ãªãã»ããã®æçµå€ã«ã€ããŠäœãç¹å¥ãªããšã¯ãããŸãã?
æ®å¿µãªããããã¯ç¹å¥ã§ãã ãã èª¿æŽ (2) ãã³ããŒãž:
ADJ_FREQUENCY
Â Â Â Â Â Â Â Â Â Â Â Â Â åšæ³¢æ°ãªãã»ããã®èšå®å
buf.freq. Linux 2.6.26 以éã§ã¯ã
             æå®ãããå€ã¯ (-32768000, +32768000) ã®ç¯å²ã«ã¯ã©ã³ããããŸãã
ãããã£ãŠãbusyboxã¯äœç³»çãªããªãããä¿®æ£ããããã«æå€§é(-32768000)ã ãã¯ããã¯ãé ãããããã§ãã adjtimex(8) ã®ãã³ããŒãž ã«ãããšãå€ 65536 㯠1ppm ã«çžåœããã®ã§ã32768000 㯠500ppm ã«çžåœãããã·ã¹ãããã£ãã¯ããªããã®åœåã®æšå®å€ã¯3ç§ããšã«2msãã€ãŸãçŽ666ppmã§ãã£ãããšãæãåºããŠãã ããã ããã¯è¯ããããŸãã:ããã¯ãadjtimexããããè£ãããã«ã§ããããšã®éçã«ããããããã远å ã®èª¿æŽãæäŸããããã«adjtimeã«ãäŸåããŠããããšãæå³ããŸãã æ®å¿µãªããããã¹ãŠã®ãã¹ãã¯1å°ã®ãã·ã³ã§è¡ãããŠãããadjtimex + adjtimeã§ããããªããã«å¯ŸåŠã§ããªãå¥ã®ã·ã¹ãã (ããããç°ãªãçé»ååäœ)ãæ³åããã®ã¯ç°¡åã§ãã
ã§ã¯ãã©ãããã°ããã®ã§ããããã
NTPã¯ã©ã€ã¢ã³ããadjtimeãadjtimexãªã©ã®APIã䜿çšããäž»ãªçç±ã¯ã圌ãã
- å調æ§:ã€ãŸããã¿ã€ãã³ã°ã«åèª¿ãªæèšã䜿çšããŠããªãããã°ã©ã ã§ãã°ãåŒãèµ·ããå¯èœæ§ããããããæéãéè¡ããªãããã«ããããã§ã ãããç§ãã¯ã©ãŠããã¬ã¢DNSã«åœ±é¿ãäžããæ¹æ³ãšçç±;ãããŠ
- æ»ããã:ã€ãŸããçªç¶åæ¹ã«ãžã£ã³ãããããäžåºŠã«å€ãã®ã¿ã€ãã³ã°ã«ãŒããcronãžã§ããªã©ãããªã¬ãŒãããããããšã¯ãããŸããã
Dockerãã¹ã¯ãããã¯ãéçºè
ãã©ãããããããã¹ã¯ãããã§ã³ãŒãããã«ãããã³ãã¹ãããããã«äœ¿çšãããŸãã éçºè
ã¯æ¥åžžçã« IDE ã䜿çšããŠãã¹ãäžã®ãã¡ã€ã«ãç·šéãã ã䜿çšããŠã³ã³ãã docker run -vã«ãã¡ã€ã«ããã«ãããŸãã ããã«ã¯ãVMã®ã¯ããã¯ããã¹ãã®ã¯ããã¯ãšåæãããŠããå¿
èŠããããããããªã make ãšã倿ŽããããœãŒã¹ãã¡ã€ã«ãæ£ããåæ§ç¯ã§ããŸããã
ãªãã·ã§ã³1:ã«ãŒãã«ã®ããã£ãã¯ãã調æŽãã
èãããšããã§ã¯ ã¢ãžãã£ã¡ãã¯ã¹(8) ã«ãŒãã«ã® "tick"ã調æŽããããšãå¯èœã§ãã
åã«ãŒãã«ãã£ãã¯å²ã蟌ã¿ã®ã·ã¹ãã æå»ã«è¿œå ãããã€ã¯ãç§æ°ãèšå®ããŸãã USER_HZ=100ã®ã«ãŒãã«ã®å Žåãæ¯ç§100ãã£ãã¯ããã¯ããªã®ã§ã ãŽã¡ã« 10000ã«è¿ãã¯ãã§ãã å¢å ãŽã¡ã« 1 ã ããã·ã¹ãã ã¯ããã¯ãçŽ 100 ppmé«éåããŸãã
äœç³»çãªããªãããããã£ãŠãã(ãŸãã¯æž¬å®ã§ãã)å Žåã¯ãããã£ãã¯ãã䜿çšããŠç²ã調æŽãè¡ããbusybox NTPã«æ®ãã®ããªããã管çãããããšãã§ããŸãã
ãªãã·ã§ã³2:宿çã«æèšãåæ¹ã«ãã³ãããŸã äžæ¥ã®èšå®æå» (2)
VMã®ã¯ããã¯ãåžžã«å®éã®ç©çã¯ããã¯ãããé ããšæ³å®ã(ä»®æ³åãããŠãããvCPUã宿çã«ã¹ã±ãžã¥ãŒã«è§£é€ãããŠãããã)ãæ»ããããæ°ã«ããªãå Žåã¯ãåŒã³åºãNTPã¯ã©ã€ã¢ã³ãã䜿çšã§ããŸãã äžæ¥ã®èšå®æå» (2) 宿çã«ã¯ããã¯ãããã«ååæããŸãã
éžæ
ãªãã·ã§ã³1ãæè¯ã®çµæãããããå¯èœæ§ããããŸãããç§ãã¡ã¯ãããã·ã³ãã«ã«ä¿ã¡ããªãã·ã§ã³2ãæ¡çšããããšã«ããŸããã äžæ¥ã®èšå®æå» (2) ã«ãŒãã«ãã£ãã¯ã枬å®ããŠèª¿æŽããããšããã®ã§ã¯ãªãã VM ã¯ããã¯ã¯åžžã«ãã¹ã ã¯ããã¯ãããäœéã§åäœãããšä»®å®ããŸãããå®è¡é床ãé ãéãæ£ç¢ºã«æž¬å®ããããæéã®çµéãç°ãªãããŒããŠã§ã¢èšå®éã§é床äœäžãäžå®ã§ãããšä»®å®ãããããå¿ èŠã¯ãããŸããã 解決çã¯éåžžã«ã·ã³ãã«ã§çè§£ããããã§ãã VMã¯ããã¯ã¯ãã¹ããšå¯æ¥ã«åæããŠããå¿ èŠããããå調ã§ããå¿ èŠããããŸãããããŸãã¹ã ãŒãºã§ã¯ãããŸããã
ãšããNTPã¯ã©ã€ã¢ã³ãã䜿çšããŸã SNTPC Alpine Linuxã®åµèšè ã§ããNatanael Copaã«ãã£ãŠæžãããŸãã(Docker Desktopã§Alpineãåºã䜿çšããŠããããšãèãããšããŸã£ããã®å¶ç¶ã§ã)ã SNTPCã¯ãnç§ããšã«settimeofdayãåŒã³åºãããã«æ§æã§ããæ¬¡ã®çµæãåŸãããŸãã

ã°ã©ããããããããã«ã30 ç§ããšã« VM ã¯ããã¯ã 20 ããªç§é ãããã®åŸåæ¹ã«ãã³ããããŸãã VM ã¯ããã¯ã¯åžžã«ãã¹ããããäœéã§å®è¡ãããŠãããããVM ã¯ããã¯ã¯åžžã«åæ¹ã«ãžã£ã³ãããŸãããåŸæ¹ã«ãžã£ã³ãããããšã¯ãããŸããã
ã»ãã®äžç¬ã30ç§ããšã«hwclock -sãå®è¡ããããšã¯ã§ããŸããã§ããã?
UDP ã§éä¿¡ããåçŽãª NTP ã¯ã©ã€ã¢ã³ããšãµãŒãã 30 ç§ããšã«å®è¡ãã代ããã«ã hwclock -s ãå®è¡ããŠããŒããŠã§ã¢ RTC ãšåæã 30 ç§ããšã«å®è¡ããããšãã§ããŸãã å ±æã¡ã¢ãªã«å¹ççã«ãã¥ãŒã€ã³ã°ãããUDPãã©ãã£ãã¯ãšã¯ç°ãªããã¡ã¢ãªã¯ãã€ããŒãã€ã¶ã«ãã©ãããèªã¿åããvCPUããããã¯ãããããRTCã®èªã¿åãã¯éå¹ççã§ããããããã³ãŒãã¯åçŽã§ã30ç§ã«äžåºŠã®é«äŸ¡ãªæäœã¯ããã»ã©æªããããŸããã ããã¯å®éã«æèšãã©ãã ãããŸãåæãããã§ãããã?

æ®å¿µãªãããHyperKit Linux VMã§hwclock -sãå®è¡ããŠããã¯ããã¯ã®åæã¯çŽ1ç§ä»¥å ã«ããç¶æã§ãããã³ãŒããç·šéããŠããã«åã³ã³ãã€ã«ãããšãã«éåžžã«é¡èã«ãªããŸãã ãããã£ãŠãNTPã«åºå·ããŸãã
æçµèšèš
æçµçãªãã¶ã€ã³ã¯æ¬¡ã®ããã«ãªããŸãã

VM ã§ã¯ãsntpc ããã»ã¹ã¯ããŒã 123 (NTP ããŒã) ã§ UDP ãããã¹ãäžã® vpnkit ããã»ã¹ã«ãã£ãŠç®¡çãããã²ãŒããŠã§ã€ã§å®è¡ãããŠããä»®æ³ NTP ãµãŒããŒã«éä¿¡ããŸãã NTP ãã©ãã£ãã¯ã¯ãããŒã«ã«ãã¹ãã§å®è¡ãããŠããã«ã¹ã¿ã SNTP ãµãŒãã«è»¢éãããããŒã«ã«ãã¹ã㯠gettimeofday ãå®è¡ããŠå¿çããŸãã sntpc ããã»ã¹ã¯å¿çãåä¿¡ããã©ãŠã³ãããªããæéã®æšå®å€ãæžç®ããŠçŸå°æéãèšç®ããsettimeofday ãåŒã³åºããŠã¯ããã¯ãæ£ããå€ã«ãã³ãããŸãã
ãŸãšã
- ã³ã³ãã¥ãŒã¿ã®èšæã¯é£ããã§ã(ç¹ã«ä»®æ³ã³ã³ãã¥ãŒã¿ã§ã¯ããã§ã)
- macOS Hypervisor.frameworkã«ã¯äœç³»çãªããªããã®æ·±å»ãªåå ããããŸãã ãã€ããŒãããããªããã¯ã¹ã·ã¹ãã ã
- æéããªãããæå°éã«æããããšã¯ãmakeãªã©ã®ãã«ãããŒã«ã§ãã¡ã€ã«ã®ã¿ã€ã ã¹ã¿ã³ãã䜿çšãããéçºè ã®ãŠãŒã¹ã±ãŒã¹ã«ãšã£ãŠéèŠã§ã
- éçºè ã®ãŠãŒã¹ã±ãŒã¹ã§ã¯ãæèšãçªç¶åé²ããŠãããŸããŸãã
- æšæºãããã³ã« (SNTP) ãšæ¢åã®ã¯ã©ã€ã¢ã³ã (sntpc) ã䜿çšããã·ã³ãã«ãªèšèšã«èœã¡çããŸãã
- æ°ãããã¶ã€ã³ã¯éåžžã«ã·ã³ãã«ã§å ç¢ã§ãªããã°ãªããŸãã:ã¯ããã¯ããªããã¬ãŒããå°æ¥éããªã£ããšããŠã(Hypervisor.frameworkãHyperKitã®ãã°ã®ãã)ãã¯ããã¯ã¯åæãä¿ã¡ãŸãã
- æ°ããã³ãŒãã¯ãå®å®ãããã£ãã«ãšãšããžãã£ãã«ã®äž¡æ¹ã§åºè·ãããŠããŸã(18.05çŸåš)