ホストOSの時刻をいじってテストしたいことがある。例えばECサイト開発で注文をいくつか作成しておいて、システム時刻を翌月1日に変更してから月末集計を実行するといった場合。だけど、VagrantのゲストOSでスーパーバイザー権限でdateコマンドを使って時刻を変更するも、瞬時に現在の時刻に戻ってしまう。調べてみると、VagrantではゲストOSとホストOSで時刻を同期する機能が動作しているらしい。
この同期機能を解除しなければテストができない。ネットを検索すると同じことを試みた事例が多く見つかるが、紹介されている手順に倣っても自分の環境ではうまくいかない(ホストOSとの時刻同期が無効にならない)。
いろんな記事を頼りに試行錯誤した結果、Windowsマシンで成功する手順を導けたので覚書き。
WindowsのCommand Promptから
1 2 3 |
> cd C:\Program Files\Oracle\VirtualBox > VBoxManage setextradata homestead "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1 > VBoxManage setextradata homestead "VBoxInternal/TM/TSCTiedToExecution" 1 |
Bashから
1 2 |
$ vagrant up $ vagrant ssh |
1 2 3 |
$ sudo service vboxadd-service stop $ sudo /usr/sbin/VBoxService --disable-timesync $ sudo service vboxadd-service start |
参考サイト
VirtualBox – VirtualBoxでの設定変更によるLaravel homesteadでの時刻変更|teratail
https://teratail.com/questions/170918
virtual machine – Is it possible to get a Virtualbox VM always start from same time, if so how? – Super User
https://superuser.com/questions/742924/is-it-possible-to-get-a-virtualbox-vm-always-start-from-same-time-if-so-how
VirtualBox のホストとゲストの時刻同期をする・しない | digitalbox
https://digitalbox.jp/virtualbox-guest-sync-time-host/