2015/03/12

アップグレードしたOSはカスタマイズできない

所用があり WindowsServer 2012 R2 をいくつかテンプレートから展開していたのだが、カスタマイズ仕様で指定した設定がなされていないことに気がついた。

該当のマシンにログオンし、 sysprep のログを見たところ、以下のメッセージが表示されていた。なお、sysprep のログについてはこちらのKBに記載がある。
[0x0f0036] SYSPRP spopk.dll:: Sysprep will not run on an upgraded OS. You can only run Sysprep on a custom (clean) install version of Windows.
...ああ、なるほど。このテンプレート、そもそもは WindowsServer 2012 で、R2 を後から適用したため「アップグレード」となってしまったわけだ。2012 を展開する用がなかったのでそのことをすっかり失念していた。

対処としては二つある。一つは、素直にOSを新規インストールし直すことだ。
今回はこちらを採用した。理由は簡単で、Windows.old が残っており、削除がやっかいで、そのうえ肥大した VMDK の領域回収を考えると、時間はかかるがほったらかしておけば終わる入れ直しの方が楽だったからだ。

もう一つは、アップグレードであるというフラグをつぶしてしまうことだ。
詳細はこちらのページなどを参照してほしい。

レジストリを操作するだけなので時間は短くて済む。
しかし、そもそもなぜアップグレードしたOSだと sysprep を拒否するようになってるかがわからないので、後々で面倒を抱えたくないというのもあり、この手を取らなかった。

2015/03/09

Horizon View Connection Server で「サービスが正常に機能していません」が表示される。

Horizon View の Connection Server を複数立てたとき、ダッシュボードの接続サーバに「サービスが正常に機能していません」というメッセージが表示されることがある。
なお、英文だと「The service is not working properly. 」の模様。

「サービスが正常に機能していません」のエラーメッセージ
そう言われましても...、って気分になる

KBを探してみても vCenterServer にこのメッセージが出る場合の記載ぐらいで、ログもそれらしいエラーがなく困っていたが、ようやく原因を特定できた。

二つの ConnectionServer で時刻同期がうまくいっておらず、時間が1分程度ないしそれ以上ずれていると、このメッセージが表示される。

一方が ServerCore で構成していたのだが、どっかのタイミングで Windows Time が起動されてなかったらしく、時々ずれがこの時間を超えて、なぜか赤くなる、を繰り返していたのだ。

わかってしまえば対処は簡単で、時刻同期がちゃんと実行されるようにするだけだ。

今回実施したのは、以下の通り
w32tm register
net start "Windows Time"
w32tm /config /update /syncfromflags:DOMHIER
w32tm /resync /rediscover
最初の行でサービスとして登録、二行目で起動する。
起動しないとそれ以降のコマンドが打てないので、とりあえず動かしておくのだ。

3行目でドメインコントローラから時刻をとるように設定を強制、4行目で同期を強制している。( どうも /redisover をつけないと同期先を古い設定のまま見に行くことがあるので注意。)

1,2 分程度のずれなのでこれで済んだ。
大きくずれている場合の同期方法については適当に調べてほしい。

なお、同期状況の確認は
w32tm /monitor
を実行するのが手っ取り早く、時間は
echo %time%
としたほうが、time コマンドより楽だ。
time コマンドだと、そのまま実行すると時刻の設定をしようとし、/T をつけると秒以下を表示してくれないため。

いろいろ探しても該当事例を見つけられなかったので、念のために記録しておく。