3

vagrant/virtualbox vm でホスト時刻の同期を選択的に無効にする必要があります。次のように、ホスト マシンで問題なく実行できます。

$ VBoxManage setextradata <name> \
> "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" "1"

問題は、ゲスト vm でいくつかの作業が行われている間だけ、同期を無効にする必要があることです。具体的には、単体テスト ジョブはGetHostTimeDisabledプログラムで値を切り替えて、テスト ジョブが vm システム時間を効果的に完全に制御できるようにする必要があります。

単体テスト ジョブ内から ssh 経由で VBoxManage コマンドを実行することを検討しましたが、それにはさらに困難が伴います。たとえば、自分のローカル マシンに vagrant ユーザーとしてパスワードなしのログインを設定するなどです。

VM に対して ssh エージェント転送を有効にしましたが、動作することが確認されています。誰かが「より良い」方法を提案していない限り、vagrant ユーザーとして vm (ubuntu linux) からホスト マシン (OSX) に ssh で戻る方法を理解する助けをいただければ幸いです。理想的には、vagrant のすべてのユーザーに対して同じように機能することを望みます。たぶん、転送されたエージェントを何らかの形で使用していますか?

おそらく、ゲストで VBoxService を操作して、時刻同期を一時的に無効にする方法はありますか?

4

2 に答える 2

0

あなたが答えを見つけたようですが、私は別の方法を考えました。

VirtualBox には「共有フォルダー」という概念があります。これは、ゲストへのマウントに使用できるホスト上のフォルダーをセットアップできることを意味し、ホストとゲストの間で同じままであり、ゲストの実行中にデータを共有できることを意味します。自動的にマウントすることもできます。その場合、 としてマウントされ/media/<folder>ます。次に、必要な場所にシンボリックリンクできます。

私の考えではVBoxManage.exe、ホストから共有フォルダーに配置し、ゲストに配置した場所から呼び出し、場合によってはPATHに配置します。それからあなたは電話するでしょう

$ /path/to/VBoxManage setextradata <guest name> \
> "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" "1"

スクリプトなどから。

これを試してみたところうまくいきませんでしたが、ホストとゲストが異なる OS、具体的には Windows と Linux であることが原因だと感じています。電話をかけるdos2unixVBoxManage.exeうまくいくと思いますが、VirtualBoxが壊れる可能性があるため、試すのが怖いです。ただし、それはあなたにとってはうまくいくかもしれません。

于 2014-04-05T21:42:28.197 に答える